Composer php 如何获取composer包中文件的路径
我想在composer包中包含一个默认文件。我想通过Robo将包中的文件复制到project。我想我可以使用Composer对象,但是运气不好,因为Composer php 如何获取composer包中文件的路径,composer-php,Composer Php,我想在composer包中包含一个默认文件。我想通过Robo将包中的文件复制到project。我想我可以使用Composer对象,但是运气不好,因为$Composer->getConfig()为空 <?php namespace MyLibrary\MyClass; use Robo\Tasks as Tasks; use Composer\Composer as Composer; /** * Base class for Xeno robo commands. */ clas
$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 ./');
}
}
如果您想从目录复制一个文件,但不知道该文件的绝对路径(例如,因为它是作为某个供应商文件的库安装的),您可以查看神奇变量\uuuuu DIR\uu
。它包含当前脚本的路径,因此如果脚本位于/what/ever/directory/script.php
,则解析为/what/ever/directory
因此,如果您知道脚本和要复制的文件之间的相对路径,您可以利用它:在您的情况下,要复制的文件可能位于相对路径src/Starter/myfile.yml
,运行操作的文件位于src/MyLibrary/MyClass.php
(根据类的名称空间). 要将其复制到某个地方,可以使用路径$path=\uuuuuu DIR\uuuuu.'//Starter/myfile.yml
如果您想从目录复制一个文件,但不知道该文件的绝对路径(例如,因为它是作为库安装到某个供应商文件中的),您可以查看神奇变量\uuuuu DIR\uu
。它包含当前脚本的路径,因此如果脚本位于/what/ever/directory/script.php
,则解析为/what/ever/directory
因此,如果您知道脚本和要复制的文件之间的相对路径,您可以利用它:在您的情况下,要复制的文件可能位于相对路径src/Starter/myfile.yml
,运行操作的文件位于src/MyLibrary/MyClass.php
(根据类的名称空间). 要将其复制到某个地方,可以使用路径$path=\uuuuuu DIR\uuuuu.'//Starter/myfile.yml
“编写器库路径”是什么意思?您可能想写一个吗?假设我有一个composer包,其中包含以下路径中的文件:src/Starter/myfile.yml。我想把那个文件复制到我的项目中。为了复制它,我需要完整的路径。我想知道如何通过我的机器人课复制它。我不想使用Composer安装后脚本执行此操作。我刚刚用setup函数更新了示例代码,该函数显示了我要如何复制它。请查看\uuuuu DIR\uuuu
,它包含放置任务的当前目录。你能从那里建立复制的文件路径吗?@NicoHaase-Dah为什么我没有想到这一点。我认为这应该行得通。你能把答案贴出来让我给你评分吗?你说的“作曲家库路径”是什么意思?您可能想写一个吗?假设我有一个composer包,其中包含以下路径中的文件:src/Starter/myfile.yml。我想把那个文件复制到我的项目中。为了复制它,我需要完整的路径。我想知道如何通过我的机器人课复制它。我不想使用Composer安装后脚本执行此操作。我刚刚用setup函数更新了示例代码,该函数显示了我要如何复制它。请查看\uuuuu DIR\uuuu
,它包含放置任务的当前目录。你能从那里建立复制的文件路径吗?@NicoHaase-Dah为什么我没有想到这一点。我认为这应该行得通。你能把答案贴出来让我给你评分吗?