【问题标题】:Where to keep autoload and router classes在哪里保留自动加载和路由器类
【发布时间】:2015-03-10 06:26:45
【问题描述】:

我应该把我的自动加载类和路由器类放在哪里?

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

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

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

路由器类,

class Router 
{
...
}

自动加载类,

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

【问题讨论】:

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


    【解决方案1】:

    Cake 自定义路由器类: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

    【讨论】:

      【解决方案2】:

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

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

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

      现在,如果您遵循 psr-4 并在任何文件中要求“vendor/autoload.php”,那么您的所有类都将在需要时自动加载。

      希望我能回答您的问题。如果您愿意但不建议使用作曲家的类映射,您可以使用。

      【讨论】:

      • 感谢您的回答。我可以问 - 为什么None of the frameworks now want a autoloader.?我知道如何使用 Composer 来生成自动加载器,但我更喜欢独立于其他供应商,例如 Composer。我看不到将 Composer 用于自动加载器的好处。那么它有什么好处呢?
      • @oasis Composer 已经成为事实上的标准 PHP 依赖管理器,几乎所有你能找到的甚至是初级严肃的项目都提供 composer 支持。这是一个解决方案,消除了维护依赖项和这些依赖项以及您自己的项目代码可能需要的各种自动加载机制的所有痛苦。如果你问我,这有什么好处是不言自明的。
      猜你喜欢
      • 1970-01-01
      • 2011-07-01
      • 2023-04-03
      • 2019-02-18
      • 2021-01-27
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多