是 $this->__invoke(); PHP 100% 安全有效?
Is $this->__invoke(); 100% safe and valid in PHP?
// in class
public function test () {
$this->__invoke();
}
$inst->test();
这个测试运行没有任何错误。
我的问题:有什么理由不应该这样做吗?是否有任何特殊情况、隐藏的警告,或者它的行为是否像任何常规的 function/method?
这应该行不通,因为您的 class 中没有 __invoke()
方法:
class SomeClass {
public function test()
{
$this->__invoke();
}
}
$inst = new SomeClass();
$inst->test();
如果您实施 __invoke()
,那应该有效:
class SomeClass {
public function __invoke()
{
var_dump('Invoke!');
}
}
$inst = new SomeClass();
$inst();
魔术方法可以直接调用,如您在第二个测试中看到的那样,但我认为这不是一个好主意,因为它们是某种钩子并且它们的代码可能会意外执行。
// in class
public function test () {
$this->__invoke();
}
$inst->test();
这个测试运行没有任何错误。
我的问题:有什么理由不应该这样做吗?是否有任何特殊情况、隐藏的警告,或者它的行为是否像任何常规的 function/method?
这应该行不通,因为您的 class 中没有 __invoke()
方法:
class SomeClass {
public function test()
{
$this->__invoke();
}
}
$inst = new SomeClass();
$inst->test();
如果您实施 __invoke()
,那应该有效:
class SomeClass {
public function __invoke()
{
var_dump('Invoke!');
}
}
$inst = new SomeClass();
$inst();
魔术方法可以直接调用,如您在第二个测试中看到的那样,但我认为这不是一个好主意,因为它们是某种钩子并且它们的代码可能会意外执行。