覆盖Composer自动加载器



背景

我正在开发一系列共享一个通用引擎的网站。与StackExchange的网站网络非常相似。每个webiste都是一个单独的Symfony2安装在不同的Git存储库上,与引擎有依赖关系,该引擎也放在一个独立的存储库上。

 "requires": {
     ...
     "my-platform/core": "dev-master"
 }

我仍处于开发的早期阶段,所以我不希望每次更改核心存储库中的内容时都使用composer update。Composer似乎有一个合适的工具来解决这个问题,但它不想正常工作。

我的目录结构:

Workspace
    MyPlatformCore
        src
            MyPlatform
                Core
                    SomeClass.php
        composer.json
    MyWebsiteAAA
        app
        src
        vendor
        web
        composer.json
    MyWebsiteBBB
        app
        src
        vendor
        web
        composer.json

从每个MyWebsiteXXX存储库的composer.json自动加载部分:

"autoload": {
    "psr-0": {
        "MyPlatform": "../MyPlatformCore/src"
    }
},

问题

如果我从MyWebsiteXXX运行php composer.phar dumpautoload --optimize,它会生成路径错误的自动加载器文件。文件vendor/composer/autoload_classmap.php包含:

'MyPlatform\Core\...' => $vendorDir . '/myplatform/core/src/MyPlatform/Core/...php',

而它应该包含:

'MyPlatform\Core\...' => $vendorDir . '/../MyPlatformCore/src/MyPlatform/Core/...php',

第页。S.WorkspaceMyPlatformCore实际上是一个符号链接,但它应该很重要,不是吗?

Composer不适合您当前的工作阶段。

为核心类提供一个可工作的PSR-0自动加载器将使它们可用于其他代码。将这个自动加载器添加到Composer自动加载器中应该可以工作,但我认为最好通过符号链接集成您的核心"进行中的代码",而不是由Composer不断更新它。

真正的好处是使用几个标记版本中的现有核心代码库,以及使用彼此不同的定义版本的多个网站。只有在需要添加功能或修复错误的情况下,您才能处理核心。日常工作将进入任何一个网站,其中可能包括在该更新该网站的核心文件时进行更新。

相关内容

  • 没有找到相关文章

最新更新