如何在脚本中获取包名?

 谁是我在寻找 发布于 2023-01-30 09:16

我正在做一个简短的文件包安装/更新脚本,将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";
    }
}

任何人都可以建议吗?

1 个回答
  • 在进一步测试之后,我已经确定了问题,这主要是由于两个不同的接口具有相同/相似的方法但具有不同的签名.因此我最终得到了:

    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().

    2023-01-30 09:20 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有