참고 :이 quesiton을 작성한 덕분에 이미 새로운 언어 기능을 사용하는 데 열성적이었습니다. 훨씬 깨끗한 솔루션은 전략 패턴을 대신 사용하고있었습니다 ... 여전히이 문제에 대해 적절한 방법이 있는지 궁금합니다.런타임에서 호출 할 수있는 매개 변수의 수를 얻는 방법은 무엇입니까?
TL : 모든 종류의 호출 가능 코드를 수동으로 typechecking하지 않고도 PHP의 범용 Callable을 반영 할 수 있습니까?
PHP 5.4에서는 새로운 유형 힌트 인 callable이 있습니다. 이것은 많은 재미로 보인다.
이<?php
public function setCredentialTreatment(callable $credentialTreatment) {
// Verify $credentialTreatment can be used (ie: accepts 2 params)
... magic here ...
}
?>
지금까지 생각의 내 라인이 호출에 형식 일련의 검사를 수행하고, 그 어떤 반사에서 추론했다 * 클래스가 사용하는 : 나는 다음을 통해이 사용을 거라고 생각 :
지금, 나에게 이것은 지나치게 복잡하다고 느낍니다. 내가 여기서하려고하는 것을 달성하기 위해 어떤 종류의 지름길을 놓치고 있습니까? 모든 통찰력을 환영합니다 :)
: 그것을 사용하는 방법에 대한
테스트 및 제안 사항은 아래에 포함되어 난이 도움이 되었으면 좋겠 :
테스트 및 전체에서의 결과 모든 호출 가능 객체에 대한 Reflection 객체를 가져 오는 도우미 함수를 작성했습니다. 이 함수의 코드는 당신과 거의 같습니다. – Benjamin
이 작업을 계속한다면 나는 몰라. 그러나 당신은 아마도 더 쉬운 패키지 차이점에 도움이되는 자신 만의 CallableReflection을 만들 것을 고려해 보았는가? – hakre
결국이 경로를 더 추구하지는 않았지만 재사용 가능한 CallableReflection을 만드는 것이 올바른 방향으로 나아가는 것처럼 보입니다. 어떤 시점에서 필자는 PHP의 Reflection 모듈이 이러한 라인을 따라 무언가를 제공 할 것으로 기대합니다. – kander