我正在编写一个应用程序,其中所有类都使用命名空间,并使用 spl_autoload_register() 动态加载所有类。
现在我想使用一个非命名空间库(WideImage)。由于 WideImage 不使用命名空间,因此 spl_autoload_register() 不起作用。所以手动包含脚本:
require( 'Library/WideImage/WideImage.php');
$w = new WideImage();
但它仍然尝试自动加载;并给出一个致命的类未找到错误。
如何覆盖此自动加载功能?
按要求:
spl_autoload_register(function( $class ) {
$path = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . CMS_PATH . DIRECTORY_SEPARATOR;
$classFile = str_replace( '\\', DIRECTORY_SEPARATOR, $class );
$classPI = pathinfo( $classFile );
$classPath = $path . $classPI[ 'dirname' ] ;
$file = $classPath . DIRECTORY_SEPARATOR . $classPI[ 'filename' ] . '.class.php';
if (file_exists($file)) {
require_once( $file );
}
});
编辑:解决方案:
改变
if (file_exists($file)
to
if (file_exists($file) && !class_exists($class)) {