PHP 最近为函数添加了第三个参数is_a
。这是一个布尔值,文档说,
如果此参数设置为 FALSE,则不允许将字符串类名作为对象。如果类不存在,这也可以防止调用自动加载器。
我不明白。我知道您可以防止不必要地调用自动加载器,但它不会阻止您将字符串作为类名传递:
> class A {}
> $x = new A();
> echo is_a($x, 'A', false);
1
…事实上,你不能传递任何东西,只能传递一个字符串:
> echo is_a($x, A, false);
PHP Notice: Use of undefined constant B - assumed 'A' in php shell code on line 1
PHP Stack trace:
PHP 1. {main}() php shell code:0
Notice: Use of undefined constant B - assumed 'A' in php shell code on line 1
Call Stack:
18.7644 625048 1. {main}() php shell code:0
1
当您更改第三个参数时,该错误消息不会更改。字符串类名作为对象实际上是什么意思?