Изучаю конструкторы на php.su. Написал простой конструктор с одним параметром, он не выводится на экран, почему? Код (Text): <?php class A{ private $s; //Объявил свойство в качестве закрытого члена класса function A($otdacha){ $this->s = $otdacha; } } $obj = new A("Санта Клаус"); ?>
Скажите, как вывести правильно? Ведь так тоже же нельзя в конструкторах: PHP: function A($otdacha){ return $this->s = $otdacha; } Так только в методах возможно, но не в конструкторах. Как тогда вывести результат? Почему только так? HTML: <?php class A{ private $s; function A($otdacha){ echo $this->s = $otdacha; } } $obj = new A("Санта Клаус"); ?>
блин, return тоже не выводит результат на экран, он его возвращает!!!! PHP: <?php class A{ private $s; public function A($otdacha) { $this->s = $otdacha; } public function getS() { return $this->s; } } $obj = new A("Санта Клаус"); echo $obj->getS(); ?>
Ensiferum В пятом и то и это работает в целях обратной совместимости. Сначала ищется __construct(), если не найден - метод с названием класса
с 5.3.3 уже нет. на главной пхп.нет написано. пока только для пространств имен, но затем наверное и для всех сделают.
iliavlad Ну и глупость сделают, ибо словосочетание "function __construct" выглядит крайне уебищно... да и кучу существующего кода (в т.ч. и написанного для php5) поломают.
конструкт лучше. формальнее. использовать заранее определенные методы для заранее определенных вещей - определенно лучше.
В С++ нет никаких __construct, а сам конструктор объявляется по имени класса (деструктор в свою очередь предваряет имя класса тильдой). Проблема у РНР совершенно в другом - у него заёбы относительно имени метода в классе и имени другого класса.