我正在做一个简短的包安装/更新脚本,将一些文件从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";
}
}
有人可以提供建议吗?
答案 0 :(得分:6)
在进一步测试之后,我已经确定了问题,这主要是由于两个不同的接口具有相同/相似的方法但具有不同的签名。因此我最终得到了:
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()
where-as postPackageUpdate使用getInitialPackage()
。