【问题标题】:How to use multiple autoload functions for composer?如何为作曲家使用多个自动加载功能?
【发布时间】:2020-01-30 15:55:29
【问题描述】:

我在autoload-my-func.php 文件中有自定义自动加载功能。

我想将vendor/autoload.php 用于作曲家文件,但只有我的autoload-my-func.php 用于具有我的自定义命名空间的类。 (My_Custom_Namespace)

【问题讨论】:

  • require_once 两者,工作完成
  • @delboy1978uk,我有问题。当我这样做时,composer lib(monolog)出现错误(找不到类)。
  • 您是否尝试以不同的顺序要求它们?
  • @delboy1978uk,我找到了问题所在。当我将../autoload-my-func.php 替换为autoload-my-func.php 的绝对路径时,require_once 不适用于点或以另一种方式工作。
  • 它确实适用于点,只是你弄错了 ;-) realpath() 转换相对于绝对路径,如果路径错误则返回 false。您可以使用__DIR__ 获取您正在使用的文件的目录,或使用getcwd() 获取当前工作目录,这对您将来会有帮助

标签: php composer-php autoload autoloader


【解决方案1】:

我想使用 vendor/autoload.php - 用于作曲家文件,但只有我的 autoload-my-func.php 用于具有我的自定义命名空间的类。 (My_Custom_Namespace)

您应该使用 composer 的自动加载器,并在您的 composer.json 文件中定义您的自定义命名空间。如果您被设计不佳的遗留系统所困扰,并且您需要一些东西来弥合愚蠢的鸿沟,直到您可以创建更好的解决方案,那么您应该查看spl_autoload_register 的文档。具体来说,关于“如果必须有多个自动加载函数,spl_autoload_register() 允许这样做。它有效地创建了一个自动加载函数队列,并按照定义的顺序运行每个函数。”当您包含作曲家 autoload.php 时,您最终会调用 spl_autoload_register(),因此只需在包含作曲家后注册您的自定义自动加载器。

【讨论】:

    猜你喜欢
    • 2018-08-26
    • 2013-12-09
    • 2020-10-08
    • 1970-01-01
    • 2013-03-05
    • 2015-09-24
    • 1970-01-01
    • 2014-01-31
    相关资源
    最近更新 更多