函数名必须是字符串php?

时间:2017-10-15 18:39:16

标签: php scope

经过几个小时的谷歌搜索和搜索答案后,我放弃了,并对php非常沮丧,没有基本错误的支持。无论如何,这是我的功能,我做错了什么?

$accessToken = function(){
        $array = array(
            "foo" => "bar",
            "bar" => "foo"
        );

        $obj = json_encode($array);
        $obj = json_decode($obj);

        return $obj->foo;
};

$getInfo = function(){

        $code = $accessToken();
        return $code;


};

$getInfo();

我收到错误

  

注意:未定义的变量:第43行的C:\ inetpub \ wwwroot \ mysite \ lab \ cfhttp.php中的accessToken

     

致命错误:第43行的C:\ inetpub \ wwwroot \ mysite \ lab \ cfhttp.php中的函数名必须是字符串

3 个答案:

答案 0 :(得分:4)

$accessToken不在$getInfo()

范围内
$accessToken = function(){
        $array = array(
            "foo" => "bar",
            "bar" => "foo"
        );

        $obj = json_encode($array);
        $obj = json_decode($obj);

        return $obj->foo;
};

$getInfo = function($accessTokenFunction){

        $code = $accessTokenFunction();
        return $code;


};

$getInfo($accessToken);

答案 1 :(得分:2)

use ()在此范围内采用变量

$getInfo = function() use ($accessToken) {
    $code = $accessToken();
    return $code;
};

https://3v4l.org/BOtnf

答案 2 :(得分:1)

在PHP中,您通常以另一种方式定义函数。请尝试以下方法:

function accessToken() {
     $array = array(
          "foo" => "bar",
          "bar" => "foo"
     );

     $obj = json_encode($array);
     $obj = json_decode($obj);

     return $obj->foo;
}

function getInfo() {
     $code = accessToken();
     return $code;
}

getInfo();

您还可以在此处查看http://php.net/manual/en/functions.variable-functions.phphttp://php.net/manual/en/functions.user-defined.php