【发布时间】:2013-10-22 18:36:38
【问题描述】:
PHP 有 get_call_class();这将返回所调用的类的名称。是否有返回被调用方法名称的函数?例如,我有一个父类:
class Parent
{
public function __construct()
{
echo get_called_class(); // echos "Child"
// how do I echo "myMethod"
}
}
然后我有一个孩子父母:
class Child extends Parent
{
public function myMethod()
{
}
}
如果我打电话:
new Parent();
如何获取从 __construct 调用的方法的名称 - 在本例中为“myMethod”?如果我使用__FUNCTION__,它会返回Parent::__construct。
编辑:我试图让被调用的类和方法自动传递给视图函数。所以在我的控制器动作中,我可以拥有:
$this->render();
代替:
$this->render('account/new');
我的 __construct 会自动设置
$controller = "account"; // from get_called_class();
$action = "new"; // gotten how?!
【问题讨论】:
-
你为什么要这样做?
-
为什么需要这个?它暗示了一种设计气味
-
创建对象时,__construct 被调用...
-
您的代码实际上并没有调用
myMethod... -
我感觉你试图以错误的方式解决这个问题,但这个想法是有效的。我会做的是让视图查询类似于请求,以便它可以尝试确定模板。你的请求对象应该有一个控制器和一个它想要调用的方法,所以你的视图对象也应该查看请求以收集它自己的信息。