PHP:如何从构造函数中调用方法?
PHP已将get_称为_class();它将返回调用的类的名称。是否有函数返回被调用方法的名称?例如,我有一个父类:PHP:如何从构造函数中调用方法?,php,class,methods,Php,Class,Methods,PHP已将get_称为_class();它将返回调用的类的名称。是否有函数返回被调用方法的名称?例如,我有一个父类: class Parent { public function __construct() { echo get_called_class(); // echos "Child" // how do I echo "myMethod" } } 然后我有一个孩子的父母: class Child extends Parent {
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();
如何获取从_构造调用的方法的名称?在本例中为“myMethod”?如果我使用\uu函数
它将返回父项::\uu构造
编辑:我试图让被调用的类和方法自动传递给视图函数。因此,在控制器操作中,我可以:
$this->render();
而不是:
$this->render('account/new');
我的_构造将自动设置
$controller = "account"; // from get_called_class();
$action = "new"; // gotten how?!
我想你可以使用
\uuuuuuuuuuuuuuuuuuuuu方法
否则,正如其他人提到的,它应该返回_构造。正如DCoder所写,您根本不需要调用myMethod()。
您构造的是父类对象,而不是子类对象,因此不可能以任何方式从子类中获取任何函数名或一般任何内容。简单函数以“filename:[class->][function():]”的形式获取字符串
用法如下:
<?php
function debug($str) {
echo get_caller_info() . $str . "<br>\n";
}
?>
摘自我最好的朋友。你为什么要这样做?你为什么需要这个?它建议一种设计,当你创建一个对象时,_构造被调用…你的代码实际上并没有调用myMethod
…我感觉你试图以错误的方式解决这个问题,但这个想法是有效的。我要做的是让视图查询类似于请求,以便它可以尝试确定模板。你的请求对象应该有一个控制器和一个它想要调用的方法,所以你的视图对象也应该查看请求来收集它自己的信息。对,我希望它返回“myMethod”而不是“\uuu construct”。在这种情况下,我认为这个函数可能更有用:我希望不使用debug\u backtrace,但这似乎是唯一的方法。
<?php
function debug($str) {
echo get_caller_info() . $str . "<br>\n";
}
?>