PHP:如何获取构造函数调用的方法?

2024-04-04

PHP 有 get_used_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?!

获取格式为“filename: [class->][function(): ]”的字符串的简单函数

<?php
function get_caller_info() {
    $c = '';
    $file = '';
    $func = '';
    $class = '';
    $trace = debug_backtrace();
    if (isset($trace[2])) {
        $file = $trace[1]['file'];
        $func = $trace[2]['function'];
        if ((substr($func, 0, 7) == 'include') || (substr($func, 0, 7) == 'require')) {
            $func = '';
        }
    } else if (isset($trace[1])) {
        $file = $trace[1]['file'];
        $func = '';
    }
    if (isset($trace[3]['class'])) {
        $class = $trace[3]['class'];
        $func = $trace[3]['function'];
        $file = $trace[2]['file'];
    } else if (isset($trace[2]['class'])) {
        $class = $trace[2]['class'];
        $func = $trace[2]['function'];
        $file = $trace[1]['file'];
    }
    if ($file != '') $file = basename($file);
    $c = $file . ": ";
    $c .= ($class != '') ? ":" . $class . "->" : "";
    $c .= ($func != '') ? $func . "(): " : "";
    return($c);
}
?>

用法如下:

<?php
function debug($str) {
    echo get_caller_info() . $str . "<br>\n";
}
?>

取自PHP手册 http://uk.php.net/manual/en/function.debug-backtrace.php这是我最好的朋友。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP:如何获取构造函数调用的方法? 的相关文章