설명하기가 조금 힘들지만 최선을 다할 것입니다. 클로저의 인스턴스를 만드는 가장 좋은 방법을 찾으려고합니다. 아래는 내가 만들고 폐쇄에 접근하고 방법의 예는 다음과 같습니다PHP 클로저 인스턴스 5.3
$myvar->parse('var1, var2', function() {
//my code
});
I 다음 쉼표를 폭발하고과 같이 배열에 넣어하여 문자열을 반복.
$array = array();
$array['var1'] = closure();
$array['var2'] = closure();
나중에 내 코드에 call_user_func
을 사용하여 기능을 실행합니다.
지금 내가 가지고있는 문제는 $array['var1']
에 액세스 할 때 아무런 문제없이 클로저가 호출된다는 것입니다.
그러나 $array['var2']
에 액세스하면 아무런 효과가 없습니다. 나는 많은 행운이없이 잠시 동안 다양한 웹 사이트를보고있었습니다. 포인터를 사용하거나 (성공하지 않고 시도해야합니까?) 어떻게 든 새 인스턴스를 만들어야합니까?
나는 현재 단지 내 서버에 5.3을 PHP로 액세스 할 수 있습니다, 그래서 당신이 가질 수있는 피드백과 조언을 주셔서 감사합니다 정말 거라고 5.4 :(
에서 멋진 물건을 사용할 수 없습니다.
: 당신의 구문 분석 기능 (왜 문자열이 아닌 배열을 가지고 가는가를)에서
, 난 당신이 원하는 것 같은데요? – Niko
다른 사람들이 답변에 나타 났으므로 귀하의 설명이 다소 실패합니다. 내가 볼 수있는 가장 시각적 인 차이점은 여러분이 게시 한 첫 번째 코드 예제와'closure()'표현식 사이의 차이입니다. 그들은 완전히 무관합니다. 따라서 예를 들어'var_dump (closure()); '가 출력하는 것을 알려줄 수 있습니다. – hakre
@Niko : PHP에서 클로저의 인스턴스는 함수 호출의 변수 또는 매개 변수를 따라 전달되고 전달 될 수있는 'Closure'유형의 객체의 인스턴스입니다. 원래, PHP 언어의 구현자는 버전 5에서 자세히 설명합니다.3은 closure가 Closure라는 새로운 유형의 객체라는 사실을 숨기려고했지만 PHP는 인터넷과 관련된 언어 였고 인터넷은 특정 기능 뒤에 숨겨진 많은 기능을 허용하지 않기 때문에 5.3에있는 "새로운"호출 가능 유형은 인스턴스가있는 'Closure'유형의 객체라는 사실을 대중이 인식하게되었습니다. – hakre