В PHP 5 есть возможность использования контроля типов. При передаче параметром есть возможность проверить данные на такие типы: объекты (путем указания имени класса в прототипе функции), интерфейсы, массивы, колбеки с типом callable (начиная с PHP 5.4).
Пример использования:
<?php
class MyClass {
public function names(array $names) { // тип array
$res = "<ul>";
foreach($names as $name) {
$res .= "<li>{$name}</li>";
}
return $res .= "</ul>";
}
public function otherClassTypeFunc(OtherClass $otherClass) { // тип OtherClass
return $otherClass->var1;
}
}
$obj = new MyClass;
$names = array(
'Иван Андреев',
'Олег Симонов',
'Андрей Ефремов',
'Алексей Самсонов'
);
echo $obj->names($names); // работает
$names = "Олег Симонов";
// получим фатальную ошибку: Argument 1 passed to MyClass::names() must be of the type array, string given
echo $obj->names($names);
// получим фатальную ошибку: Argument 1 passed to MyClass::names() must be an instance of OtherClass, string given
echo $obj->otherClassTypeFunc("test string");
?>