使用作曲家的自动加载

2022-08-30 08:48:39

我一直在环顾网络,在这个问题上没有运气。我正在使用作曲家的自动加载与我的代码在我的:composer.json

"autoload": {
    "psr-0": {"AppName": "src/"}
}

但是我需要在比供应商文件夹更高的级别自动加载。

做这样的事情是行不通的:

"autoload": {
    "psr-0": {"AppName": "../src/"}
}

有没有人知道修复程序或我如何做到这一点?


答案 1

每个包都应该负责自动加载本身,您试图通过定义包中的自动加载类实现什么?

如果是针对应用程序本身,一种解决方法是向加载程序实例添加命名空间,如下所示:

<?php

$loader = require 'vendor/autoload.php';
$loader->add('AppName', __DIR__.'/../src/');

答案 2

作曲家文档指出:

添加自动加载字段后,必须重新运行安装以重新生成供应商/自动加载.php文件。

假设您的“src”dir 与“vendor”dir位于同一级别:

  • 来源
    • 应用名称
  • 供应商
  • composer.json

以下配置是绝对正确的:

{
    "autoload": {
        "psr-0": {"AppName": "src/"}
    }
}

但是您必须重新更新/安装依赖项以使其为您工作,即运行:

php composer.phar update

此命令将获取最新版本的依赖项,并更新文件“vendor/composer/autoload_namespaces.php”以匹配您的配置。

此外,如@Dom所述,您可以使用更新自动加载程序,而无需进行更新。composer dump-autoload


推荐