두개의 파라미터가 완전히 다르게 인지되고 있습니다.
(Illuminate\Support\Facades\Request $request, array $rules, array $messages = Array, array $customAttributes = Array)
(Illuminate\Http\Request $request, array $rules, array $messages = Array, array $customAttributes = Array)
첫번째 파라미터가 아래와 같이 다릅니다. 어느것을 쓰실건지 통일시켜야 할 것 같습니다.
Illuminate\Support\Facades\Request
Illuminate\Http\Request
결론은 traits 문제가 아닌것 같네요.
음... 전달이 잘 안된것 같습니다.
이건 trait 을 빼고 해도 마찬가지입니다. 오버로딩을 시도하고 있는 코드이기 때문이죠.
예제는 정상인데 주신 코드에는 오버로딩을 시도하고 있습니다. 오류 메시지를 다시한번 확인해 보시면 이해가 쉬울것 같아요. (미묘하게 다릅니다. 오타같아요.)
Warning: Declaration of traitB::hello(ParamB $b) should be compatible with A::hello(ParamA $a) in /Users/tael/tmp/traits.php on line 6
class A { use traitA; } class B extends A { use traitB; } class ParamA{} class ParamB{} trait traitA { public function hello(ParamA $a){} } trait traitB { public function hello(ParamB $b){} } (new B())->hello(new ParamB);
샘플로 동일한 에러를 발생시키도록 만들어 봤습니다.
메소드는 같은 이름인데, 파라미터가 다르거든요. 오버로딩을 시도하게 되버린거죠.
아넵 맞네요
trait 가 문제가 아니고 validate 파라미터가 부모하고 달라서 생기는 문제이네요.
오류내용을 자세히 확인해야 하는데 ㅎㅎㅎ
감사합니다. ^^
Controller 는 ValidatesRequests Trait 사용하고
ValidatesRequests , AuthValidatesRequests 에는 같은 validate 라는 메소드가 있으면