如何在composer包中获取文件路径

时间:2018-01-19 16:13:47

标签: composer-php

我想在composer包中包含一个默认文件。我想通过Robo将位于包中的文件复制到项目中。我以为我可以使用Composer对象但没有运气因为$composer->getConfig()为空。

<?php

namespace MyLibrary\MyClass;

use Robo\Tasks as Tasks;
use Composer\Composer as Composer;

/**
 * Base class for Xeno robo commands.
 */
class MyClass extends Tasks {

  public function pathLibrary() {
    $composer = new Composer();
    echo $composer->getConfig()->get('mylibrary');
  }

  public function setup() {
   // Copy file over.
   $this->_exec('cp ' . $this->pathLibrary() . '/src/Starter/myfile.yml ./');
  }

}

有人知道某种方式吗?

1 个答案:

答案 0 :(得分:2)

如果要从目录中复制文件,但不知道文件的绝对路径(例如,因为它是作为库安装到某个供应商文件中),您可以查看magic变量{ {1}}。它包含当前脚本的路径,因此如果您的脚本位于__DIR__,则会解析为/what/ever/directory/script.php

因此,如果您知道脚本与要复制的文件之间的相对路径,则可以使用它:在您的情况下,要复制的文件可能位于相对路径中/what/ever/directory和在src/Starter/myfile.yml运行操作的文件(根据类的命名空间)。要将其复制到某个位置,您可以使用路径src/MyLibrary/MyClass.php