Php面向对象什么意思魔术方法有哪些

这篇文章详细的对php中的常用魔术方法进行了整理归纳分享给大家供大家参考,具体内容如下

1、PHP把所有”__”开头的方法当做魔术方法所以任何自定义的方法都不能是”__”开头
php提供的重载,是指动态的创建属性或方法重载是通过魔术方法来实现的。这些魔术方法的参数不能饮用传递__get(),__set(),__isset(),__unset(),实现类属性重载。
2、当访问类中不可访问的属性时将调用__get()方法
4、这四个方法不能使用static关键词定义,在php5.3.0后一个warning级别的警告将发生,当使用static方法定义这4个方法
5、何谓不可访问的属性:(1)类中没有的属性,(2)私有变量在类外被访问方法重载,通过__call()和__callstatic()来实 现两者的区别是一个上下文环境是否是静態方法,后者在调用不可访问的静态方法时会被调用__callstatic()是在php5.3.0中才被添 加。
serialize()序列化时会先检查是否存在__sleep()函数,如果存在则先调用__sleep(),返回一個包含所有变量名称的数组,如果该方法不返回任何内容则null被序列化,并产生一个notice级别的错误
7、__toString(),让一个类决定它如何转换成字符串在php5.2.0之前,这个方法只能结合echo或print方法生效php5.2.0之后,可以结合printf()修饰但修饰的时候也不能用类似%d之类的非字符修饰符。
8、__invoke()当尝试以调用函數的方式调用对象时,将出发这个函数只在php5.3之后生效。
9、__set_state()静态方法,当调用var_export()的时候才会调用这个静态方法,php5.1.0之后生效。唯一参数是接收一個数组
10、__construct()和__destruct(),构造函数和析构函数构造函数主要用于类的初始化,析构函数在某个对象的所有引用都 删除后或者对象被显示的销毁时運行在析构函数中不允许抛出异常,否则会出发一个fatal error析构函数在脚本结束时调用,此时所有的http header都已经发出.
11、__clone()对象复制,此方法不能矗接被调用必须通过clone关键字显示调用

//实例化对象时,会调用对象的__construct方法
//给对象不存在的属性赋值时会调用对象的__set方法
//使用对象不存在嘚属性时,会调用对象的__get方法
//调用对象不存在的方法时会调用对象的__call方法
//调用不存在的类静态方法时,会调用类的__callStatic方法
//直接输出对象时会调用对象的__toString方法
//将一个对象当作函数一样使用时,会调用对象的__invoke方法
//克隆对象时会调用对象的__clone方法
//判断对象属性是否存在时,会调鼡对象的__isset方法
//销毁对象属性时会调用对象的__unset方法
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

以上就是关于php中的常用魔术方法的全部内容,希望对大家的学习有所帮助

对象的方法默认是公共的属性僦不可以;

对象的成员方法要互相调用要使用this关键字指向一下。

我要回帖

更多关于 面向对象什么意思 的文章

 

随机推荐