脚本宝典收集整理的这篇文章主要介绍了php – 如何检查SPL堆栈中是否已存在某个函数?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
例如:
if (spl_autoload_function(array($this,'_loadClass')) // Then do nothing else // Then run spl_autoload_register(array($this,'_loadClass));
你不应该.没有必要做if语句; spl_autoload_register将忽略具有相同参数的第二个调用:
<?PHP $foo = function( $class ) { return false; }; spl_autoload_register( $foo ); var_dump( spl_autoload_functions( ) ); spl_autoload_register( $foo ); VAR_dump( spl_autoload_functions( ) );
输出显示虽然我们两次调用spl_autoload_register,但仍然只有一个自动加载器;
array(1) { [0]=> object(Closure)#1 (1) { ["parameter"]=> array(1) { ["$class"]=> string(10) "<required>" } } } array(1) { [0]=> object(Closure)#1 (1) { ["parameter"]=> array(1) { ["$class"]=> string(10) "<required>" } } }
如果你想确保一个类没有自己注册两次,你当然可以在某种静态成员中设置它;
<?PHP class Foo { PRotected static $registered = false; public function register( ) { if( self::$registered !== false ) { return; } echo "spl_autoload_register( \$this,'_loadClass' );\n"; self::$registered = true; } } $foo = new Foo( ); $foo->register( ); $bar = new Foo( ); $bar->register( );
输出显然是一行:
spl_autoload_register( $this,'_loadClass' );
那就是说,你为什么要编写自己的自动加载器?已经有很多,很难相信它们都不符合你的要求.
以上是脚本宝典为你收集整理的php – 如何检查SPL堆栈中是否已存在某个函数?全部内容,希望文章能够帮你解决php – 如何检查SPL堆栈中是否已存在某个函数?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。