我的应用程序是在 Laravel 5.1
中开发的。我可以使用 Billing module 吗? laravel 来自 5.2
?我在 5.2 中看到计费模块非常不同,需要不同的 namespace 和接口(interface)。我尝试通过将 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
中,
这就是我的用户模型具有以下 namespace 的方式
<?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 升级到 ~6.0
时,它产生了上述错误。
我们可以在 5.1 中使用 Laravel 5.2 的 cashier 包吗,如果可以,我该怎么做?
最佳答案
根据图书馆的 composer.json
,Cashier 6.0 的依赖项不会超过 Laravel 5.1 可以提供的要求。文件,所以你应该能够在 Laravel 5.1 中使用 Cashier 6.0。这里的解决方案看起来很简单,把有contract的那一行去掉即可:
use Laravel\Cashier\Contracts\Billable as BillableContract;
并且仅使用 Billable
特征:
use Laravel\Cashier\Billable;
那是因为 Cashier 5.0 有 Billable
接口(interface) defined in Contracts
, 版本 6.0 removed that .还有 Cashier Documentation for Laravel 5.1 展示了如何通过添加您当前正在使用的两个 use 语句来使用 Cashier 5 设置模型,而 Cashier Documentation对于使用 Cashier 6 的 Laravel 5.2,仅显示您需要使用 Billable
特性。
Cashier 4 和 6 依赖项之间还有一个显着差异:
- 需要收银员 4
"stripe/stripe-php": "~1.9"
- 收银员 6 需要
"stripe/stripe-php": "~3.0"
因此请确保该要求也得到满足。
关于php - Laravel:我们可以在以前的版本中使用最新版本的服务吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34631792/