2013-05-06 3 views
5

처음 내가 동적 create_function를 사용하려고하고 있어요 통과 지금,별로 성공은빌 - 이해 create_function() - 단순 변수

내 기능 :-) 이것이다 : 최대

function o99_brsa_custom_widgets() { 
     global $wp_meta_boxes; 
     global $o99_brsa_options; 

     for($i=0; $i> count($o99_brsa_options[content]); $i++) { 

      $widgt_id = 'o99_dashboard_widget_dyn' . $i; 
      $widgt_name = 'obmek99 widget name' . $i; 
      $out = $o99_brsa_options[content][$i]; 
      $f = create_function(' $out ',' global $out; echo $out;'); 
      do_the_widgets($widgt_id, $widgt_name, $f); 
     } 
    } 

do_the_widgets() 동작은 직접 반향 만 허용하고 위젯의 내용을 인쇄합니다.

$o99_brsa_options[content]$i 개의 요소가있는 검증 된 배열입니다 (각각 내용이 있습니다).

이상한 것은 $i$widgt_id$widgt_name에 노력하고 있지만 create_function()에 내가 모든 위젯에 인쇄 된 같은 값을 얻을 수 있다는 것입니다. (echo $out)

내가 지구 내부 create_function()을 사용하고 (새로운 기능에 대한 간단한 변수를 전달하는 방법을 모르는 것 같다,하지만 지금은 적은 데 도움이됩니다.

그럼,이 내 실수/오해/오용 이제 :-) ??

+0

'$ out'이 전역 변수가 될 경우, 인수로 전달하는 것은 무엇입니까? – prodigitalson

+0

어떻게 든, 나는, 아무 것도 인쇄하지 못한다. .. –

+1

글쎄, 만약 당신이 전역으로 사용하려고한다면, 그 값은 이미 함수 밖에서 설정되어있을 것이다. 수정은 그때뿐만 아니라 세계적으로 적용될 것입니다. 인수를 전달하기 만하면 전역을 제거하십시오. 인수의 이름을 변경하고 함수 안에서'$ out'을 수정해야 할 경우. 예 :'create_function ('$ arg', 'global $ out; echo $ out. $ arg;'); ' – prodigitalson

답변

19

create_function 그가 hello would 썼다 때문에 PeeHaa埽 got a beer는, 세계는 더 나은 경우 지금은 어느 날 감사 것 closures

$f = function ($out) { 
    echo $out; 
}; 

$f("Welcome"); 

를 사용하십시오, 그러나 당신은 당신이 경우 create_function를 사용할 수 stone age, kaᵠ used pen and paper to write applications 동안이었다 Gordon (우리에게를 괴롭게 여기 전송 과거 기계) 그는이

$fn = create_function(
    '$x', 
    'return $x; } $foo = 42; function foo($int) { return $int; ' 
); 
을 작성하는

See Live Demo

+1

:-) 나는 당신을 이미 지금 감사하고있다 :-). PHP 5.2.9에 대한 지원이 필요한 경우 어떻게해야합니까? –

+0

> = 5.3 ... – smassey

+1

'PHP 5.2.9 '에 얼마나 많은 버그가 있습니까? 나는 당신이 즉시 업그레이드해야한다고 생각합니다. 왜냐하면 만약 당신이이 작업을한다면 더 많은 문제들이 따르게 될 것이기 때문입니다. – Baba