class_exists() 使用注意事项,涉及到autoload自动加载问题~~~~~~
[ 2017-02-16 11:13:22 | 作者: admin ]
p.s. 判断类是否已经实例化的函数 class_exists() 有2个参数,必须注意第二个参数$autoload默认为true 。
当你的主程序没有定义 autoload ,而插件定义了之后,主程序下调用就发生了变化,调用函数中的 class_exists必须指定不启用 autoload,否则就会出现问题:它自动去调用插件的autoload来加载类了。
这个函数在手册上的解释是:
This function checks whether or not the given class has been defined.
从字面很容易知道它的用途,就是检测一下要检测的类名是否已经定义,但是真正要注意的位置在它的参数上
bool class_exists ( string $class_name [, bool $autoload = true ] );
是这个第二个可选的参数,它的英文解释是:
Whether or not to call __autoload by default.
翻译过来就是是否默认调用__autoload函数,__autoload()函数大家都知道,就是当实例化一个对象的时候,
如果这个对象没有定义,那么就会自动调用__autoload()函数,由该函数做出提示或者指向可能存在的目录。
第二个参数默认是为真的,也就是说当使用这个函数的时候,在没有找到类的情况下就会自动调用这个__autoload()
我们都知道一般情况下,我们都会在__autoload()函数中,定义许多的路径判断和指向,所以这样以来,无形之中就
增加了很多的I/O开销,所以在这里建议大家在使用的时候,将第二个参数设定为false,thinkphp中的一些代码就
用到了这个函数,并且也将它设成了false,所以今天是不是又长进了一步啊,小high希望做的每一个分享都能帮助
你成长,也希望你们有什么好的注意点提供给小high,让我们共同学习,共同进步~~~
http://www.xiaohigh.com/?p=175[b][/b]
当你的主程序没有定义 autoload ,而插件定义了之后,主程序下调用就发生了变化,调用函数中的 class_exists必须指定不启用 autoload,否则就会出现问题:它自动去调用插件的autoload来加载类了。
这个函数在手册上的解释是:
This function checks whether or not the given class has been defined.
从字面很容易知道它的用途,就是检测一下要检测的类名是否已经定义,但是真正要注意的位置在它的参数上
bool class_exists ( string $class_name [, bool $autoload = true ] );
是这个第二个可选的参数,它的英文解释是:
Whether or not to call __autoload by default.
翻译过来就是是否默认调用__autoload函数,__autoload()函数大家都知道,就是当实例化一个对象的时候,
如果这个对象没有定义,那么就会自动调用__autoload()函数,由该函数做出提示或者指向可能存在的目录。
第二个参数默认是为真的,也就是说当使用这个函数的时候,在没有找到类的情况下就会自动调用这个__autoload()
我们都知道一般情况下,我们都会在__autoload()函数中,定义许多的路径判断和指向,所以这样以来,无形之中就
增加了很多的I/O开销,所以在这里建议大家在使用的时候,将第二个参数设定为false,thinkphp中的一些代码就
用到了这个函数,并且也将它设成了false,所以今天是不是又长进了一步啊,小high希望做的每一个分享都能帮助
你成长,也希望你们有什么好的注意点提供给小high,让我们共同学习,共同进步~~~
http://www.xiaohigh.com/?p=175[b][/b]
[最后修改由 admin, 于 2017-02-16 11:17:55]
评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=2376
这篇日志没有评论。
此日志不可发表评论。