你应该把它放在你的引导文件中。
您可以这样做:
- 将每个 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
}
对您的问题的简短回答是,最好的事情是首先为您提供一些“摆动”空间的前端控制器,然后从那里加载启动您的应用程序的引导程序,引导程序中的第一件事是要求您的类加载器,并通过应用程序注册要使用的库。
然后你甚至可以为你的应用程序 Controllers 和 Models 文件夹注册自动加载,并且在 Bootstrap 文件的末尾,当你要发送请求时,你可以像这样请求 Controller:
$app = new '\\Application\\Controllers\\' . $class;
// Dispatch request with call_user_func_array or ReflectionMethod and ReflectionClass
不需要控制器类,因为它是自动加载的,只需为它提供正确的命名空间。
很好的问题,希望这会有所帮助!很高兴看到其他人在玩他们的客户 MVC :)