我正在创建一个日志功能,将我的错误记录在文件中。
我认为它将包含错误发生在哪个类和方法。
有没有办法记录发生错误的类和方法,所以我不必每次都手动输入?
答案 0 :(得分:76)
我对PHP不大,但我相信它有类似于C / C ++的“魔术常量”。看看here:这似乎表明你可以使用
__LINE__, __FILE__, __FUNCTION__, __CLASS__, and __METHOD__
答案 1 :(得分:39)
如果你在父/基类中,__CLASS__
将返回不需要的父/基类名。在那种情况下,您可以使用get_class()
:
get_class($this)
答案 2 :(得分:8)
在当前的PHP版本(5.5+)中,您应该使用static::class
它在static和instance方法中都有效,并返回实际的类名,即使方法体是在超类中定义的。
答案 3 :(得分:7)
在PHP5中使用__METHOD__
常量
答案 4 :(得分:5)
get_called_class()得到当前的课程。这可能也很有趣:debug_print_backtrace()。
答案 5 :(得分:2)
在Laravel 5中, CLASS 返回了命名空间和类名,因此它是一个大字符串。 所以这就是你如何在没有其他东西的情况下获得当前的课程:
echo (new \ReflectionClass($this))->getShortName();
答案 6 :(得分:0)
自 PHP 8.0 起,如果变量是对象,则有了新的方法:
$object::class