php魔术常量和方法总结及应用

上传人:飞*** 文档编号:39676608 上传时间:2018-05-18 格式:PDF 页数:8 大小:777.24KB
返回 下载 相关 举报
php魔术常量和方法总结及应用_第1页
第1页 / 共8页
php魔术常量和方法总结及应用_第2页
第2页 / 共8页
php魔术常量和方法总结及应用_第3页
第3页 / 共8页
php魔术常量和方法总结及应用_第4页
第4页 / 共8页
php魔术常量和方法总结及应用_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《php魔术常量和方法总结及应用》由会员分享,可在线阅读,更多相关《php魔术常量和方法总结及应用(8页珍藏版)》请在金锄头文库上搜索。

1、PHP 魔术变量和方法1、什么是魔术变量和方法?魔术变量:有点类似常量,采用双下划线_ 开头和结尾,中间是大写字母,例如当前文件路径_FILE_,很多时候我们是将它们当做常量来用,与常量的区别是:放在不同的位置有不同的值。最新版本 php.5.3有魔术变量有7 个。魔术方法,采用双下划线_ 开头,所以自定义函数和方法都不能以_ 开头。魔术方法主要是针对类的,一般是定义类的时候写进去,使用魔术方法的好处,就是对类成员的访问实现单一入口。比如我们访问对象中一个不存在的方法,就会先去访问对象中的_call()。2、魔术变量1)_LINE_ 显示当前代码的行数。2)_DIR_ 显示当前目录名。3)_F

2、ILE_ 显示当前文件的路径。4)_METHOD_ 显示当前方法的名称,在类中使用,值是字符串类名: 方法名5)_FUNCTION_ 显示当前所在函数的名称,用在函数中,值是字符串方法名6)_CLASS_ 显示当前的类名称,用在类使用中,值是字符串方法名7)_NAMESPACE_ 命名空间, php5.3才引入的概念,可能其他语言对这个比较熟悉。Lib1.php中namespace Lib1;/创建命名空间Lib1 const MYCONST = Lib1MYCONST; function MyFunction() return _NAMESPACE_; /Lib1 class MyClass

3、 static function WhoAmI() return _METHOD_; A.php中调用require_once(lib1.php); echo Lib1MYCONST . “n“; echo Lib1MyFunction() . “n“; echo Lib1MyClass:WhoAmI() . “n“;3、魔术方法魔术方法都是和类有关的,大多数是写在类中的1)_construct() 构造函数 ,实例化对象时被调用2)_destruct() 在对象被销毁前(即从内存中清除前)调用。销毁发生在什么时候?一个函数中,销毁发生在函数return的时候 .,全局时则发生于程序结束,此外

4、重新对变量赋值、 unset( 变量 ) 也会销毁内存。3)_call($funcname,$arg) 对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用_call函数。4)_get($varname) 读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用_get函数。5)_set($varname,$value) 设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用_set函数。下面是一个列子,帮助大家对_get和_set的理解。6)_tostring() 打印一个对象的时被调用。如echo $obj;或 print ($obj);将对象按字符串处理

5、就会调用_tostring();该方法必须有返回值,且返回值必须是字符串类型的;7)_clone() 克隆对象时被调用。如:$t=new Test();$t1=clone $t; 8)_isset() 检测一个对象的属性是否存在时被调用。如:isset($c-name)。9)_unset() unset一个对象的属性时被调用。如:unset($c-name)。10)_sleep() serialize之前被调用。若对象比较大,想删减一点东西再序列化,可考虑一下此函数。必须有返回值,且是个数组。11)_wakeup() unserialize时被调用,做些对象的初始化工作。12)_set_sta

6、te() 调用 var_export时,被调用。用_set_state的返回值做为var_export的返回值。必须是静态方法。Var_export()是将一个变量处理成可执行的php 代码13)_autoload() 以上的魔术方法都是写到类中的,只有这个写在类外的。_autoload :自动加载,实例化对象时,如果类不存在,将先调用这个方法。14)_invoke() Php5.3引入 ,当尝试以调用函数的方式调用一个对象时,_invoke 方法会被自动调用。15) _callStatic() Php5.3引入 ,工作方式类似于_call() 魔术方法, _callStatic() 是为了处

7、理静态方法调用,它必须被声明为静态的。4、具体应用1) 利用映射来实现类的自动加载,主要用到_autoload()方法MyClass.class.php中inc.php中main.php 中2) 利用 _call()实现类的方法重载3) 在 PHP 委托模型,使原对象的实例化、方法调用、属性的访问都分别通过三个魔术方法来做到,方便单独在其中做一些操作。比如权限管理或日志记录等。结果:4)利用 _call 实现框架中的数据库查询连贯操作例如: $this-dao-field( name,number )-where( id=1 )-select(); 5、总结魔术变量,我们经常会遇到,其实就是把它当做一个变量来使用的。魔术方法,都是针对面向对象而使用的,基本上都是利用程序的某个动作去触发而产生一个单一入口,这样也就方便我们去维护,对面向对象方面是很有意义的。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号