我正在做的工作申请有一个开放的书测验,这显然突出了我的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仍会导致程序失败并出现“可捕获的致命错误”(我的捕获没有触发)。
我应该阅读什么?
大卫
答案 0 :(得分:4)
基本上,您正在寻找相关对象的可打印表示。
答案 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