代码之家  ›  专栏  ›  技术社区  ›  Fractaliste

PSR-4使用Composer自动加载

  •  20
  • Fractaliste  · 技术社区  · 9 年前

    我用作曲家的自动加载类系统运行一个门户:

    "autoload": {
        "psr-4": {
            "Portal\\": "src/"
        }
    }
    

    当我跑步时它会起作用 composer.phar dump -o 例如,我的类Boostrap被很好地引用到 vendor/composer/autoload_classmap.php 文件:

    'Portal\\Core\\Bootstrap' => $baseDir . '/src/core/Bootstrap.php',
    

    但当我不运行 优化的 自动装载卸载选项,自动装载系统不再工作:

    Fatal error: Class 'Portal\Core\Bootstrap' not found in /var/www/portail/prod/web/index.php on line 7
    

    如果没有 -o 选项

    1 回复  |  直到 9 年前
        1
  •  22
  •   Thomas Landauer dbNine    6 年前

    有两种方法可以解决这个问题。

    1. 改变 composer.json

      "Portal\\Core\\": "src/core/"
      
    2. 或重命名 core 目录到 Core

    https://getcomposer.org/doc/04-schema.md#psr-4

    子目录名称必须与子命名空间名称的大小写匹配。

    http://www.php-fig.org/psr/psr-4/