我有一个父类和一个子类。在父类中,我定义了一个函数f(),并希望在其中打印扩展父类的子类的名称以及调用此函数的子类名称。我这样做。
abstract class ParentClass {
public function f() {
$backtrace = debug_backtrace();
echo "Class: " . $backtrace[1]['class']) . "\n";
echo "Function: " . $backtrace[1]['function'];
}
}
class ChildrenClass extends ParentClass {
public function some_func() {
$this->f();
}
}
$o = new ChildrenClass;
$o->some_func();
它正确地输出了我:
Class: ChildrenClass
Function: some_func
问题是:我的解决方案是否合适,或者有更好的方法来实现这一目标?
我尝试使用__CLASS__
和__FUNCTION__
,但它总是给我一个父类的类名和函数名。
答案 0 :(得分:0)
如果您打印出$ backtrace var,您可能会看到它进入更多类
echo "Debug:<pre>".print_r($backtrace,true)."</pre><br />";
所以打电话
$backtrace[1]['class']
会起作用,但你可能会让它变得动态。类似的东西:
// Loop, pseudo-code
$i = 0;
$backtrace[$i]['class']
$i++;
答案 1 :(得分:0)