How to echo a custom object in PHP?

2019-02-06 04:54发布

问题:

Given a particular class with an instance foo, is there any way to have PHP echo foo; in a customized manner?

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

$foo = new TheClass();

echo $foo;

As I understand, you cannot overload echo and I realize I could easily have $foo->MrFunction() do the work. However I am wondering if there is a way to code in which

echo $foo prints out $foo->Name and $foo->Number.

We're using PHP Version 5.2.6 but upgrading is not an issue.

回答1:

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

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


echo $theClassInstance;


回答2:

I think you are looking for print_r($foo), or var_dump($foo).



回答3:

Yes, using the __toString magic method



回答4:

What you need is the __toString() magic method. The example in the docs should show what you need.

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