Php 检测脚本中使用的所有类,并加载它们

Php 检测脚本中使用的所有类,并加载它们,php,oop,Php,Oop,是否有PHP库或扩展可以检查您的代码,找到您使用的所有类,然后自动加载这些类 当我写一个新脚本时,要写一大堆require语句是很乏味的 我知道Facebook使用了非常类似的东西,它允许您在终端中运行一行,并加载所有依赖项,不需要行或手动维护代码中的任何位置的自动加载映射。这不是一个答案,因为我不相信这是一个稳定的版本使用-它允许您编写一小段代码,根据类名称加载类。如果你的命名标准是一致的,你的自动加载器只需要几行代码,就可以根据需要加载所有的类 以下是PHP手册中的示例: // Using

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

当我写一个新脚本时,要写一大堆require语句是很乏味的

我知道Facebook使用了非常类似的东西,它允许您在终端中运行一行,并加载所有依赖项,不需要行或手动维护代码中的任何位置的自动加载映射。这不是一个答案,因为我不相信这是一个稳定的版本使用-它允许您编写一小段代码,根据类名称加载类。如果你的命名标准是一致的,你的自动加载器只需要几行代码,就可以根据需要加载所有的类

以下是PHP手册中的示例:

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

三行代码很难冗长

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

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


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

在这个问题上受到了大量的抨击。它被解释为自动生成自动加载的利弊。问题是什么会自动生成地图。答案似乎是这样的:

如果您想要一个脚本来自动检查PHP文件,确定其中使用的所有类,然后为您生成一个自动加载映射,那么您可以使用这个库

似乎没有任何开源的替代方案


主要的问题是,实现这个库的工作要比手动编写和维护PHP5.3+spl_autoload中使用的自动加载映射以及确保您使用的任何其他库与libphutil一起工作的工作更重要。从许多有经验的开发人员的角度来看,在一个小项目中使用这样一个库似乎对您的时间是不利的

自动加载器的详细程度与要求一样。。。?!胡特?您只需为自动加载器编写几行代码,就可以在任何地方使用。自动加载器当然不是冗长的:一个包含的代码块,在脚本中引用类时自动调用它。。。。可能总共有5行代码,这就是使用合理的目录和命名结构的地方,因此类的名称可以清楚地表明它自动驻留在哪个文件中。让我们这样说:自动加载是ginormous项目用来以可靠的方式成功加载其所有内容的一种功能,已经有相当长的一段时间了。无需编写任何代码即可完成此操作。我不知道你有什么问题…再说一遍:如果你保持一个合理的程序布局,你不需要维护地图。如果你的文件结构是垃圾,你会有这样或那样的头痛。这假设你所有的类都在一个目录中。在我从事的大多数项目中,类都被组织到子目录中。这个例子确实如此——这有什么错?如果您已将类文件拆分为子目录,则没有什么可以阻止您在autoloader例程中搜索子目录,或将类名映射到目录名,或选择任何方案。从我在这篇文章中读到的内容来看,你似乎已经将你的类划分到了许多目录中,这些目录除了手动映射之外没有其他用途,但是你还没有解释这种劳动密集型计划的基本原理。