разименовывание объекта

Разименование объектов

Идея разименовывания объектов состоит в том, что можно создавать объект ‘на лету’ (т.е. динамически); обращаться к его методу, не создавая самого объекта, т.е. в виде переменной.

Рассмотрим пример. Есть два одинаковых класса. Есть обычная функция, куда передается имя класса (строка №2,5). В зависимости от имени класса создается соответствующий объект (строки №9,10). Далее вызываем метод нужного нам класса (строки №12,13). Т.е. вызывается функция deref, создается объект на лету, вызывается метод этого объекта, отрабатывает, после чего этот объект из памяти удаляется (см. строки №12,13).

class MyClass1 {
public function showClassName()
echo "Объект класса MyClass1";}
class MyClass2 {
public function showClassName()
echo "Объект класса MyClass2";}
function deref($obj) {
switch ($obj) {
case "MyClass1": return new MyClass1();
case "MyClass2": return new MyClass2();}
}
deref("MyClass1")->showClassName(); //Объект класса MyClass1
deref("MyClass2")->showClassName(); //Объект класса MyClass2

Т.е. по сути происходит цепочка: создался метод — отработал — стерся из памяти.




Добавить комментарий

Ваш e-mail не будет опубликован.