在PHP中打印可调用的名称或定义

问题描述 投票:1回答:1

PHP中的Callable可以有很多形式,比如对象,数组或包含函数名的字符串。

如果我在变量中得到这样的可调用,我怎样才能在日志中打印一些用户友好的“定义”。

想想这段代码:

call_user_func($callable);
$logger->log("Provided callable " . (string) $callable . " called");

问题是,这会引发错误,例如数组到字符串转换错误。打印出有关可调用内容的最佳方法是什么?

php callable
1个回答
1
投票

这样的事情应该有效:

function getCallableName($callable) {
    if (is_string($callable)) {
        return trim($callable);
    } else if (is_array($callable)) {
        if (is_object($callable[0])) {
            return sprintf("%s::%s", get_class($callable[0]), trim($callable[1]));
        } else {
            return sprintf("%s::%s", trim($callable[0]), trim($callable[1]));
        }
    } else if ($callable instanceof Closure) {
        return 'closure';
    } else {
        return 'unknown';
    }
}
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.