2012-07-17 4 views
1

줌라! 플러그인, 나는 정말 재미있는 것을 보았습니다. 이벤트 중 하나에 반환 값이 없지만 함수 내부에서 변수를 호출합니다. 사전 지식에 따르면 변수가 함수 내부에 전역 변수 인 경우에만 작동해야하지만 운영자는 함수 외부에서 변수를 호출 할 수 있습니다.함수에서 전역 변수가 아닌 변수를 호출 하시겠습니까?

편집 : 방금 함수 내부에서 액세스 한 변수가 매개 변수 중 하나 일 필요가 있음을 발견했습니다. 이 func_get_params() 또는 call_user_func() 수 있을까요?

호출 코드 :

$instance = JDispatcher::getInstance(); 
$instance->trigger(onJoomCalledEvent, array(&$link, $other_params)); 

플러그인 (조각) : (줌라!)

class plgMyPlugin extends JPlugin{ 

    onJoomCalledEvent($link, $other_params){ 
     $link = "Some Value Here"; 
     return false; 
    } 
} 

이 함수는 false를 반환 아직 어떻게 든 응용 프로그램 $ 링크의 값을 추출 할 수 있습니다. 어떻게 이뤄지나요? 이 pass by reference의보다

class plgMyPlugin extends JPlugin{ 

    onJoomCalledEvent(&$link, $other_params){ 
     $link = "Some Value Here"; 
     return false; 
    } 
} 

:

+1

문제의 (전체) 코드에 대한 링크를 게시 할 수 있습니까? – drew010

+0

이 작업을 수행하는 실제 코드는 Joomla의 일부이며 특히 JDisplatcher 클래스입니다. 위에서 추가 한 "호출 코드"는 플러그인을 호출하는 구성 요소의 코드입니다. – alecwhardy

+1

감사합니다. – drew010

답변

1

이 같은 플러그인 정의 모양을합니까. 실제로 위의 방법으로 호출 한 경우 참조로 전달되는 호출 시간이며 더 이상 사용되지 않으며 PHP 5.3부터 경고가 발생합니다.

관련 문제