私はLaravel 5モデルアカウントを実装しています。Interface
を実装しています。モデルのインタフェースをLaravelで実装する
私はコードを実行すると、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 {
....
私はこの
$account = Account::where('something', 'value')->first();
をしていますこれは、モデルだけで罰金を返します。
私は別のクラスのコントローラ
$result = new Transaction($account, 5.00);
トランザクションファイル
public function __construct(Accountlnterface $account, float $value = 0.00)
{
$this->account = $account;
取引コンストラクタしかしlaravelアカウントが実装されていないことに不平を言っているインターフェイスを探しているにそれを渡したときに問題がありますそれ。
このコードでは何が間違っているのか分かりません。モデルがロードされた直後Laravel
Type error: Argument 1 passed to Abc....\Transaction::__construct() must be an instance of Abc\Accounts\Components\Accountlnterface, instance of Tymr\Plugins\Accounts\Models\Account given.
から
エラーが、私はこのコード
if($account instanceof AccountInterface)
echo "working";
else
echo "fails";
を実行し、それは確かに失敗しました。
サービスコンテナ内のアカウントにAccountInterfaceをバインドしましたか?インターフェイスのインスタンスを解決する方法についてLaravelに指示する必要があります;) –