我正在學習PHP,我需要一些關於全局變量/作用域問題的幫助。我需要訪問外部函數的$myvars
值:需要幫助訪問PHP變量:變量作用域和全局變量
function outer() {
function inner($atts) {
$myvars = $atts['mydata'];
}
// I need to access the value of $myvars in here:
$jsonized = json_encode($myvars);
}
function set_atts_func($atts) {
inner($atts);
}
add_shortcode("my_short_code", "set_atts_func");
我像我可以簡化問題。這是一個WordPress插件的一部分。我試過$myvars
全球如下:
function inner($atts) {
global $myvars;
$myvars = $atts['mydata'];
}
但是,我還沒有弄明白。有什麼建議麼?
附加信息:
如果有人有解決我的問題不是使用嵌套函數的一個更好的方法,我很樂意聽到這種說法。
這是用於我的網站的WordPress插件。總之,我需要將$atts
傳遞給JavaScript腳本。
長篇小說:add_shortcode()
行呼籲set_att_func()
並讓我訪問$atts
。爲了將$atts
傳遞給js,我將使用WordPress'wp_localize_script()
函數。
但是,只有在wp_localize_script()
調用中引用的腳本參數已被列入wp_enqueue_script()
的範圍內,才能調用此函數 - 至少據我所知。我已經嘗試將wp_localize_script()
和wp_enqueue_script()
呼叫移至set_atts_func()
,但沒有任何運氣。所以,我試圖$atts
到outer()
,其中wp_localize_script()
和wp_enqueue_script()
調用。
如果有更簡單和更簡單的方法來訪問outer()
中的$atts
,請告訴我。
定義一個函數的另一個函數insode沒有意義 –
另請參閱[什麼是PHP嵌套函數?]的接受答案(http://stackoverflow.com/questions/415969/what-are-php-nested -functions-for) - TL; DR:他們沒有用,所以不要使用它們。 – Tomalak
@Col。彈片,感謝您的留言。我已經添加了一些額外的信息。如果您有建議或解決方案,我很樂意聽到它。謝謝。 – Laxmidi