[英]Php autoload project
我有一個像這樣的項目:
現在,我想自動加載文件夾類和子文件夾中的所有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;
}
}
你應該試試這個
<?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';
}
}
}
在使用spl_autoload_register()
注冊your_autoloader
,每次您訪問以下類時,PHP解釋器都會調用它:
尚未加載require_once()
或include_once()
不屬於PHP內部
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.