获取当前的类和方法?

ajs*_*sie 58 php

我正在创建一个日志功能,将我的错误记录在一个文件中.

我认为它将包含发生错误的类和方法.

有没有办法记录发生错误的类和方法,所以我不必每次都手动输入?

acr*_*ron 80

我对PHP不大,但我相信它具有类似于C/C++的"魔术常量".看看这里:这似乎表明你可以使用

__LINE__, __FILE__, __FUNCTION__, __CLASS__, and __METHOD__
Run Code Online (Sandbox Code Playgroud)

  • 如果在函数的父类声明中调用,则返回父类,而不是扩展类 (3认同)
  • 您可以在此处找到所有预定义的常量:http://php.net/manual/en/language.constants.predefined.php (3认同)

Sea*_*ney 39

如果您在父/基类中,__CLASS__将返回不需要的父/基类名.在那种情况下,您可以使用get_class():

get_class($this)
Run Code Online (Sandbox Code Playgroud)

  • 即使您在父类中定义的方法中,这也会获取子类。 (2认同)

Tob*_*bia 9

在当前的PHP版本(5.5+)中,您应该使用 static::class

它在static和instance方法中都有效,并返回实际的类名,即使方法体是在超类中定义的.

  • 不要忘记“ self”和“ static”之间的区别。“静态”将引用它被调用的类,而“自我”是创建它的类。 (3认同)

Ken*_*Ken 7

__METHOD__在PHP5中使用常量


Tho*_*mas 5

get_called_class() get是当前的类.这可能也很有趣:debug_print_backtrace().


Mar*_*vel 5

在 Laravel 5 CLASS返回命名空间和类名,所以它是一个大字符串。所以这就是你如何在没有所有其他东西的情况下获得当前类

echo (new \ReflectionClass($this))->getShortName();
Run Code Online (Sandbox Code Playgroud)