Я изучаю PHP, и мне нужна помощь по проблеме глобальной переменной / области видимости. Мне нужно получить доступ к значению $myvars
во внешней функции:
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
global следующим образом:
function inner($atts) {
global $myvars;
$myvars = $atts['mydata'];
}
Но я не понял этого. Есть предложения?
Дополнительная информация:
Если у кого-то есть лучший способ решения моей проблемы, чем использование вложенных функций, я бы хотел это услышать.
Это для плагина WordPress для моего сайта. Короче говоря, мне нужно передать $atts
в сценарий JavaScript.
Long Story: add_shortcode()
линия вызывает set_att_func()
и дает мне доступ к $atts
. Чтобы передать $atts
в js, я буду использовать функцию WordPress 'wp_localize_script()
.
Но эту функцию можно вызывать только в том случае, если параметр сценария, на который ссылается вызов wp_localize_script()
, был поставлен в очередь в wp_enqueue_script()
- по крайней мере, насколько я могу судить. Я безуспешно пытался перевести wp_localize_script()
и wp_enqueue_script()
на * 1030. Итак, я пытаюсь получить $atts
в outer()
, где находятся вызовы wp_localize_script()
и wp_enqueue_script()
.
Если есть более простой и легкий способ доступа к $atts
в outer()
, дайте мне знать.