作曲家 - 如何获得项目的根源



我正在尝试使用位于vendor/autoload.php的作曲家自动加载器。但是,我似乎无法弄清楚如何达到项目的根源,然后我可以从中导航到vendor/autoload.php。我必须指定每个文件中的相对路径(即../../../vendor/autoload.php(。这似乎是一种进入自动加载器的非常讨厌的方法,因为这条路径会有所不同,具体取决于文件的深度。

有没有指定相对路径的根目录的方法,或者我需要在每个文件中添加x parent目录?

php无法知道项目的"根"是什么。您可以在磁盘上有任何数量的目录,其中几个文件称为vendor/autoload.php,只有您知道"项目root"有什么特殊之处。因此,最终的答案是否定的,没有办法。

但是,请注意,您只需要在不包括或自动加载的文件中包含自动加载器。自动加载器是您加载的曾经是的一部分,作为代码的配置/引导程序的一部分,然后它加载了所需的任何类所需的任何类。

因此,限制不同级别的混乱的方法是仔细构建您的项目。例如:

  • 通过一个或两个"路由器"路由所有请求,例如一个" index.php"文件。使用apache mod_rewrite或nginx等等的等效物使所有URL实际上加载此脚本,然后在脚本中奏效基于URL运行的代码。您可以使用诸如Nikic/fastroute之类的库将URL转换为要调用的函数,然后将自动加载。
  • 使用不同的PHP文件,但都处于相当平坦的目录结构中,因此它们都必须"攀登"相同数量的级别才能达到项目。

相同的原则适用于命令行脚本或任何其他类型的应用程序:限制或构造"入口点",因为只有这些应用程序需要知道在哪里加载自动加载器。

如果您已经在每个请求/脚本运行/单元test/etc上都加载了某种配置文件,则将require_once 'vendor/autoload.php';行放入其中可能是明智的。像配置一样,自动加载器是您只想设置一次然后忘记的"全局状态"。

相关内容

  • 没有找到相关文章

最新更新