Php 对象中的自动函数';谁的目标?
以这一类为例:Php 对象中的自动函数';谁的目标?,php,php-5.3,Php,Php 5.3,以这一类为例: class Test { public $obj; function __construct ($obj) { $this->obj = $obj; } $obj有自己的公共功能。我通过我的代码将其称为$t=newtest($obj)$t->obj->do() 我希望允许$obj为空,而不会触发错误。如果没有显式设置函数,是否可以使用PHP的神奇函数执行一些技巧来始终返回false?另外,是否有PHP
class Test {
public $obj;
function __construct ($obj) {
$this->obj = $obj;
}
$obj有自己的公共功能。我通过我的代码将其称为$t=newtest($obj)$t->obj->do()代码>
我希望允许$obj为空,而不会触发错误。如果没有显式设置函数,是否可以使用PHP的神奇函数执行一些技巧来始终返回false?另外,是否有PHP<5.3的解决方案?我现在无法测试,但这可以工作:
class default {
public function __call($name, $arguments) {
return false;
}
}
class Test {
public $obj;
public function __construct($obj = NULL) {
if($obj === NULL) $this->obj = new default;
else $this->obj = $obj
}
}
这个对象是什么类的,或者它可以实现什么接口?类型暗示在这里可能很有用。在我的例子中,它是PEAR的PHP_调试类,但Adam的解决方案是通用的,工作良好!可能需要选择一个不同的名称,default
是一个PHP关键字。当然,这只是一个示例,使用一些名称空间(如Test\u default)将是一个好主意,您可以尝试向测试类添加\u call(),并在默认情况下在$obj中创建它的实例,但这对于大型类来说会有问题,您将无法使用\u call()为其他目的