2013-05-30 2 views
1

어쩌면 내가이 질문을 게시 할 때 내 마음을 잃어 버렸거나, 그냥 고위급 순간을 보내고 있다고 생각했습니다. 그러나 나는 아래에 게시 한 해답을 발견했다. 희망에 부딪쳐 다른 사람들을 도울 수있다.명시 적으로 정의되거나 구현되지 않은 경우 메소드가 존재할 수 있습니까?

FluentPDO 라이브러리 (https://github.com/lichtner/fluentpdo)를 사용하고 있습니다. 나는 그 기능의 한계를 밀고 있었고 문서는 약간 부족하다. 그래서 코드를 살펴보기 시작했습니다. SelectQuery :: select() 함수의 구현을 찾을 수 없었습니다. 설명서에서 언급했지만, 사용할 수 있었고 내부적으로 사용되었습니다.

선언이나 구현없이 함수 또는 메서드가 어떻게 존재합니까?

답변

2

대답은 PHP의 비정상적인 "오버로딩"방법에 있습니다.

메서드가 정의되어 있지 않지만 클래스에 __call() 메서드가 포함되어 있으면 __call()이 대신 호출되어 메서드 이름과 해당 인수가 전달됩니다. 이것이 FluentPDO가 사용하는 방법 중 일부입니다.

PHP의 설명서는 여기에 있습니다 :

http://www.php.net/manual/en/language.oop5.overloading.php#object.call

관련 문제