PHP匿名函数:未定义的变量

时间:2015-09-07 14:45:37

标签: php wordpress php-5.3

我有两个WordPress功能:

Notice: Undefined variable: wpb_set_post_views

但页面返回最后一行的UITabBarController

2 个答案:

答案 0 :(得分:3)

在PHP中处理Closures时,您需要确保将任何超出范围的变量放入Closure范围。这与JavaScript不同,其中闭包可以访问PHP范围中声明的变量。

您的匿名功能应如下

function() use ($variableNeeded) { }

然后您可以访问该变量。

重要的是要记住,这是一个按值传递的方案,因此对该变量的任何更改都不会反映在闭包之外,因此您需要通过引用传递以进行更改。

function() use (&$variableNeeded) { }

答案 1 :(得分:1)

使用global关键字访问函数中的外部变量。

所以你的代码将是

add_action( 'wp_head', function ($post_id) {
    if ( !is_single() ) return;
    if ( empty ( $post_id) ) {
        global $post;
        $post_id = $post->ID;
    }
    global $wpb_set_post_views;
    $wpb_set_post_views($post_id);
});

add_action( 'wp_head', function ($post_id) {
        if ( !is_single() ) return;
        if ( empty ( $post_id) ) {
            global $post;
            $post_id = $post->ID;
        }
        $wpb_set_post_views = $GLOBALS['wpb_set_post_views'];
        $wpb_set_post_views($post_id);
    });

请参阅http://php.net/manual/en/language.variables.scope.php