Php 获取当前正在执行的方法
我是OOP的新手,我正在尝试获取当前正在执行的类和方法的名称。例如:Php 获取当前正在执行的方法,php,oop,Php,Oop,我是OOP的新手,我正在尝试获取当前正在执行的类和方法的名称。例如: <?php class ParentExample { function __construct() { echo get_class($this) . '<br />'; echo __METHOD__; exit; } } class ChildExample extends ParentExample { public
<?php
class ParentExample
{
function __construct()
{
echo get_class($this) . '<br />';
echo __METHOD__;
exit;
}
}
class ChildExample extends ParentExample
{
public static function test()
{
echo 'hello';
}
}
call_user_func_array([new ChildExample, test]);
这是我得到的结果:
ChildExample
ParentExample::__construct
我已经看过了,但我不知道如何解读结果,或者这是否是我所需要的。有没有更简单的方法来实现我的目标
编辑:根据答案,我认为我的问题不清楚。我希望ParentExample构造函数告诉我被调用方法的名称。这可能吗
我希望ParentExample构造函数告诉我被调用方法的名称。这可能吗
不,这是不可能的。构造函数是在构造对象时执行的,这意味着它是在对对象进行任何方法调用之前执行的
echo\uuuuu方法
在\u构造
方法中。由于\uuuu方法\uuuu
始终具有其所在方法的值,因此无法打印`
创建对象时,将调用\u construct
。您可以使用new
操作符创建对象。这与静态测试方法无关
您必须将echo\uuuuu方法\uuuu
放入test
方法中才能实现此目的;)
应使用字符串指定方法的名称:
call_user_func_array([new ChildExample, "test"]);
// Since you're not passing any arguments, this will do:
call_user_func_array([new ChildExample, "test"]);
试试这个:
class ParentExample
{
function __construct()
{
echo get_class($this) . '<br />';
}
}
class ChildExample extends ParentExample
{
public static function test()
{
echo __METHOD__;
}
}
call_user_func([new ChildExample, 'test']);
类父类示例
{
函数_u构造()
{
echo get_类($this)。“
”;
}
}
类ChildExample扩展了ParentExample
{
公共静态功能测试()
{
回声法;
}
}
调用用户函数([new ChildExample,'test']);
请注意,我已经删除了父构造函数中的exit
调用,并从子类中回显了\uuuu方法\uuu
。如果不这样做,脚本将在实例化ParentExample
后立即结束
另外,如果您没有使用参数调用该方法,则应该使用call\u user\u func()
而不是call\u user\u func\u array()
我已经更新了我的问题。是否可以从父构造函数中获取被调用的方法?@mistermartin我已经更新了答案。不,不行。我已经更新了我的问题。是否可以从父构造函数中获取被调用的方法?
class ParentExample
{
function __construct()
{
echo get_class($this) . '<br />';
}
}
class ChildExample extends ParentExample
{
public static function test()
{
echo __METHOD__;
}
}
call_user_func([new ChildExample, 'test']);