MyInterface.php
과 MyTrait.php
에 동일한 방법 printData()
을 만들었으며 MyInterface.php
을 구현하고 MyTrait.php
을 사용하는 컨트롤러에서 printData()
메서드를 호출하고 있습니다. 그러나이 방법은 항상 MyInterface.php
에서 호출합니다. 이것이 발생하는 이유를 설명해주십시오.특성 이름이 아닌 인터페이스에서 동일한 이름의 메서드가 호출 되었습니까?
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