带有可选参数的php函数使用stdClass

时间:2013-06-17 20:31:49

标签: php function parameter-passing stdclass

假设我有一个函数,例如:[$datastdClass()]

function test_1{
    ...
    ...
    if (somecondition){
        $data->name = NULL;
        test_2($data->name);
    }
    else{
        $data->name = 'hello';
        test_2($data->name);    
    }
    ...
    ...
}

function test_2($data){
    if (!empty($data->name)){
        test_3($data->name);
    }
    else{
        test_3();
    }
}

function test_3($s = ''){
    if (!empty($s)){
        //do something
    }
    else{
        $s .= 'World'; 
    }
}

test_3是带有可选参数的函数。 但是,我收到错误:Object of class stdClass could not be converted to string

1 个答案:

答案 0 :(得分:1)

我假设您以以下形式调用您的函数:

$data = new stdClass();
test_3($data);

当你最终进入else语句时,这就失败了,你无法将stdClass()连接到一个字符串(在本例中为'World')。

更多评论表明您的实际函数调用是test_3($data->name)$data->name可能是stdClass()而不是可以与'World'连接的字符串。

作为参考,如果您有错误,提供错误对应的实际行号会很有帮助。 。 。我猜这个错误是由于concat,因为那是我唯一需要stdClass()到字符串转换的地方。