脚本宝典收集整理的这篇文章主要介绍了php – class_exists正在调用spl_autoload_register,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
<?PHP function autoLoadClass($name) { echo 'spl_autoload_register: ',$name,'<br>'; } spl_autoload_register('autoLoadClass'); class_exists('Foo'); class_exists('Bar'); class_exists('Foo\\Bar');
输出:
是对的吗?有没有办法让“spl_autoload”忽略调用“class_exists”?
所以像这样的电话:
class_exists('Foo',false);
会忽略自动加载.
[Demo]
也可以通过(ab)使用debug_backtrace使自动加载函数忽略来自class_exists的调用,但是该方法很丑陋并且非常慢,但为了完整起见,这里是如何做到的:
function autoLoadClass($name) { foreach(debug_backtrace() as $call) { if(!array_key_exists('tyPE',$call) && $call['function'] == 'class_exists') { return; } } echo 'spl_autoload_register: ','<br>'; }
(注意:这似乎不适用于HHVM)
如果其中一个调用函数被称为class_exists,那么它基本上会中止函数,并且$call [‘type’]不能存在以确保过滤掉像SomeClass :: class_exists和$someObject-> class_exists这样的调用.
[Demo]
以上是脚本宝典为你收集整理的php – class_exists正在调用spl_autoload_register全部内容,希望文章能够帮你解决php – class_exists正在调用spl_autoload_register所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。