Если вы используете магический метод __invoke
, вы можете вызвать объект, аналогичный функции, и он вызовет этот магический метод.
class Object{
function __invoke(){ return "hi"; }
}
$object = new Object;
$object2 = $object();
echo $object2; // echos hi
Это означает, что $object2
равно любомуэта функция возвращает.
По сути, вы вызываете функцию, но используете в качестве имени переменную.Итак:
function test(){ echo "hi"; }
$function_name = "test";
$function_name(); // echos hi.
В этом случае вы просто вместо этого вызываете объект.
Итак, что касается вашего вопроса, на самом деле это вообще не «клонирование», если толькоФункция 1013 * выглядит следующим образом:
function __invoke(){ return this }
В этом случае это будет ссылка на тот же класс.