Как отобразить пользовательский объект в PHP? - PullRequest
15 голосов
/ 16 мая 2011

Для конкретного класса с экземпляром foo , есть ли способ настроить PHP echo foo; по своему усмотрению?

class TheClass {
    public $Name;
    public $Number;
    function MrFunction() { /* bla bla bla */ }
}

$foo = new TheClass();

echo $foo;

Как я понимаю, вы не можете перегрузить1007 * и я понимаю, что легко мог бы $foo->MrFunction() сделать работу.Однако мне интересно, есть ли способ кодирования, в котором

echo $foo распечатывает $foo->Name и $foo->Number.

Мы используем PHP версии 5.2.6 но обновление не проблема.

Ответы [ 4 ]

28 голосов
/ 16 мая 2011
class TheClass {
    public $Name;
    public $Number;
    function MrFunction() { /* bla bla bla */ }

   public function __toString()
   {
     return $this->Name . ' '. $this->Number;
   }
}


echo $theClassInstance;
16 голосов
/ 16 мая 2011

Я думаю, вы ищете print_r($foo) или var_dump($foo).

9 голосов
/ 16 мая 2011

Да, используя магический метод __ toString

8 голосов
/ 16 мая 2011

Вам нужен магический метод __toString(). Пример в документации должен показать, что вам нужно.

http://www.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.tostring:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...