在哪里保留自动加载和路由器类

时间:2015-03-10 06:26:46

标签: php cakephp laravel router spl-autoload-register

我应该在哪里保留自动加载类和路由器类?

据我所知,路由器类不是设计模式的一部分,所以我应该将它存储在一个文件夹中,比如facade,然后我应该把它保存在哪里?

另外,自动加载类怎么样,它不是任何设计模式的一部分?我应该把它放在哪里呢?

所有php框架都保留这两个类?我尝试在Laravel,CakePHP,Zend Framework等中寻找它们,以获得应该保留它们的一些想法,但我在这些框架中找不到它们。有什么想法吗?

路由器类,

class Router 
{
...
}

autoload class,

class Autoloader
{
...
// spl_autoload_register(array($this, 'load'));
}

2 个答案:

答案 0 :(得分:1)

Cake Custom Router Class:http://book.cakephp.org/2.0/en/development/routing.html#custom-route-classes

我在app / Vendor / autoload.php中有Autoload,它实际上是由Composer创建的app / Vendor / Composer / autoload_real.php的链接。信息在这里:http://book.cakephp.org/2.0/en/installation/advanced-installation.html#installing-cakephp-with-composer

如果您正在编写完全自定义的自动加载,我认为您还可以合理地创建/ app / Autoload /并在此处添加。我为事件做了类似的事情 - 创建/ app / Event / .. - 它遵循Cake的文件结构的惯例并且运行良好。我不知道Cake文档中用于创建自定义自动加载类的任何指定方法。

有关在此处加载课程的更多信息:http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#loading-classes

答案 1 :(得分:1)

好吧,让我们采取现代的方法。现在没有一个框架需要自动加载器。只需按照psr-4(或psr-0,如果你愿意)标准自动加载php类。始终使用composer自动加载您的文件和依赖项。

假设您需要为自定义项目自动加载所有类。您的所有课程都在App目录中。你怎么做呢?在你的composer.json文件中

"autoload": { "psr-4": { "MyAppName\\" : "App" } }

现在,如果您按照psr-4并要求" vendor / autoload.php"在任何文件中,所有类都将在需要时自动加载。

希望我能回答你的问题。如果需要,可以使用composer的use classmap。