이 질문에 대한 세부 사항으로 들어가기 전에 나는 이것을 한 번도 본 적이 없다는 점을 지적하고 싶습니다. 실제로이 방법을 실제로 사용할 수 있는지 궁금해합니다. 그리고 만약 그렇다면, 그것을하는 방법에 대해 가야합니다.함수에 전체 범위를 전달하는 방법이 있습니까
저는 현재 템플릿 로더에 앉아서 그것을 작성하기 위해 HAML 파일 형식을 약간 수정하고 몇 가지 논리 연산자 (주로 루프)로 확장했습니다. 그렇게 효율적으로하기 위해 필자는 템플릿 파서에 매개 변수 목록을 전달해야합니다. 가능하면이 매개 변수를 사용하지 않는 것이 좋습니다. 대안에 대한 브레인 스토밍을하는 동안 아이디어는 아마도 어쩌면 그 기능이 호출 된 범위를 참조하는 것이 가능했을 것입니다.
현재 파일 용 템플릿 파서를 다음과 같이 호출하고 있습니다. test()
이 경로라고 가정합니다.
function test() {
$q = $UserModel->tether($userID)->fetchPermissions();
Util::Templating()->parse("file.haml");
}
필자가 피하려고하는 것은 두 번째 매개 변수로 대용량 배열을 전달하지 않고 $ q에 액세스 할 수 있다는 것입니다. 원래의 생각은 parse()
이 자체 호출이 아니라 원래 호출 된 범위 (여기서는 test
)를 상속하는 방법이있을 수 있다는 것입니다. 이것을 관리 할 수있는 방법이 있습니까? 그렇다면 효율성은 얼마나됩니까?
아주 나쁜 생각 같습니다. http://php.net/manual/en/book.reflection.php에서 뭔가있을 수 있습니다. 그러나 그것은 매우 느릴 것입니다. –
@E_p : 바로이게 제가 측정하려고하는 것입니다 : 이와 같은 방법의 효율성. 배열 버전의 5-10 % 이상인 경우에는 아무 것도 할 수 없습니다. 결국 편의는 편리합니다. –
리플렉션에 어울리는 지 확신 할 수 없습니다. 문제의 핵심은 호출 수신자 범위를 호출 수신자 또는 호출 수신자로부터 참조하는 방법입니다. 솔직히 말해서이 작업을 신뢰할 수 있고 모호하지 않게 수행 할 방법이 없다는 것을 알고 있습니다. –