В компилируемых языках вроде Паскаля или Си я, описывая функцию, могу (и должен) строго задать тип входных параметров. Максимум, где я могу развернуться - использовать перезагрузку функций, прописывая несколько раз функцию с одним названием, но разным набором параметров.
В PHP же динамическая типизация даёт большой простор для фантазии, но это палка о двух концах.
Например, я пишу класс и хочу в один из методов передать параметр сложной структуры, например, многомерный ассоциативный массив или же объект. В принципе, я могу написать метод, который будет предполагать, что ему передали корректный параметр, и работать с ним сходу. Могу даже написать проверку на соответствие струтуре (грубо говоря,
isset($arrat['text_index'])
) и выдать ошибку в Run Time.
А вот могу ли я заставить интрпретатор проверять корректность переданного параметра и выдавать ошибки вроде таких?
Parse error, unexpected T_STRING, expecting T_SOMETHING