Получить имя вызываемого метода без __call

Есть ли способ получить имя вызываемого метода, используя отражение или что-то еще?

Предположим, у меня есть следующий класс:

abstract class FooController {

/**
* Current language
* @var string
*/
private $language;

/**
* Controller action called by framework
* @return string
*/
public function dosomethingAction()
{
$template = $this->getLocalizedTemplate();
//do something

return $template;
}

/**
* Builds template name using current
* action name and $language value
* @return string
*/
private function getLocalizedTemplate()
{
$ACTION_NAME; //how to obtain it?
$filteredActionName = preg_replace("/Action$/", "", $ACTION_NAME);
return $filteredActionName . "_" . $this->language . '.phtml';
}

}

0

Решение

Вы можете, если вы настроены на кодирование таким образом, попробовать debug_backtrace и разобрать класс, который назвал это. Я не собираюсь демонстрировать, так как это не то, что я бы рекомендовал.

Вместо этого вам следует вводить нужные вам данные. Вы по-прежнему используете функцию, поэтому здесь вы не нарушаете никаких принципов кодирования.

public function dosomethingAction()
{
$template = $this->getLocalizedTemplate('dosomethingAction');
//do something

return $template;
}

private function getLocalizedTemplate($action)
{
$filteredActionName = preg_replace("/Action$/", "", $action);
return $filteredActionName . "_" . $this->language . '.phtml';
}
2

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

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

По вопросам рекламы [email protected]