Laravel:我们可以在之前的版本中使用最新版本的服务吗?

时间:2016-01-06 11:16:00

标签: php laravel stripe-payments

我的应用程序是在Laravel 5.1中开发的。我可以使用Billing module laravel from 5.2吗?我在5.2中看到,计费模块完全不同,需要不同的命名空间和接口。我尝试将cashier package升级到~6.0,但它已生成错误

Error Output: PHP Fatal error:  Interface 'Laravel\Cashier\Contracts\Billable' not found in /project/app/Models/User.php on line 8 

Laravel 5.1 cashier 4.0, 这就是我的用户模型具有以下命名空间

的方式
 <?php namespace App\Models;

  use Cartalyst\Sentinel\Users\EloquentUser;
  use Laravel\Cashier\Billable;
  use Laravel\Cashier\Contracts\Billable as BillableContract;


 class User extends EloquentUser implements BillableContract
 {
    use Billable;
   /////
 }

但是当我升级cashier to ~6.0时,它产生了上述错误。

我们可以在5.1中使用Laravel 5.2的收银包,如果是的话我该怎么办?

1 个答案:

答案 0 :(得分:4)

根据图书馆的composer.json文件,Cashier 6.0的依赖性不会超出Laravel 5.1可提供的要求,因此您应该能够将Cashier 6.0与Laravel 5.1一起使用。这里的解决方案看起来很简单,只需删除合同中的行:

use Laravel\Cashier\Contracts\Billable as BillableContract;

仅使用Billable特征:

use Laravel\Cashier\Billable;

这是因为Cashier 5.0拥有Billable界面defined in Contracts,版本6.0 removed that。此外,Laravel 5.1的Cashier Documentation显示了如何通过添加您当前正在使用的两个使用语句来设置带有Cashier 5的模型,而使用Cashier 6的Laravel 5.2的Cashier Documentation仅显示您需要使用Billable特征。

收银员4和6依赖关系之间还有另外一个值得注意的区别:

因此,请确保满足要求。