Хороший синтаксис для создания нового объекта из метода

Существует ли ярлык для создания объекта из метода, возвращающего строку?

На данный момент я использовал это:

class MyClass {

/**
* @return string
*/
public function getEntityName() {
return 'myEntityName';
}
}

$myClassInstance = new MyClass();

// Need to get string
$entityName = $myclassInstance->getEntityName();

// And after I can instantiate it
$entity = new $entityName();

1

Решение

Существует сокращенный синтаксис для получения строки, но не для создания объекта из строки на сегодняшний день в PHP. Посмотрите следующий код, в который я также включил класс myEntityName:

<?php

class myEntityName {
public function __construct(){
echo "Greetings from " . __CLASS__,"\n";
}
}
class MyClass {

/**
* @return string
*/
public function getEntityName() {
return 'myEntityName';
}
}

$entityName = ( new MyClass() )->getEntityName();
$entity = new $entityName();

В одной строке код создает экземпляр объекта MyClass а также выполняет метод getEntityName, который возвращает строку $ entityName. Интересно, что если я заменил свой однострочный текст на следующий, он потерпит неудачу во всех версиях PHP, кроме виртуальной машины HipHop (hhvm-3.0.1 — 3.4.0):

$entityName = new ( ( new MyClass() )->getEntityName() );
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector