回显PHP对象会发生什么?

时间:2017-03-14 13:08:01

标签: php oop

如果查看此库的用法, https://github.com/typelevel/cats/blob/882a67387f3c538237b0afbf9f0389ad5f34a648/core/src/main/scala/cats/Foldable.scala#L469-L498

你有,

$form = new Gregwar\Formidable\Form('forms/example.html');

$form->handle(function() {
    echo "Form OK!";
}, function($errors) {
    echo "Errors: <br/>";
    foreach ($errors as $error) {
        echo "$error<br />";
    }
});

echo $form;

我的问题是,这是怎么做到的? 你如何回应$ form对象..

例如,如果我有

class Something
{
   public $somevariable = 'London';

   public function __construct()
   {
     $this->foo();
   }

   public function foo(){
        //Do Something

   }
}

$myObj = new Something();
echo $myObj;

上面的代码给了我一个错误。 我可以做些什么来回显$ myObj而不会出现错误,这样我就能在屏幕上显示一些内容?

我们都知道我们可以做点什么,

echo $myObj->somevariable;

没有错误..我该怎么办

echo $myObj;

没有在Formidable库中完成错误。

2 个答案:

答案 0 :(得分:2)

班上的法术方法__toString()。当您的对象被视为字符串(即与echo一起使用时)时,这允许您的类在该方法中执行代码。该方法必须返回一个字符串,否则会引发错误。

您将在链接的库中注意到,他们在表单类中有一个。

/**
 * Convert to HTML
 */
public function __toString()
{
    return $this->getHtml();
}

答案 1 :(得分:0)

您可以为您的班级添加__tostring()魔法功能

class Something
{
  public $somevariable = 'London';

  public function __construct()
  {
    $this->foo();
  }

  public function foo(){
    //Do Something

  }
  public function __tostring(){
    return $this->somevariable;
  }
}

致电echo $myObj将打印伦敦