我想在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 ./');
}
}
有人知道某种方式吗?
答案 0 :(得分:2)
如果要从目录中复制文件,但不知道文件的绝对路径(例如,因为它是作为库安装到某个供应商文件中),您可以查看magic变量{ {1}}。它包含当前脚本的路径,因此如果您的脚本位于__DIR__
,则会解析为/what/ever/directory/script.php
。
因此,如果您知道脚本与要复制的文件之间的相对路径,则可以使用它:在您的情况下,要复制的文件可能位于相对路径中/what/ever/directory
和在src/Starter/myfile.yml
运行操作的文件(根据类的命名空间)。要将其复制到某个位置,您可以使用路径src/MyLibrary/MyClass.php
。