当前位置: 首页 > 后端技术 > PHP

面向对象特性:封装

时间:2023-03-29 22:02:28 PHP

1.封装特性1.给对象属性或方法添加修饰符2.尽可能隐藏内部细节3.访问控制4.PHP5特性5.修饰符类型:public/private/protected/var2.修饰符1.private:a.私有封装,不能被外部调用,但可以被其他内部成员使用。用于为其他方法铺路,不暴露接口。b.构造和销毁方法一般不封装。C。属性的私有化是最常见的。私有化后,改变属性的行为可以通过相应的方法暴露出来,并限制在一个可控的范围内。类人{私人$name="wo";函数setName($str){if($str==="ni")$this->name=$str;}functiongetName(){echo$this->name;}};3.新版魔法方法不能对魔法方法进行私有封装,魔法方法对私有/保护属性有效1.__get($pro);直接访问私有属性时自动调用,并将属性名传递给$pro,如下:classPerson{private$name="wo";私人$age=11;私人$性别=“南”;函数__get($pro){返回$pro;}};$p1=新人();echo$p1->名字;echo$p1->年龄;echo$p1->性别;//所有############classPerson{private$name="wo";私人$age=11;私人$性别=“南”;函数__get($pro){返回$this->$pro;}};$p1=新人();echo$p1->名字;echo$p1->年龄;echo$p1->性别;//wo11nan2.__set($name,$value);直接设置私有属性、赋值属性时自动调用名字$name是$value,如下:classPerson{private$name="wo";私人$age=11;私人$性别=“南”;函数__get($pro){返回$this->$pro;}function__set($pro,$value){//限制外部修改条件if($pro==="name"){if($value==="nii"){$this->$pro=$value;}}else{返回错误;}}};$p1=新人();$p1->name="nii";echo$p1->名字;//nii3.__isset($名称);添加__isset()方法时,无法通过isset判断private属性。添加后,如果外部使用isset遇到私有属性,会自动调用__isset();对象中,参数为属性名,如下:classPerson{private$name="wo";私人$age=11;私人$性别=“南”;函数__get($pro){返回$this->$pro;}函数__set($pro,$value){if($pro==="name"){if($value==="nii"){$this->$pro=$value;}}else{返回错误;}}函数__isset($pro){返回$pro;}};$p1=新人();if(isset($p1->name)){echo"属性存在";}else{echo"该属性不存在";}//属性存在4.__unset();同上

猜你喜欢