线上服务咨询
PHP魔术方法详解
发表时间:2019-07-30 16:16:50
文章来源:沈阳软件开发
标签:网站建设 小程序开发 小程序制作 微信小程序开发 公众号开发 微信公众号开发 网页设计 网站优化 网站排名 网站设计 微信小程序设计 小程序定制 微信小程序定制
浏览次数:0
PHP下魔术方法总结
__construct>>构造函数: PHP中的构造函数要求无法执行构造函数的重载,即只有一个构造函数。
函数__construct($ name='宋',$ sex='',$ age=1){//当对象诞生时,构造函数将初始值赋给成员属性$ this-> name=$ name; $ this-> sex=$ sex; $ this-> age=$ age;}描述:1。在一个类中,它只能有一个构造函数。 2.默认构造函数是public,如果是private,则会形成单例模式。
__set方法来设置
__set()方法:此方法用于设置私有成员属性的值,有两个参数,第一个参数是要设置值的属性名,第二个参数是要为属性设置的值,没有回报价值。此方法也不需要手动调用。它也可以是私人的。直接设置私有属性值时会自动调用它。相同的属性已经封装。如果没有__set()方法,不允许,例如:$ this-> name='zhangsan',这将导致错误,但如果您将__set($ property_name,$ value)方法添加到类中,将值直接分配给私有属性时将自动调用它,将name等属性传递给$ property_name,将值“zhangsan”传递给$ value,然后执行赋值以达到赋值的目的。如果成员属性未封装为私有,则对象本身不会自动调用此方法。为了不传递非法值,您也可以使用此方法进行判断。例如,实例:
对应的私有$ name实例; //第一个成员属性$ name定义了人的名字,这个属性是封装私有的$ sex; //第二个成员属性$ sex定义了人的性别,这个属性是封装私有的$ age; //第三个成员属性$ age定义了人的年龄,这个属性是封装的
//声明magic方法需要两个参数,它在分配私有属性时自动调用,并且可以屏蔽一些非法赋值私有函数__set($ propertyName,$ propertyValue){if($ propertyName=='sex'){//如果第一个参数是属性名称sex那么条件为真//对于非法数据处理if(!($ propertyValue=='male'|| $ propertyValue=='female'))//第二个参数只能是男性或女性回归; //如果非法参数返回null,则执行该方法} if($ propertyName=='age'){//如果第一个参数是属性名称age,则建立条件if($ propertyValue> 150 | | $ propertyValue< 0)//第二个参数只能是0到150之间的整数返回值; //如果非法参数返回null,则执行方法} //对于不需要进行验证的数据,根据参数决定为那个属性被赋值,传入不同的成员属性名,赋上传入的相应的值,定义赋值的方式.$ this-> $ propertyName=$ propertyValue;}如调用时:$ person1=new Person('Zhang San','Men', 20); //自动调用__set()函数将属性名称传递给第一个参数,将属性值“He four”传递给第二个参数 $person1->name="何四"; 当进行赋值时,它会调用__set中的 $this->propertyName=$propertyValue代码
__get()方法:此方法用于获取私有成员属性的值。有一个参数。参数传递要获取的成员属性的名称,并返回获取的属性值。这个方法不需要手动调用,因为我们也可以私有化这个方法,当直接获取私有属性时会自动调用对象。
获取方法
//在类中添加__get()方法,在直接获取属性值时自动调用一次,将属性名称作为参数传递并处理私有函数__get($ propertyName){//在方法之前使用私有修饰阻止对象外部调用if($ propertyName=='sex'){//如果参数在“sex”中传递,则条件设置为返回'机密'; //不要让别人获得性别,用“secret”替换它}} if if($ propertyName=='age'){//如果参数传递“age”那么条件为真如果($ this-&gt ; age> 30)//如果对象中的年龄大于30,则条件为真。返回$ this - >年龄-10; //返回对象中的虚假年龄,比实际年龄小10岁。 //如果对象中的年龄不大于30,请执行以下代码返回$ this-> $ propertyName; //让Access可以获得对象中的真实年龄} else {//如果参数在其他属性名称中传递,则条件为真==>> return $ this-> $ propertyName; //没什么别的限制,你可以直接返回属性的值}}说明:1。它只有2. name属性是关键代码的参数,这里返回$ this-> $ PropertyName,代码实际上是获得了属性值,如代码:
。 $ person1=new Person('张三','男',40); echo'name:'。$ person1-> name。'';它会被自动调用,尤其是__get()方法中的$,Person1是$ this。>>>
关于__isset()和__unset()函数引入的含义和函数[PHP不提供unset和isset函数吗?] __ isset()方法:isset()是一个用于确定是否设置变量的函数。输入变量作为参数,如果传递的变量存在则返回true,或返回false。
因此,如果在对象外使用“isset()”函数来确定对象中的成员是否已设置,是否可以使用它?在两种情况下,如果对象中的成员是公共的,我们可以使用此函数来确定成员属性。如果它是私有成员属性,则此函数将不起作用,因为私有是在外部封装的。无形。然后你只能使用__isset魔术方法来完成。
同样,__unset也是如此。
应用__isset和__unset函数
//__ isset()方法private function__isset($ nm){echo'isset()函数在确定私有成员时自动调用'; return isset($ this-> $ nm);这里测试的结果是真还是假} //__ unset()方法private function__unset($ nm){echo'自动调用'unset($ this-> $ nm); >
网站建设,小程序开发,小程序制作,微信小程序开发,公众号开发,微信公众号开发,网页设计,网站优化,网站排名,网站设计,微信小程序设计,小程序定制,微信小程序定制