将Laravel包表单4.2迁移到5.0

时间:2015-02-07 12:09:15

标签: laravel packages laravel-5

我已经为laravel 4.2开发了一个软件包,当你晚上已经注意到laravel 5.0刚刚发布时,我的软件包无法安装在新的laravel项目上

我的包的作曲家文件如下所示:

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

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

1 个答案:

答案 0 :(得分:6)

如果你的软件包依赖于其他laravel软件包(即那些软件包在其composer.json文件中引用了Illuminate组件的特定版本),当它在依赖关系树中找到它无法解决的版本差异时,composer将会出错。 / p>

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

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

  • Composer.json
  • 服务提供商

Composer.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格式