有没有办法获得调用的方法名称,使用反射或其他任何东西?
假设我有以下课程:
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 :(得分:2)
如果您按照这种方式进行编码,可以尝试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';
}