小编S.M*_*ald的帖子

在 Laravel 模型上实现接口

我有一个 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)

interface models laravel-5

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

interface ×1

laravel-5 ×1

models ×1