PHP 5.3에서이 정적 '상속'에 약간의 문제가 있습니다. static 클래스에 정적 함수가 있는지 테스트해야하지만 부모 정적 클래스에서 테스트해야합니다.php5.3 정적 상속에 도움이 필요하십니까
필자는 '정적'키워드를 사용하여 'this'키워드를 시뮬레이션 할 수 있습니다. 함수가 있는지 테스트 할 수있는 방법을 찾을 수 없습니다. 나는 그렇지 B::parse();
아이디어는 서브 클래스가 함수가있는 경우, 그것을 사용하는 것입니다, 가 사용되지 않습니다를 실행해야합니다 그래서 지금
// parent class
class A{
// class B will be extending it and may or may not have
// static function name 'func'
// i need to test for it
public static function parse(array $a){
if(function_exists(array(static, 'func'){
static::func($a);
}
}
}
class B extends A {
public static function func(array $a){
// does something
}
}
: 여기
은 예입니다. 내가 시도 :function_exists(static::func){}
isset(static::func){}
이 2 작동하지 않습니다.
아이디어가 있습니까? 그건 그렇고, 문제 해결 방법으로 람다 함수를 전달할 가능성을 알고 있습니다. 내 상황에서는 옵션이 아닙니다.
저는 지금 당장 생각할 수없는 매우 간단한 해결책이 있다고 생각합니다.
는 지금은
is_callable (배열 ('정적', ' func ')) 잘 작동했습니다. 나는 'func'이 존재하지 않는다면 is_callable은 변수가 정의되지 않았다는 경고를 적어도 올릴 수 있다고 생각했지만 그렇지 않았다. func 함수가 존재하지 않으면 false를 반환하는데, 이는 좋은 결과입니다. – Dmitri