首页 > 解决方案 > 函数中未定义的数组变量

问题描述

我正在尝试$args_array在匿名函数和常规函数中使用变量。

该变量是在顶层声明的,但是当我尝试在这些函数中使用它时,我收到一个关于该变量未定义的错误。

这是我在 IDE 中收到的警告: 在此处输入图像描述

这是我的代码:

$args_array = array(
    'endpoint' => 'my_endpoint',
    'url' => 'my_url',
    'api_key' => 'my_api_key',
    'api_value' => 'my_api_value'
);

add_action( 'rest_api_init', function () {
    register_rest_route( 'api', '/semir/', array(
        'methods' => 'GET',
        'callback' => 'semirs_function',
        'args' => $args_array
    ));
});

function semirs_function() {
    return $args_array;
}

标签: phpwordpress

解决方案


在动作挂钩回调中运行时,该变量 ( $args_array) 超出范围。

您需要使用use构造从父范围继承变量。

例如:

add_action( 'rest_api_init', function() use( $args_array ) {
    register_rest_route( 'api', '/semir/', [
        'methods' => 'GET',
        'callback' => 'semirs_function',
        'args' => $args_array
    ]);
});

由于您正在使用另一个需要使用该变量来返回它的函数,因此您需要将它传递给那个函数,因此它是其范围的一部分:

function semirs_function($args) { return $args; }

推荐阅读