Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取当前类和方法?_Php - Fatal编程技术网

Php 获取当前类和方法?

Php 获取当前类和方法?,php,Php,我正在创建一个日志函数,将我的错误记录到一个文件中 我认为它将包含发生错误的类和方法 有没有办法记录发生错误的类和方法,这样我就不必每次手动键入错误?获取当前类。这可能也很有趣:。我对PHP不在行,但我相信它有类似于C/C++的“神奇常数”。看一看:这似乎表明你可以使用 __LINE__, __FILE__, __FUNCTION__, __CLASS__, and __METHOD__ 使用PHP5中的\uuuu方法\uuu常量,如果在父/基类中,将返回不需要的父/基类名称。在这种情况下,您

我正在创建一个日志函数,将我的错误记录到一个文件中

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


有没有办法记录发生错误的类和方法,这样我就不必每次手动键入错误?

获取当前类。这可能也很有趣:。

我对PHP不在行,但我相信它有类似于C/C++的“神奇常数”。看一看:这似乎表明你可以使用

__LINE__, __FILE__, __FUNCTION__, __CLASS__, and __METHOD__

使用PHP5中的
\uuuu方法\uuu
常量,如果在父/基类中,将返回不需要的父/基类名称。在这种情况下,您可以使用:

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


它可以在静态方法和实例方法中工作,并返回实际的类名,即使方法体是在超类中定义的。

在Laravel 5中,类返回名称空间和类名,因此它是一个大字符串这就是你如何在没有其他东西的情况下获得当前课程的方法

echo (new \ReflectionClass($this))->getShortName();

由于PHP8.0如果变量是对象,则有一种新方法:

$object::class

你说得对,我忘了上下文,因为我明天刚用过。但无论如何可能会很有趣?您可能希望提供有关记录器类以及如何调用它的更多信息。如果在函数的父类声明中调用,则会返回父类,不是扩展类您可以在这里找到所有预定义的常量:即使您在父类中定义的方法中,也会得到子类。在PHP7.1中,如果方法体是在超类static::class中定义的,则返回超类name@g4b0不,没有。我刚刚用PHP7.1.8测试了这个脚本:
class A{function f(){return static::class;}}}class B扩展了A{}$B=new B;echo$b->f()并正确打印B,即使方法是在A中定义的。不要忘记
self
static
之间的区别
static
将引用调用它的类,而
self
是创建它的类。这是可以用来提取类短名称的方法之一。
$object::class