MyInterface.php
とMyTrait.php
に同じメソッドprintData()
を作成しました。MyInterface.php
を実装し、MyTrait.php
を使用するコントローラからメソッドprintData()
を呼び出しています。しかし、この方法は常にMyInterface.php
から呼び出しています。これがなぜ起こるのか説明してください。同じ名前のメソッドは、TraitからではなくInterfaceから呼び出されますか?
MyInterface.php
<?php namespace App\Interfaces;
interface MyInterface
{
public function printData();
}
MyTrait.php
<?php namespace App\Traits;
trait MyTrait
{
public function printData()
{
dd("From Trait");
}
}
HomeController.php
<?php namespace App\Http\Controllers;
use App\Interfaces\MyInterface;
use App\Traits\MyTrait;
use App\User;
class HomeController extends Controller implements MyInterface
{
use MyTrait;
public function index()
{
$this->printData();
}
public function printData() {
// TODO: Implement printData() method.
dd("From Interface");
}
}
内のすべてのこの詳細については、こちらをご覧ください。あなたは結果を見るために 'use App \ Traits \ MyTrait'を追加する必要があります。 – apokryfos
@apokryfosええ、私は質問を更新します。 –
クラスのメソッドは、常に特性からインポートされたメソッドよりも優先されます。 [マニュアルの優先順位のセクションを参照](http://php.net/manual/en/language.oop5.traits.php#language.oop5.traits.precedence)。 – iainn