我正在学习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