PHP魔法变量用法详解
系统常数
__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程序设计有所帮助。