시나리오 :특성 함수를 재정의하고 재정의 된 함수에서 호출하는 방법은 무엇입니까?
trait A {
function calc($v) {
return $v+1;
}
}
class MyClass {
use A;
function calc($v) {
$v++;
return A::calc($v);
}
}
print (new MyClass())->calc(2); // should print 4
이 코드는 작동하지 않습니다, 나는 그것이 상속 같은 특성 함수를 호출 할 수있는 방법을 찾을 수 없습니다. 나는 self::calc($v)
, static::calc($v)
, parent::calc($v)
, A::calc($v)
를 호출하고 다음과 같은 시도 :
trait A {
function calc($v) {
return $v+1;
}
}
class MyClass {
use A {
calc as traitcalc;
}
function calc($v) {
$v++;
return traitcalc($v);
}
}
아무것도 작동하지 않습니다.
그것이 작동되도록 할 수있는 방법이 있나요 아니면 완전히이 :)
딱! 고맙습니다! 분명히 내 두뇌는 녹아 내렸다. :) – Shu
명확히하기 위해 - 클래스가 동일한 메소드를 정의하면 자동으로 특성을 재정의합니다. 이 특성은 @ircmaxell이 비어있을 때 언급하는 것처럼 메서드를 채 웁니다. – Yehosef
아직 알려지지 않은 이유로이 사실은 내가 이것을 적용한 특성을 완전히 망쳐 놓았습니다. 특성을 가져 오는 다른 방법은 이렇게 할 때 예상대로 작동하지 않을 수 있습니다. –