Переход к PHP5 - Типизация пареметров функций на уровне классов
ОГЛАВЛЕНИЕ
Типизация пареметров функций на уровне классов
Для параметров функций можно задавать класс, объект которого может быть передан по этому параметру. Во время работы скрипта, конструкция
function myFunction(MyClass $obj) {
}
function myFunction($obj) {
if (!($obj instanceof MyClass || $obj == null)) {
die('Argument 1 must be an instance of ClassName');
}
}
При этом instanceof распостраняется не только на имя класса, но и на всех его предков и реализуемые интерфейсы.
Например, следующий код выполнится без ошибок:
interface Editable {
function edit();
}
abstract class View {
abstract function createView();
}
class NewClass extends View implements Editable {
function createView() { }
function edit() { }
function createMyView(View $obj) { }
function doEdit(Editable $obj) { }
}
$c = new NewClass();
$c->createMyView($c);
$c->doEdit($c);