Переход к PHP5
Страница 5. Типизация пареметров функций на уровне классов


Типизация пареметров функций на уровне классов

Для параметров функций можно задавать класс, объект которого может быть передан по этому параметру. Во время работы скрипта, конструкция

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);

 
« Предыдущая статья   Следующая статья »