将Laravel包表单4.2迁移到5.0

Sia*_*osh 1 packages laravel laravel-5

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

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

 "require": {
      "php": ">=5.4.0",        
      "illuminate/support": "4.2.*",
     "zofe/rapyd" : "1.3.*"
  },
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*ker 6

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

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

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

  • Composer.json
  • 服务提供商

Composer.json

所有laravel组件都需要具有5的主要版本.

"require": {
    "php": ">=5.4.0",        
    "illuminate/support": "~5"
}
Run Code Online (Sandbox Code Playgroud)

服务提供者

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

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

相反,你定义如何服务提供商将某些命令做出反应.例如,您已config.php为包创建了一个.

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

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

此示例专门处理配置文件.新方法更冗长,但允许更好地控制包资产,视图,本地化和配置.

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

结论

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