2013-03-14 14 views
-2

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

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

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

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

} 

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

json_decode() ожидает параметр 1, чтобы быть строка, данный объект в .../file.php on line xxx

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

+1

у вас есть __toString метод() в объекте – Anigel

+0

... да ...? Это не значит, что у него нет типов или что все магически работает со всем остальным. – deceze

ответ

1

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

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

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