[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Основы ООП
mmsgold
И так дорогие друзья, немного предыстории я работаю в охране и увлекаюсь PHP, мой друг работает в другом городе PHP программистом, где то час как уже с ним спорим про наследование классов в общем суть спора сводится вот к этому короткому коду, который он мне прислал в контакте


class A{function A(){}}
class B extends A{}
class C extends A{}


он утверждает что данный принцип работать не будет..
+ к тому же в данном примере класс А и метод А названы одинаковы, насколько я помню в 4 php такие методы это конструктор,,,,

так же он ссылается на посты данного форума...
http://forum.php.su/topic.php?forum=71&topic=9073%D1%87
хотя там тоже самое примерно, единственное там говорится что нельзя наследовать два класса в один....я так понял сразу, а последовательно можно расширить...
прошу разъяснить для человека работающего именно программистом PHP, так как мне охраннику он не верит) PS/// он будет читать пост
Oyeme
Код рабочий и все будет работать.
В данном случаи сработает конструктор.

Sub-class всегда автоматически наследует конструктор


Если Вы говорите про множественное наследования,то php их не поддерживает и обычно для хаков используют примеси.
mmsgold
Oyeme, спасибо за ответ, про Sub-class слышу впервые,,, про примеси тоже пока не читал,,,
Oyeme
Цитата (mmsgold @ 24.02.2014 - 13:30)
Oyeme, спасибо за ответ, про Sub-class слышу впервые,,, про примеси тоже пока не читал,,,

Sub-class - это потомок
Потомок наследует методы у родителя.

Примеси - похожи на "хаки",для того чтобы хоть как-то наследовать что-то от другого класса когда класс уже наследует у другого класса
mmsgold
друзья) спор продолжается, мой друг прислал мне два скриншота, и вместе со своей командой (на работе) которая занет Yii (ну он так говорит) смееются над этой темой, типо Oyeme тоже не прав, и ничего не знает, скриншоты прилагаю, ошибку яувидел сразу, но так как решил что он мне не поверит, и ради хохмы про супер сотрудников решил разместить ссылки здесь

http://mmsgold.ru/holivar/1.jpg

http://mmsgold.ru/holivar/2.jpg

собственно он в коде пытается вызвать свойство наследованного класса, а нужно вызвать метод , тоесть, просто вместо $test->a, написать $test->a();

хорошо бы если мои слова подтвердил пользователь со статусом ЭКСПЕРТ, а то ведь не поверит) даже если заработает) а что делать его прогерам Yii вообще не знаю)
mmsgold
Цитата
Sub-class - это потомок
Потомок наследует методы у родителя.


public function __construct()
{
parent::Controller();
}

разве конструктор не так наследуется?, могу ошибаться....
zelenuy
mmsgold
Как же он работает php программистом если не знает как работает ООП? rolleyes.gif
sergeiss
Цитата (mmsgold @ 24.02.2014 - 17:53)
хорошо бы если мои слова подтвердил пользователь со статусом ЭКСПЕРТ, а то ведь не поверит) даже если заработает)

Если всё написанное тобой правда, то он все равно никому не поверит smile.gif Хотя я что-то сомневаюсь, что реальный программист ПХП может вызывать метод как свойство и еще что-то при этом доказывать.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
glock18
Цитата (mmsgold @ 24.02.2014 - 13:53)
друзья) спор продолжается, мой друг прислал мне два скриншота, и вместе со своей командой (на работе) которая занет Yii (ну он так говорит) смееются над этой темой, типо Oyeme тоже не прав, и ничего не знает, скриншоты прилагаю, ошибку яувидел сразу, но так как решил что он мне не поверит, и ради хохмы про супер сотрудников решил разместить ссылки здесь

http://mmsgold.ru/holivar/1.jpg

http://mmsgold.ru/holivar/2.jpg

собственно он в коде пытается вызвать свойство наследованного класса, а нужно вызвать метод , тоесть, просто вместо $test->a, написать $test->a();


Надеюсь, у вашего друга еще есть время в жизни, чтобы сменить профессию. Ну или хотя бы подучиться его основной профессии, которую он знает, как выясняется, хуже чем его друг, работающий охранником. Надеюсь, что у него хотя бы образование не программистское? А то ведь иначе совсем стыдоба была бы.
zelenuy
<?
class
A{
function A(){
echo 'Я класс А<br>';
}
}


class C extends A{
function c(){
parent::A();
}
}


$c = new C; //Выведит "Я класс А"
?>
Игорь_Vasinsky
http://mmsgold.ru/holivar/2.jpg

вуахаха.

метод названный одинаковым именем класс - является его конструктором.

конструктор срабатывает при создании экземпляра класса.

а в коде по ссылке попытка обращения к свойству класса - которого не существует.

если он хочет обратится к конструктору родительского класса - то достаточно создать экземпляр потомка в конструкторе которого наследован конструктор родителя. (а конструктор родителя наследуется автоматом)

 class A{
public function a(){
echo 'name:'.__CLASS__;
}
}


class B extends A{

}


class C extends A{

}


$obj = new B();
var_dump($obj);

$obj = new C();
var_dump($obj);



В Yii им рано ещё. с мат частью php ООП не мешало бы.

сейчаc это так представляют:

 class A{
public function __construct(){
echo 'name:'.__CLASS__;
}
}


class B extends A{

}


class C extends A{

}


$obj = new B();
var_dump($obj);

$obj = new C();
var_dump($obj);


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
zelenuy
cool.gif Че нормальные такие тру программеры, они просто пхп пропустили и сразу начали с изучения фреймворка
AllesKlar
Да ТС просто над вами стебется. smile.gif

Либо вариант 2: "А какие у вашей знакомой ноги?" "... нормальные ноги, обычные" (С) Служебный роман.

_____________
[продано копирайтерам]
linker
Ну при существующем коде вызывать свойство как метод никак, но, если в класс A дописать:
public function __get($name) { return $this->{'_' . $name}(); }
protected function _c() { echo 'Гыгыгы'; }

то почему бы и не
$c = new C();
echo $c->c;


P.S. Лично мне в целом не понятна суть вашего спора.

_____________
Gear Framework
Gear Framework на Github
dr.nomore
Цитата (mmsgold @ 24.02.2014 - 16:58)
он утверждает что данный принцип работать не будет..

У сектантов не будет. У них вообще все через жопу.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.