你應該把它放在你的引導文件中。
這是你如何能做到這一點:
- 隊每個HTTP請求到前端控制器的index.php,app.php還是怎麼過,你怎麼稱呼它。
- Front Controller可以定義框架中使用的一些常量,然後包含您的Bootstrap.php文件。 Bootstrap將啓動您的應用程序。
- 現在,我在Bootstrap中做的第一件事就是註冊自動加載。通過這種方式,我可以輕鬆獲得\ System \ Router \ Router類或\ System \ Router \ Dispatcher類,從而獲得重點。
還有一件事,您甚至可以使用PSR0類加載程序註冊您的應用程序Models文件夾。 因此,可以說,你的模型文件夾是這樣的:
application/Models/
- Entities
- Services
Email.php
Cache.php
從你的控制器內就可以輕鬆搞定模型這樣
public function someController()
{
$email = new \Models\Services\Email();
// Do stuff with email service
}
這麼短回答你的問題是最好的事情有是第一個Front Controller,它爲您提供了一些「擺動」空間,然後從那裏加載啓動應用程序的Bootstrap,Bootstrap中的第一件事是要求您的類加載器以及要通過應用程序使用的寄存器庫。
然後你甚至可以註冊自動加載的應用程序控制器和模型的文件夾,並在系統啓動文件的末尾,當你即將派遣要求,您可以要求控制器是這樣的:
$app = new '\\Application\\Controllers\\' . $class;
// Dispatch request with call_user_func_array or ReflectionMethod and ReflectionClass
無需要求Controller類自動加載,只需提供正確的名稱空間即可。
偉大的問題,希望這有助於!很高興看到其他人玩弄他們的custome MVC :)
自動加載器技術上不是MVC模式的一部分,它只是一個按需查找和加載類的機制。您也可以靜態加載所有的MVC類,並且根本不使用自動加載器;另一方面,即使與MVC模式無關,也可以爲所使用的任何類使用自動加載器。 – lanzz
對不起,我不打算聽起來像我認爲自動裝載機是特定於MVC模式。我只是不確定它通常位於此設置的位置。 – ohiock
'index.php'文件包含'../ app/boostrap.php'。 bootstrap包含'../ lib/someautoloader.php',然後初始化自動加載器。 –