【问题标题】:migrate a Laravel package form 4.2 to 5.0将 Laravel 包从 4.2 迁移到 5.0
【发布时间】:2015-04-07 13:11:11
【问题描述】:

我已经为 laravel 4.2 开发了一个包,你已经注意到 laravel 5.0 刚刚发布,我的包不能安装在新的 laravel 项目上

我的包的 composer 文件如下所示:

 "require": {
      "php": ">=5.4.0",        
      "illuminate/support": "4.2.*",
     "zofe/rapyd" : "1.3.*"
  },

问题
我应该对我的项目进行哪些更改以使其与 Laravel 5 项目兼容?而且我的包需要这个包https://github.com/zofe/rapyd-laravel,它还没有为 Laravel5 发布,它会阻止我的包正确安装吗?

【问题讨论】:

    标签: laravel packages laravel-5


    【解决方案1】:

    如果你的包依赖于其他 laravel 包(即这些包在它们的 composer.json 文件中引用特定版本的 Illuminate 组件),当它在依赖树中发现它无法解决的版本差异时,composer 会出错。

    如果您必须依赖第三方软件包,则需要等到该软件包更新或自行更新并向所有者提交 PR。

    否则您需要对以下内容进行一些修改:

    • Composer.json
    • 服务提供商

    作曲家.json

    所有 laravel 组件都需要有一个 5 的主要版本。

    "require": {
        "php": ">=5.4.0",        
        "illuminate/support": "~5"
    }
    

    服务提供者

    服务提供商已更改。它们不再包含用于从 Laravel 4 注册包的方法。*

    public function boot()
    {
        // This no longer works
        $this->package('vendor/name');
    }
    

    您可以定义如何服务提供商对某些命令做出反应。例如,您为您的包创建了一个config.php

    以前,配置位于服务提供商可以找到的预定义位置,因为它知道您的包被命名为vendor/name。相反,在 L5 中,你告诉提供者它的配置在哪里。

    public function boot() 
    {
        $this->publishes([
            __DIR__.'/path/to/config' => config_path('mypkg.php'),
        ]);
    }
    

    这个例子专门处理一个配置文件。新方法更加冗长,但可以更好地控制您的包资产、视图、本地化和配置。

    文档详细介绍,可在 here 找到,如果您要更新 L5 的软件包,则必须阅读这些文档。

    结论

    1. 您不能依赖非 L5 包
    2. 更新 composer.json
    3. 修改服务提供者以遵循 L5 格式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 2014-08-29
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多