Разбираюсь с магическими методами классов. Немного не понял с __toString...
Вот пример:
class man
{
public function __construct($n, $s, $f)
{
$this->name=$n;
$this->secondname=$s;
$this->family=$f;
}
public function __toString()
{
return "$this->name "."$this->family";
}
private $name;
private $secondname;
private $family;
}
$obj = new employer("Иван","Иванович","Иванов");
echo "Персона: $obj";
Почему выдает "Персона: Object id #1" - т.е. почему-то не происходит перегрузка при обращении к объекту, как к строке.
А если
echo $obj;
- то перегрузка происходит.
Заранее благодарю за помощь!
Спустя 3 минуты, 6 секунд (15.02.2010 - 14:34) ppaull написал(а):
Только при создании объекта надо:
$obj = new man("Иван","Иванович","Иванов");
Спустя 39 минут, 2 секунды (15.02.2010 - 15:13) Michael написал(а):
У меня нормально подстановка происходит. Твой пример взял.
Вот здесь:
кавычки поубирай, т.к. не нужны они.
Вот здесь:
return "$this->name "."$this->family";
кавычки поубирай, т.к. не нужны они.
Спустя 6 минут, 49 секунд (15.02.2010 - 15:20) ppaull написал(а):
спасибо.
На хостинге проверил (PHP Version 5.2.12) - там все ОК.
А локально стоит php 5.1.6 - там не перегружает (выходит в старой версии перегрузка некорректно работает)
На хостинге проверил (PHP Version 5.2.12) - там все ОК.
А локально стоит php 5.1.6 - там не перегружает (выходит в старой версии перегрузка некорректно работает)
Спустя 4 часа, 38 минут, 35 секунд (15.02.2010 - 19:58) kirik написал(а):
Цитата (ppaull @ 15.02.2010 - 07:20) |
выходит в старой версии перегрузка некорректно работает |
Цитата |
It is worth noting that before PHP 5.2.0 the __toString method was only called when it was directly combined with echo() or print().... |
Спустя 9 минут, 50 секунд (15.02.2010 - 20:08) ppaull написал(а):
kirik спасибо - теперь все встало на свои места .... просто все маны не перечитаешь - жизни не хватит - для этого и существуют таки форумы!!!
Спустя 34 минуты, 29 секунд (15.02.2010 - 20:43) kirik написал(а):
ppaull
Все и не нужно
Только по надобности
Все и не нужно
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)