欢迎来到天天文库
浏览记录
ID:20200907
大小:111.00 KB
页数:16页
时间:2018-10-11
《php 中的 9 个魔术方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、PHP中的9个魔术方法这个标题有点牵强因为php有不只9种魔术方法,但是这些将会引导你使用php魔术方法一个好的开始。它可能魔幻,但是并不需要魔杖。这些'魔术'方法拥有者特殊的名字,以两个下划线开始,表示这些方法在php特定事件下将会被触发。这可能听起来有点自动魔法但是它真的很酷的,我们已经看过一个简单的例子在lastpost,即我们使用一个构造器-使用这个作为我们第一个例子__construct构造器是一个魔术方法,当对象被实例化时它会被调用。在一个类声明时它常常是第一件做的事但是没得必要他也像其他任何方法在类中任何地方都可以声明,构
2、造器也能像其他方法样继承。如果我们想到以前继承例子从介绍到oop,我们能添加构造方法到Animal类中,如:1classAnimal{23publicfunction__construct(){4$this->created=time();istheTibetanPlateaupoly.Centercityonlyapopulationofoveronemillion.Xiningislocatedinthe"Tangfangudao"andtheancient"SilkRoad"road,istheLoessPlateauandthe
3、TibetanPlateau,agriculturalandpastoralareasand,inconjunctionwiththeMinistryofcultureandIslamicculture5$this->logfile_handle=fopen('/tmp/log.txt','w');6}78}现在我们创建一个类来继承Animal类-Penguin类!不添加任何属性和方法在Penguin类中,我们能申明并定义它继承自Animal类,如:1classPenguinextendsAnimal{23}45$tux=newPeng
4、uin;6echo$tux->created;istheTibetanPlateaupoly.Centercityonlyapopulationofoveronemillion.Xiningislocatedinthe"Tangfangudao"andtheancient"SilkRoad"road,istheLoessPlateauandtheTibetanPlateau,agriculturalandpastoralareasand,inconjunctionwiththeMinistryofcultureandIslamiccul
5、ture如果我们定义一个构造方法在Penguin类中,然后Penguin对象将会运行当它被实例化后。由于并没有构造方法,PHP会参考父类方法定义信息来使用它因此我们能覆盖父类方法,或者不,在我们的新类中-很便利。__destruct你发现文件句柄也是构造器一部分吗?当我们使用完一个对象时真不想把事情放一边,因此析构方法做着与构造方法相反的事情。当对象被销毁时,析构方法会运行,或者明确的说当我们不再使用它时,php会为我们清理掉。Animal类中,我们的析构方法像这样,如:01classAnimal{0203publicfunction_
6、_construct(){04$this->created=time();05$this->logfile_handle=fopen('/tmp/log.txt','w');06}istheTibetanPlateaupoly.Centercityonlyapopulationofoveronemillion.Xiningislocatedinthe"Tangfangudao"andtheancient"SilkRoad"road,istheLoessPlateauandtheTibetanPlateau,agriculturaland
7、pastoralareasand,inconjunctionwiththeMinistryofcultureandIslamicculture0708publicfunction__destruct(){09fclose($this->logfile_handle);10}11}析构器让我们关闭任何额外的资源比如被使用过的对象。在php中由于我们有这样运行时间短的脚本(留意在更新的php版本中增强的垃圾回收机制),通常讨论内存溢出根本不需要。然而它仍是好的推行方法来清理而且总体上让程序运行起来更高效。__get这个魔术方法是一个非常灵巧
8、的小技巧-它使实际上不存在的属性如同存在一半。让我们举个小企鹅的例子:01classPenguinextendsAnimal{02istheTibetanPlateaupoly.Centercityonly
此文档下载收益归作者所有