林建設一個MVC的PHP框架,並因與自動加載我的班,我認爲可能是記在我的文件結構的一些問題。文件目錄和自動加載的問題PHP MVC
首先,這裏是我的文件結構:
林測試在XAMPP的LocalServer環境中開發所以這就是爲什麼我的私人和公共文件夾。最終在活服務器上,私人文件夾將位於服務器根目錄中,公用文件夾將位於public_html目錄中。
難道我的文件結構看有關的權利?在私人的前端文件夾中,我的所有不同的模塊都在directorys中,其中有一個控制器,模型,視圖文件,它們爲每個模塊保存必要的文件。
我到目前爲止創建此自動加載機:
//Require config and router classes
require_once('router.class.php');
require_once('config.php');
spl_autoload_register(null, false);
spl_autoload_extensions('.class.php');
function autoloader_core($class){
$filename = strtolower($class) . '.class.php';
if(!file_exists($filename)){
echo $filename . " not found";
}
include $filename;
}
function autoloader_app($class){
$filename = strtolower($class) . '.class.php';
$file = 'C:\xampp\htdocs\simplebids\simplebidsprivate\app/' . $filename;
if(!file_exists($file)){
echo $file . " not found";
}
include $file;
}
spl_autoload_register('autoloader_core');
spl_autoload_register('autoloader_app');
$router = new test;
$router->say_hello();
此作品完美的lib->核心目錄中的類,但是當我嘗試實例化一個新的測試類我得到的所有有關類型的錯誤沒有在lib-> core文件中找到test.class.php文件,這顯然不是,但我認爲autoloader函數將在我自己定義的「autoloader_app」函數中尋找路徑。
有趣的是,即使我得到所有這些錯誤,我在測試功能say_hello呼應的字符串()並獲取錯誤後迴盪。
因此,在短期的文件心不是根據錯誤被發現,但它是因爲我可以看到我做的類功能打印迴音。
任何想法爲什麼?
而且我的前端模塊的文件結構,這是怎麼回事,使自動加載非常困難,因爲生病需要爲每個模塊不同的自動加載功能,然後每控制器/模型/視圖在它的文件嗎?我需要爲每個模塊提供獨立的自動加載功能嗎?如果不是,我會怎麼做呢?
感謝 湯姆
你會在哪裏配置你的配置文件。另外,請嘗試添加插件功能。如果您期待公開使用公共框架 – Guns
,那麼在稍後的階段就需要這樣做,但並不真正回答您的具體問題,但是當涉及到自動加載時,您應該看看PSR-0(也許還有PSR-4)。如果你這樣做,那麼你將能夠混合並匹配符合PSR的其他框架詞(和其他方式)。 http://www.php-fig.org/psr/psr-0/ – Sarel
你應該開始使用命名空間(PSR-0會給你從哪裏開始的方向)..並停止在文件中使用'.class'名字,因爲並非所有你加載的東西都是類。 –