Идея разименовывания объектов состоит в том, что можно создавать объект ‘на лету’ (т.е. динамически); обращаться к его методу, не создавая самого объекта, т.е. в виде переменной.
Рассмотрим пример. Есть два одинаковых класса. Есть обычная функция, куда передается имя класса (строка №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
Т.е. по сути происходит цепочка: создался метод — отработал — стерся из памяти.