Функция php с необязательными параметрами, использующими stdClass

Предположим, у меня есть такая функция, как: [$data это stdClass()]

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 ответ

Решение

Я предполагаю, что вы вызвали свою функцию в форме:

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

Это терпит неудачу тогда, когда вы в конечном итоге в else оператора, и вы не можете объединить stdClass() со строкой (в данном случае "World").

Немного больше обзора предполагает, что ваш фактический вызов функции test_3($data->name), а также $data->name скорее всего, stdClass() вместо строки, которую можно объединить с помощью "World".

Для справки, если у вас есть ошибка, было бы полезно указать фактический номер строки, которой соответствует ошибка.,, Я предполагаю, что ошибка происходит из-за concat, так как это единственное место, где я вижу преобразование stdClass() в строку.

Другие вопросы по тегам