1
매직 메서드를 통해 실행되는 정적 메서드를 호출하는 함수를 만드는 클래스가 있습니다. 문제는 기능이 한 그들을 호출하는 클래스보다는 클래스의 다른 유형에서 그대로 작동하지만 내가 같은 클래스의 정적 함수를 호출하는 경우 모든 기능이 반환됩니다입니다 1.매직 정적 함수에 문제가 있음
class Test {
public function static __callStatic($name, $params) {
return 2;
}
public function __call($name, $params) {
return 1;
}
public function Test1() {
return Test::GetTwo();
}
}
class Test2 {
public function Test() {
return Test::GetTwo();
}
}
$t = new Test();
echo $t->Test1(); //prints 1 should be 2
$t2 = new Test2();
echo $t->Test(); //prints 2 as it should
경우에도 정적 메서드 GetTwo() Test1() 같은 범위에서 함수를 호출하는 경우 여전히 1 얻을 개체를 반환합니다. 어느 누구도이 문제에 빠지니?
그런데 당분간 __callStatic을 실행하기 위해 __call 함수에서 리디렉션을 넣을 것입니다. 그것이 정적이라고 부르는 것을 알고 있다고 생각하면 __callStatic을 먼저 시도 할 것입니다. –
은 리디렉션이 작동하는 것처럼 보입니다. PHP가 기능을 찾는 방법의 순서를 지적 해 주셔서 감사합니다. 솔루션을 찾는데 도움이되었으므로 답변을 드리겠습니다. –
self :: $ 변수를 사용하여 현재 클래스의 정적을 호출합니다. 클래스 이름 :: $ 변수 –