使用 psr-4 自动加载我在 monorepo 中的类

问题描述 投票:0回答:1

我正在 monorepo 架构中编写 WordPress 插件,这是我的目录结构:

packages/
  ├── plugin
  └── dependencie-1

dependencie-1
中,我在composer.json中配置了psr-4自动加载:

"autoload": {
    "psr-4": {
        "Mdorim\\": "src/php/"
    }
}

plugin
中,我的composer.json如下:

"autoload": {
    "psr-4": {
        "LCDR\\": "./src/php",
        "LCDR\\Tests\\": "./tests/Pest"
    }
},
"repositories": [
    {
        "type": "path",
        "url": "../mdorim"
    }
],
"require": {
    "monorepo/mdorim": "@dev"
},

plugin
的主文件中,我需要供应商提供自动加载器

require '../vendor/autoload.php'

虽然我可以通过配置自动加载器访问

plugin
中的所有类,但我无法使用
dependencie-1
中的类,并且不断收到此错误:

PHP Fatal error:  Uncaught Error: Class "Mdorim\Core" not found in /var/www/html/wp-content/plugins/elucidario-art/lcdr.php:52

显然,依赖项中的类不在

plugin
的主路径中,而是在其
vendor
目录中。 psr-4 不应该解决这个问题吗?我是不是错过了什么?

更新

这可能是 docker 无法解析符号链接目录的原因,因为它在 phpunit 配置的测试中工作正常。 但是,如果我在composer.json的dependencie-1的存储库配置中使用符号链接选项 false ,则不会发生任何事情:

"repositories": [
    {
        "type": "path",
        "url": "../mdorim",
        "options": {
            "symlink": false
        }
    }
],
php wordpress autoload psr-4
1个回答
0
投票

我实际上解决了符号链接选项标记为 false 的问题,但我必须删除composer.lock并再次安装它。

© www.soinside.com 2019 - 2024. All rights reserved.