php之class_exists慎用
时间:2010-11-22 来源:xiaokaizi
今天在网上查看class_exists方法(http://php.net/manual/en/function.class-exists.php)的用法的时候,发现class_exists方法的定义如下:
bool class_exists ( string $class_name [, bool $autoload = true ] );
它是有两个参数的,我们平时用这个方法的时候大都只给了第一个参数,第二个参数的默认值是默认为true,而关于第二个参数的解释是:
autoload,是否默认启动 __autoload函数。
所以当我们不设置第二个参数时,会去调用__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 autoloader
function __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;
}
}
?>