Метод класса PHP обрабатывает параметр как объект вместо строки / динамически интерпретируя тип данных параметра

Я обнаружил что-то новое сегодня.

У меня есть класс PHP с типичными членами, частные, открытые и защищенные методы.

Один из методов заключается в следующем:

protected function processThis($dataString)
{
   $dataStringJson = json_decode($dataString);

}

И это выдает предупреждение:

json_decode () ожидает, что параметр 1 будет строкой, объект указан в.../File.php в строке xxx

Подождите секунду, разве PHP не типизирован свободно и динамически интерпретируется?

1 ответ

Решение

Конечно, это так, но есть некоторые функции, в которых лучше предупредить людей, что они делают что-то странное. Вы также получите предупреждения для $f = "1"; array_shift($f);,

Если ты хочешь json_decode просто работать, тогда приведение к строке достаточно просто:

protected function processThis($dataString)
{
   $dataStringJson = json_decode(''.$dataString);
}
Другие вопросы по тегам