PHP魔法变量用法详解

本文介绍了PHP的魔术变量的使用,这是新的__dir__ PHP5.3,分享给大家参考使用。具体分析如下:

系统常数

__file__当前文件名

在__line__当前行数

__function__当前函数名

__class__当前类的名字

__method__当前对象的方法名

详细的分析

1。__file__

完整的路径和文件名的文件。如果是用于包含文件,包含文件名返回。从PHP 4.0.2,__file__总是包含一个绝对路径(如果它是一个符号连接,然后通过分析绝对路径),而以前的版本有时会包含一个相对路径。

PHP常量dirname(__file__)

__file__:称为PHP的幻方常数,它返回的完整路径和当前的PHP脚本的文件名,包括绝对路径

1)的目录(__file__)函数返回的脚本located.update网络路径

例如,文件b.php包含以下:

复制代码代码如下:< PHP

$ basedir = dirname(__file__);

echo basedir

这将是一个在打印页面中绝对路径的文件!

>



我做的测试得到的结果:E:websiteothertestcms

这是在ASP的server.mappth使用等效

如果b.php由A.php文件引用的要求或包含在其他目录,则美元的变量内容的文件夹的路径,b.php所在。而不是成为A.php文件所在目录。

2)目录(__file__)通常返回一个文件的当前目录的目录结构,系统的根目录。

当前文件的名字不回来。Dirname(__file__)也可能回到A(当前目录){因为b.php文件的http.conf或PHP配置开发环境的默认Web目录下

复制代码代码如下:< PHP



在公用配置文件中,设置根目录,这样就不必担心移动。

* /

定义('root_path,dirname(__file__)。directory_separator);

回声root_path;



回声__file__;



回声dirname(__file__);



回声的目录(目录名(__file__));

>

2。__line__

在一个文件中的当前行号。这个变量在调试错误时更有用。在其他时候,它是没有用的。纯粹是个人的。

复制代码代码如下:< PHP

回声__line__; / /显示,那里的线数__line__

>

三.__class__

类的名字,PHP5返回结果是敏感的

复制代码代码如下:< PHP

类base_class

{

say_a()函数

{

回声A说。__class__。;

}

say_b()函数

{

回声B表示。get_class(美元)。;

}

}

类derived_class延伸base_class

{

say_a()函数

{

家长::say_a();

回声A说。__class__。;

}

say_b()函数

{

家长::say_b();

回声B表示。get_class(美元)。;

}

}

obj_b美元=新derived_class();

obj_b美元-> say_a();



obj_b美元-> say_b();

>

结果如下:

复制代码如下:A说base_class

一表示,derived_class

B表示,derived_class

B表示,derived_class

有时候,我们可以用get_class代替__class__

4。__function__和__method__

__function__:函数名,返回的结果在PHP5是大小写敏感的

__method__:在方法函数名和PHP5中返回的结果是大小写敏感的

二是方法的名称。有差别吗

复制代码代码如下:< PHP

类测试

{

函数A()

{

回声__function__;



回声__method__;

}

}

函数OD(){

回声__function__;



回声__method__;

}

新测试();

元测试(a);



(OD);

>

返回结果:



测试:

OD

OD

与孤立函数相比,两个函数可以提取函数名。没什么区别。如果是在类的方法,__function__只能提取类的名称,而__method__不能提取的方法的名称,但也提取类名。

5。__dir__

文件所在的目录。如果使用包含文件的目录,包括文件位于返回。它相当于目录(__file__)。除非根目录,该目录的名称不包括斜线结束。(新增PHP 5.3.0)

如果你想在5.3以前的版本使用__dir__,你可以这样做

复制代码代码如下:< PHP

如果(!定义('__dir__ ')){

IPO(__file__美元=个子, / );

定义(__dir__

}

>

6。__namespace__

当前命名空间的名称(例敏感)。这个常数定义在编译时(PHP 5.3.0添加)

7。__static__

当调用类的静态方法时,返回类名并区分实例和案例。如果在继承中调用,可以返回继承的类名,不管它是在继承中定义的。

复制代码代码如下:< PHP

/ / PHP5.3

类模型

{

公共静态函数查找()

{

回声__static__;

}

}

类产品扩展模型{ }

类用户扩展模型{

产品::(查找)

用户::(查找)

>

补充:PHP中的魔法方法

__construct()当一个对象被实例化时,这个对象的方法被称为第一。

__destruct()调用方法时,对象或对象的操作被终止。

__get()是当它试图读一个不存在的属性称为。

__set()是当它试图写入值到不存在所谓的属性。

__call()调用方法时,它试图调用一个不存在对象的方法。

__tostring()被调用时,一个对象是印刷

__clone()被调用时,对象的克隆

__isset()

__unset()

__autoload($ className)

__sleep()

__wakeup()

希望本文能对大家的PHP程序设计有所帮助。