php类异常处理问题

时间:2010-03-10 15:27:14

标签: php class printing exception

我正在做的工作申请有一个开放的书测验,这显然突出了我的PHP知识的缺点。

请注意,我不是直接要求答案,而是要求证明我对如何回答这个问题的误解/缺乏。问题是:

3. Finish the following class to print "Person->name has been zapped" when the 
following is executed on a Person object: print $person;


class Person{
  private $name = '';
  public function __construct($name){
    $this->name = $name;
  }
}

$person = new Person('fred');
print $person; // fred has been zapped

现在,要么有一些方法可以在类中添加异常处理(虽然我会认为'print'会引发异常,或者我只是误解了这个问题。我知道(从快速测试中) )将打印件放入try..catch仍会导致程序失败并出现“可捕获的致命错误”(我的捕获没有触发)。

我应该阅读什么?

大卫

2 个答案:

答案 0 :(得分:4)

嗯,听起来更像是在寻找你对PHP5课程的了解。我建议你看看PHP magic methods,了解如何完成你想要做的事情。

基本上,您正在寻找相关对象的可打印表示。

答案 1 :(得分:3)

当您尝试回显/输出一个对象时,会调用魔术方法__toString() - 如果它为该类定义该对象是其实例。

在这里,您必须修改该类,添加该__toString方法的定义,该方法将返回该名称,并且“已被删除”部分字符串:

class Person{
  private $name = '';
  public function __construct($name){
    $this->name = $name;
  }
  public function __toString() {
    return $this->name . ' has been zapped';
  }
}

$person = new Person('fred');
print $person; // fred has been zapped

你得到了预期的输出:

fred has been zapped