Метод класса 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);
}