Сделать класс динамическим, используя переменную между ними

Большинство моих классов в группе имеют одно и то же имя. CRMFirstSecondExternal или CRMSecondThirdExternal и так далее. Теперь мне нужно сохранить FirstSecond или SecondThird в переменной $, а затем использовать эту переменную $ между именами классов, чтобы сделать правильный вызов этого класса.

use Escalon\Bundle\Admin\CRMBundle\Helper\CRMTravelExpenseExternal;
private function deletePreviousSchedule( $params )
{
$queryParams = array();
$em = $this->getDoctrine()->getManager();

if($params['bundleAndTableName'] == 'EscalonAdminCRMBundle:ClientServiceTe')
{
$helper = 'TravelExpense';
}
//$helper = preg_replace("/[^a-zA-Z]/", "", $helper);
$crmEntityObject = new CRM.$helper.External;
$crmEntityObject -> deletePreviousScheduleExternal($params);
}

Ошибка: неустранимая ошибка: необработанная ошибка: класс ‘Escalon \ Bundle \ Admin \ CRMBundle \ Controller \ CRM’ не найден в.

0

Решение

Проблема в том, что имя класса не объединено правильно. Попробуйте эту функцию

private function deletePreviousSchedule($params)
{
$queryParams = array();
$em = $this->getDoctrine()->getManager();

if($params['bundleAndTableName'] == 'EscalonAdminCRMBundle:ClientServiceTe')
{
$helper = 'Escalon\Bundle\Admin\CRMBundle\Helper\CRMTravelExpenseExternal';
}

$crmEntityObject = new $helper();
$crmEntityObject->deletePreviousScheduleExternal($params);
}

Вы можете найти больше документации по этому вопросу здесь — http://php.net/manual/en/language.namespaces.dynamic.php

Также возможно сделать

use Escalon\Bundle\Admin\CRMBundle\Helper\CRMTravelExpenseExternal;
private function deletePreviousSchedule($params)
{
$queryParams = array();
$em = $this->getDoctrine()->getManager();

if($params['bundleAndTableName'] == 'EscalonAdminCRMBundle:ClientServiceTe')
{
$helper = 'TravelExpense';
}

$className = "Escalon\Bundle\Admin\CRMBundle\Helper\CRM{$helper}External";
$crmEntityObject = new $className();
$crmEntityObject->deletePreviousScheduleExternal($params);
}
1

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

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

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