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

Awa*_*rni 3 php laravel stripe-payments

我的应用程序是在Laravel 5.1. 我可以使用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 
Run Code Online (Sandbox Code Playgroud)

在Laravel 5.1with 中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;
   /////
 }
Run Code Online (Sandbox Code Playgroud)

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

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

Bog*_*dan 5

根据库composer.json文件,Cashier 6.0 的依赖项不超过 Laravel 5.1 可以提供的要求,因此您应该能够将 Cashier 6.0 与 Laravel 5.1 一起使用。这里的解决方案看起来很简单,把合同里的那一行去掉即可:

use Laravel\Cashier\Contracts\Billable as BillableContract;
Run Code Online (Sandbox Code Playgroud)

并且只使用Billable特征:

use Laravel\Cashier\Billable;
Run Code Online (Sandbox Code Playgroud)

那是因为虽然 Cashier 5.0 在 中定义了Billable接口,但 6.0 版删除了. 此外,Laravel 5.1的收银台文档展示了如何通过添加您当前使用的两个 use 语句来使用 Cashier 5 设置模型,而使用 Cashier 6 的 Laravel 5.2的收银台文档仅显示您需要使用该特征。ContractsBillable


Cashier 4 和 6 依赖项之间还有另一个显着区别:

因此,请确保也满足该要求。