调用构造函数参数闭包函数时未定义的函数



考虑以下类别:

class MyClass {
public function __construct($mailProvider) {
$this->mailProvider = $mailProvider;
echo get_class($mailProvider());
echo get_class($this->mailProvider());
}
}

下面的电话:

$mailProvider = function () {
$mail = new PHPMailer(true);
return $mail;
};
$myClass = new MyClass($mailProvider);

我不明白为什么第二个回显会导致对未定义函数的调用。

有人能搞清楚吗?

因为PHP在查找属性$this->mailProvider之前会先查找方法$this->mailProvider((。您需要通过将属性包装在括号中来取消引用该属性:

echo get_class(($this->mailProvider)());

最新更新