HP
HP
<code class="php">class Father { public function __construct() { echo "father<br>"; } } class Child extends Father { public function say() { echo "hello"; } static function say2() { echo "hello2"; } } // 调用对象方法需要先实例化对象 $child = new Child; call_user_func([$child, 'say']); // 可以直接调用类静态方法 call_user_func(['child', 'say2']);</code>
객체 메소드를 삭제하기 위해 클래스 정적 메소드를 직접 호출하는 것은 잘못된 작성 방식입니다. PHP5.5 이전에는 (아마도) 요구 사항을 충족하기 위해 최선을 다한 후 경고를 보고했지만, 5.5 이후에는 오류입니다.
call_user_func
메서드를 사용하면 클래스의 함수를 사용하므로 인스턴스화해야 합니다. 메서드로 직접 작성하는 경우에만 다음과 같이 작성할 수 있습니다.
<code>function develop($val){ if($val){ echo 'Successful'; } else { echo 'Fail'; } } call_user_func('develop', true);</code>
정적 메소드를 호출하는 방식으로 작성해야 합니다
인스턴스 메소드를 호출하려면
클래스를 인스턴스화해야 합니다
엄격 모드, PHP 버전에 주의하세요.