-5

是否有 PHP 库或扩展可以检查您的代码,找到您使用的所有类,然后自动加载这些类?

当我编写一个新脚本时,不得不编写大量的 require() 语句是很乏味的。

我知道 Facebook 使用与“ https://github.com/facebook/libphutil ”非常相似的东西,它让您只需在终端中运行一行并加载所有依赖项,无需 require() 行或手动维护自动加载映射编码。(这不是答案,因为我不相信这是一个稳定的版本)

4

3 回答 3

5

使用spl_autoload_register - 它允许您编写一小段代码,根据类名加载类。如果您对命名标准保持一致,您的自动加载器只需要几行代码,并且会根据需要加载所有类。

这是取自 PHP 手册的示例:

// Using an anonymous function as of PHP 5.3.0
spl_autoload_register(function ($class) {
  include 'classes/' . $class . '.class.php';
});

三行代码几乎不冗长。

于 2013-09-22T09:49:46.717 回答
3

我不太确定您为什么认为自动装载机很冗长。如果您遵守标准命名约定,那么自动加载程序将是几行代码,您可以将它们放在一个包含中,并且您永远不会编写任何require调用,除了加载自动加载程序的调用。

至于你的问题的答案,不,没有内置任何东西。它怎么知道从哪里获取代码?PHP 没有像 Java 这样定义良好的类路径系统。

无论如何,您本质上是在描述自动加载器,尽管它发生在代码后处理中。对于大多数较小的项目,构建步骤会给 PHP 代码库带来更多的负担而不是好处。

于 2013-09-22T09:52:40.323 回答
0

在这个问题上得到了令人印象深刻的抨击。它被解释为自动生成自动加载的利弊。这个问题的意思是“那里有什么会生成自动加载地图”。这似乎是答案:

如果你想要一个脚本来自动检查你的 PHP 文件,确定其中使用的所有类,然后为你生成一个自动加载映射,你可以使用这个库https://github.com/facebook/libphutil

似乎没有任何开源替代品。

主要问题是实现这个库的工作比手动编写和维护 PHP 5.3+ spl_autoload 中使用的自动加载映射的工作要大,并确保您使用的任何其他库都与 libphutil 一起工作。从这个线程上的许多经验丰富的开发人员看来,对于一个小项目使用这样的库听起来会对您的时间产生负面影响。

于 2013-09-22T10:29:31.087 回答