php toString не вызывается при использовании конкатенации

ссылаясь на этот пост метод php 5.1.6 magic __toString

class YourClass 
{
    public function __toString()
    {
        return $this->name;
    }
}

PHP ‹ 5.2.0

$yourObject = new YourClass();
echo $yourObject; // this works
printf("%s", $yourObject); // this does not call __toString()
echo 'Hello ' . $yourObject; // this does not call __toString()
echo 'Hello ' . $yourObject->__toString(); // this works
echo (string)$yourObject; // this does not call __toString()

какие другие методы я должен переопределить, чтобы объект правильно отображался в контексте конкатенации строк/и т. д.

в настоящее время я получаю что-то вроде

echo 'Hello ' . $yourObject;

выдает «Hello Object ID 55»;

у кого-нибудь есть решение в контексте:

  • клиент не хочет обновлять свою версию php
  • не разбрызгивая __toString повсюду

?


person lwj    schedule 01.08.2011    source источник
comment
PHP ‹ 5.3 официально больше не поддерживается. Вам предлагается перейти на более новую версию.   -  person Gordon    schedule 01.08.2011
comment
@Gordon хотел бы я проголосовать за ваш комментарий еще пару миллионов раз;)   -  person Phil    schedule 01.08.2011
comment
Почему это получило отрицательный голос? это хороший вопрос +1   -  person Ibu    schedule 01.08.2011
comment
@Ibu Это не очень хороший вопрос, когда на него легко ответить RTFM.   -  person Gordon    schedule 01.08.2011


Ответы (1)