这个问题引起了我的好奇心,想要了解如何结合PHP的魔术方法和语言结构。我已经创建了一个演示代码:
<?php
class Testing {
public function scopeList() {
echo "scopeList";
}
public function __call($method, $parameters) {
if($method == "list") {
$this->scopeList();
}
}
public static function __callStatic($method, $parameters) {
$instance = new static;
call_user_func_array([$instance, $method], $parameters);
}
}
//Testing::list();
$testing = new Testing();
$testing->list();
为什么Testing::list()
会抛出语法错误,而$testing->list()
却不会?
由于PHP保留关键字,两者都应该失败?
::list()
被捕获为语法错误而->list()
不是。 - deceze