我有一个这样的项目:

现在,我想自动加载文件夹类和子文件夹中的所有php文件。
我可以这样做:
$dirs = array(
CMS_ROOT.'/classes',
CMS_ROOT.'/classes/layout',
CMS_ROOT.'/classes/layout/pages'
);
foreach( $array as $dir) {
foreach ( glob( $dir."/*.php" ) as $filename ) {
require_once $filename;
}
}但我不喜欢这样。例如。
"layout/pages/a.php“扩展了"layout/pages/b.php”
现在我得到了一个错误,因为a.php是首先加载的。你们是如何加载项目文件的?上课?
已解决:)
这是我现在的代码:
spl_autoload_register('autoloader');
function autoloader($className) {
$className = str_replace('cms_', '', $className);
$className = str_replace('_', '/', $className);
$file = CLASSES.'/'.$className.'.php';
if( file_exists( $file ) ) {
require_once $file;
}
}发布于 2012-12-18 20:21:33
你应该试试这个
<?php
spl_autoload_register('your_autoloader');
function your_autoloader($classname) {
static $dirs = array(
CMS_ROOT.'/classes',
CMS_ROOT.'/classes/layout',
CMS_ROOT.'/classes/layout/pages'
);
foreach ($dirs as $dir) {
if (file_exists($dir . '/'. $classname. '.php')) {
include_once $dir . '/' . $classname . '.php';
}
}
}在向your_autoloader注册spl_autoload_register()之后,每次访问以下类时,php解释器都会调用它:
require_once()或include_once()。https://stackoverflow.com/questions/13940764
复制相似问题