如何使用编辑器获取根包路径

2022-08-30 22:15:52

我正在使用作曲家开发一个名为php-app-config的PHP组件。这个组件,一旦被另一个项目需要,并使用 安装,应该在根包的配置文件夹中查找配置文件,类似于 。composer installroot_package/config/config.yml

应该只存在于根包中,而不存在于 由 中的 “require:” 导入的组件中,如下所示:./config/config.ymlcomposer.json

▾ root-package/
  ▸ bin/
  ▸ build/
  ▾ config/
    ▸ locales/
      config.yml
  ▸ src/
  ▸ tests/
  ▾ vendor/
    ▸ composer/
    ▸ phpdocumentor/
    ▸ phpspec/
    ▸ phpunit/
    ▾ robotdance/
      ▾ php-app-config/
        ▾ src/                                                                                                                                                                                               
      Config.php -> how to get the root "config/config.yml" path from here?
        ▸ tests/
      composer.json
      composer.lock
      phpunit.xml
      README.md

根包可以是 Web 应用或命令行实用工具。有没有办法使用 composer 获取根包路径?如果没有,更好的方法是什么?


答案 1

使用反射类:

$reflection = new \ReflectionClass(\Composer\Autoload\ClassLoader::class);
$vendorDir = dirname(dirname($reflection->getFileName()));

答案 2

您可以使用 composer's own 来访问项目根目录:\Composer\Factory::getComposerFile();

$projectRootPath = dirname(\Composer\Factory::getComposerFile());

对于您的案例,您可以通过以下方式访问您的案例:root-package/config/config.yml

$configYmlPath = $projectRootPath . '/config/config.yml'

不要忘记添加到依赖项中,以便可用:composer\Composer\Factory::class

$ composer require composer/composer


推荐