몇 달 전에 static 메서드가 호출 될 때마다 호출되는 PHP 함수에 대해 읽었습니다. 클래스 인스턴스가 인스턴스화 될 때 호출되는 __construct
함수와 비슷합니다. 그러나, 나는 PHP에서이 기능을 처리하는 기능을 찾지 못하는 것 같습니다. 그런 기능이 있습니까?PHP의 정적 메서드 대신 생성자 대체
답변
는이 같은 것을 __callStatic()으로 재생하고 수행 할 수 있습니다
class testObj {
public function __construct() {
}
public static function __callStatic($name, $arguments) {
$name = substr($name, 1);
if(method_exists("testObj", $name)) {
echo "Calling static method '$name'<br/>";
/**
* You can write here any code you want to be run
* before a static method is called
*/
call_user_func_array(array("testObj", $name), $arguments);
}
}
static public function test($n) {
echo "n * n = " . ($n * $n);
}
}
/**
* This will go through the static 'constructor' and then call the method
*/
testObj::_test(20);
/**
* This will go directly to the method
*/
testObj::test(20);
이 코드를 첫 번째 '_'실행 정적 '생성자'앞에는 어떤 방법을 사용. 이것은 단지 기본적인 예일 뿐이지 만 __callStatic
을 사용할 수 있지만 더 잘 작동합니다.
행운을 빈다.
__callStatic()을 참조 할 수 있습니까? 이 ... 정의되지 않은 정적 메서드 호출을 처리 할 수있는 마법의 방법으로 보이기 때문에 http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods
은 아마도,하지만,
나는 이것이 내가 찾는 방법이 아닌가 걱정된다. 답장을 보내 주셔서 감사합니다. –
__callStatic()가 호출되지 : 난 그냥 PHP 매뉴얼이 발견 매번 당신은 클래스의 기존 정적 메서드를 호출하지 않습니다.
필자는 PHP 매뉴얼에서이 메소드를 다소 오래 전에 발견했지만, 언급하지 않았지만 존재하지 않는 정적 메소드가 호출 될 때만 호출됩니다. –
- 1. 정적 메서드 및 싱글 톤 대체 데이터베이스에 대한 대체 솔루션
- 2. PHP의 정적 인스턴스
- 3. 인터페이스의 생성자 메서드
- 4. PHP의 정적 클래스 이니셜 라이저
- 5. VB.NET의 정적 생성자
- 6. 자바 정적 인스턴스 생성자?
- 7. 정적 블록 내부의 생성자
- 8. 전체 어셈블리의 정적 생성자
- 9. 정적 생성자 및 예외
- 10. PHP의 생성자에서 다른 생성자 호출
- 11. PHP의 다른 네임 스페이스에있는 클래스에서 정적 메서드 호출
- 12. PHP의 도우미 클래스 - 정적 메서드 대 표준 함수
- 13. PHP의 정적 ReflectionClass?
- 14. PHP의 정적 클래스에 쓰기
- 15. PHP의 정적 메소드 연결하기
- 16. PHP의 정적 멤버 초기화
- 17. PHP의 정적 변수 변수
- 18. jQuery 대체 Prototype 메서드
- 19. creationcomplete의 대체 메서드
- 20. 정적 및 비 정적 메서드
- 21. 구문 분석 메서드 또는 오버로드 생성자
- 22. 서비스 레이어 대신 Ruby 대체
- 23. 자바에서 PHP의 연관 배열 대체
- 24. DOMNode를 PHP의 DOM 클래스로 대체
- 25. PHP의 __autoload 기능을 대체 하시겠습니까?
- 26. 정적 클래스 라이브러리 대체
- 27. 싱글 톤을 없애는 C++ : 펑터와 정적 메서드 대신
- 28. 정적 메서드 대신 싱글 톤을 사용하는 이유는 무엇입니까?
- 29. 생성자 대신 getInstanceOf를 사용하는 경우
- 30. C# 정적 생성자 순서 지정
그것은 내가 원하는 바가 아니지만 그것이 내가 찾는 것에 가장 가깝다고 생각합니다. 고마워, 아디. –
문제 없습니다, 도와줬으면합니다. –