我有一个 Laravel 5 模型帐户,它实现了Interface.
我已经实现了所有方法,但是Interface当我运行代码时,Laravel 抱怨模型没有实现该接口。
以下错误
Account.php(模型)
<?php
namespace Abc\Accounts\Models;
use Abc\Accounts\Contracts\Accountlnterface;
use Illuminate\Database\Eloquent\Model;
class Account extends Model implements Accountlnterface {
....
Run Code Online (Sandbox Code Playgroud)
在我的控制器中我正在这样做
$account = Account::where('something', 'value')->first();
Run Code Online (Sandbox Code Playgroud)
这会很好地返回模型。
问题在于当我将它传递给另一个类控制器时
$result = new Transaction($account, 5.00);
Run Code Online (Sandbox Code Playgroud)
交易文件
public function __construct(Accountlnterface $account, float $value = 0.00)
{
$this->account = $account;
Run Code Online (Sandbox Code Playgroud)
事务构造函数正在寻找接口,但是 laravel 抱怨 Account 没有实现它。
我不确定这段代码有什么问题。
Laravel 的错误
类型错误:传递给 Abc....\Transaction::__construct() 的参数 1 必须是 Abc\Accounts\Components\AccountInterface 的实例,给定的 Tymr\Plugins\Accounts\Models\Account 实例。
模型加载后我立即运行此代码
if($account instanceof AccountInterface)
echo "working";
else …Run Code Online (Sandbox Code Playgroud)