浅谈PHP中的面向对象OOP中的魔术方法.docx_第1页
浅谈PHP中的面向对象OOP中的魔术方法.docx_第2页
浅谈PHP中的面向对象OOP中的魔术方法.docx_第3页
浅谈PHP中的面向对象OOP中的魔术方法.docx_第4页
浅谈PHP中的面向对象OOP中的魔术方法.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浅谈PHP中的面向对象OOP中的魔术方法今天欣才PHP培训机构来告诉大家PHP中的面向对象OOP中的魔术方法。一、什么是魔术方法:PHP为我们提供了一系列用_开头的函数,这些函数无需自己手动调用,会在合适的时机自动调用,这类函数称为魔术函数。例如:function _construct()在new一个新对象时自动调用此函数二、PHP中都有那些魔术方法,以及它们的作用:1._construct():构造函数,new对象时自动调用eg:123456789classPersonpublic$name;public$age;function_construct($name,$age)$this-name=$name;$this-age=$age;在new新的Person对象时会自动调用_construct()函数,将传入的参数分别赋给$name,$age。2._destruct():析构函数,当一个对象被销毁前自动调用12345678classPersonpublic$name;public$age;function_destruct()echo这个对象被销毁了;同上所述,对象被销毁时执行此魔术方法3._get():访问类中私有属性时自动调用,传递读取属性名,返回$this-属性名12345678classPersonprivate$name;public$age;function_get($name)return$this-$name;如上代码,$name被设为私有属性后不能直接通过$this-name;的方式读取,因此需要设置_get()魔术方法来读取。4._set():给类的私有属性赋值时自动调用,传递需设置的属性名,属性值12345678classPersonprivate$name;public$age;function_set($key,$value)$this-$key=$value;同_get()方法,私有属性不能通过$this-name=aaa;的方式直接设置,需要设置_set()方法,传入的参数分别是属性名和属性值。5._isset():使用isset检测对象私有属性时调用,传递检测的属性名,返回isset($this-属性名)12345678classPersonprivate$name;public$age;function_isset($name)returnisset($this-$name);使用isset检测对象私有属性时调用,其他同上。6._unset():使用unset()函数删除对象私有属性时调用,传递删除的属性名,方法中执行unset($this-属性名)12345678classPersonprivate$name;public$age;function_unset($name)unset($this-$name);同上,在用unset()函数删除私有属性时调用。7._toString():使用echo打印对象时调用,返回打印对象时想要显示的内容,返回必须是字符串12345678910111213classPersonpublic$name;public$age;function_toString()$str=$this-name;$age=$this-age;str;return$str;使用echo打印对象时调用,返回打印对象时想要显示的内容。8._call():调用一个类中未定义的或未公开的方法时自动调用,传递被调用的函数名及参数列表123456789101112classPersonpublic$name;public$age;function_call($funcName,$funcParams)echo您调用的函数$funcName,参数列表;print_r($funcParams);echo不存在/未公开;$zhangsan=newPerson();$zhangsan-say(1,2,3);如代码所示,调用不存在的say(1,2,3);时,会打印您调用的函数way,参数列表Array ( 0 = 123 ) 不存在9._clone():当使用clone关键字,克隆一个对象时自动调用,作用是为新克隆的对象初始化赋值1234567891011classPersonpublic$name;public$age;function_clone()$this-name=lisi;$zhangsan=newPerson(zhangsan,24);$lisi=clone$zhangsan;echo$lisi-name;打印出的结果是lisi,而不是zhangsan。10._sleep():对象序列化时自动调用,返回一个数组,数组中的值就是可以序列化的属性12345678classPersonpublic$name;public$age;function_sleep()returnarray(name,age);如上述代码,在用serialize()序列化对象时只有name,age属性会被序列化。11._wakeup():对象反序列化时自动调用,为反序列化新产生的对象进行初始化赋值12345678classPersonpublic$name;public$age;function_wakeup()$this-name=lisi;将对象序列化后再反序列化,同时给对象的name属性赋初值为lisi。12._autolode():需要在类外部声明函数,当实例化一个未声明的类时自动调用,传递实例化的类名,可以使用类名自动加载对应的类文件。123456function_autoload($className)includeclass/.strtolower($className).class.php;$zhangsan=newPerson();$zhangsan-say();如上述代码,Person类不存在时调用_autolode()方法,载入写在文件外的类,class/.strtolower($classNa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论