25

Given a particular class, TheClass, 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.

4 Answers4

33

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

mickmackusa
  • 43,625
  • 12
  • 83
  • 136
Steve Mallory
  • 4,245
  • 1
  • 28
  • 31
31
class TheClass {
    public $Name;
    public $Number;
    function MrFunction() { /* bla bla bla */ }

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


echo $theClassInstance;
prodigitalson
  • 60,050
  • 10
  • 100
  • 114
9

Yes, using the __toString magic method

onteria_
  • 68,181
  • 7
  • 71
  • 64
8

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:

CVM
  • 780
  • 1
  • 6
  • 10