Php 如何在脚本中获取包名?
我正在做一个简短的包后安装/更新脚本,将一些文件从Php 如何在脚本中获取包名?,php,composer-php,Php,Composer Php,我正在做一个简短的包后安装/更新脚本,将一些文件从vendor目录复制到我的public目录中 按照composer站点的示例,但是当我执行它时,我得到一个错误: 致命错误:在第17行的S:\Projects\Composer scripts\FileCopy.php中调用未定义的方法Composer\DependencyResolver\Operation\UpdateOperation::getPackage() 代码是: namespace composer-scipts; use Co
vendor
目录复制到我的public
目录中
按照composer
站点的示例,但是当我执行它时,我得到一个错误:
致命错误:在第17行的S:\Projects\Composer scripts\FileCopy.php中调用未定义的方法Composer\DependencyResolver\Operation\UpdateOperation::getPackage()
代码是:
namespace composer-scipts;
use Composer\Script\Event;
class FileCopy
{
public static function postPackageInstall( Event $event )
{
$packageName = $event->getOperation()->getPackage()->getName();
echo "$packageName\n";
}
public static function postPackageUpdate( Event $event )
{
$packageName = $event->getOperation()->getPackage()->getName();
echo "$packageName\n";
}
}
有人可以提出建议吗?在进一步测试之后,我发现了这个问题,这主要是由于两个不同的接口具有相同/相似的方法,但具有不同的签名。因此,我最终得到了:
public static function postPackageInstall( Event $event )
{
$packageName = $event->getOperation()->getPackage()->getName();
if( $packageName == 'twbs/bootstrap' )
{
self::copyFiles();
}
}
public static function postPackageUpdate( Event $event )
{
$packageName = $event->getOperation()->getInitialPackage()->getName();
if( $packageName == 'twbs/bootstrap' )
{
self::copyFiles();
}
}
因此,postPackageInstall使用
getPackage()
,而postPackageUpdate使用getInitialPackage()
@Ant不确定您的意思是什么?这是一个按照定义脚本#一节中的查看来理解我的意思的脚本。composer.json
的片段是:“psr-4”:{“composer scripts”:“vendor/wip/composer scripts”},“scripts”:{“post package install”:[“FileCopy::postPackageInstall”],“post package update”:[“FileCopy::postPackageUpdate”]}看到这个了吗-好的,改成getInitialPackage()似乎已经成功了,谢谢你的帮助!