Php 获取当前正在执行的方法

Php 获取当前正在执行的方法,php,oop,Php,Oop,我是OOP的新手,我正在尝试获取当前正在执行的类和方法的名称。例如: <?php class ParentExample { function __construct() { echo get_class($this) . '<br />'; echo __METHOD__; exit; } } class ChildExample extends ParentExample { public

我是OOP的新手,我正在尝试获取当前正在执行的类和方法的名称。例如:

<?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']);