慎用class_exists方法

来源:互联网 发布:怎么删除淘宝评价管理 编辑:程序博客网 时间:2024/05/22 00:09
今天在网上查看class_exists方法(http://php.net/manual/en/function.class-exists.php)的用法的时候,发现class_exists方法的定义如下:
bool class_exists ( string $class_name [, bool $autoload = true ] );

它是有两个参数的,我们平时用这个方法的时候大都只给了第一个参数,第二个参数的默认值是默认为true,而关于第二个参数的解释是:
autoload
Whether or not to call __autoload by default.

所以当我们不设置第二个参数时,会去调用__autoload方法去加载类,
众所周知__autoload方法的机制,它可能会对磁盘进行大量的I/O操作,严重影响效率,所以大家在用这个方法的时候可以用如下两种方法解决:

NO1:把第二个参数设置为false
NO2:

To find out whether a class can be autoloaded, you can use autoload in this way:

<?php//Define autoloaderfunction __autoload($className) {    if (file_exists($className . '.php')) require $className . '.php';    else throw new Exception('Class "' . $className . '" could not be autoloaded');}function canClassBeAutloaded($className) {    try {        class_exists($className);        return true;    }    catch (Exception $e) {        return false;    }}?>

0 0