对象的封装:public private protecte 访问修饰符+魔术方法__get(),__set()
2017-01-16 22:55
513 查看
public private protecte 访问修饰符 <?php class WareHouse1{ private $keeper; function setKeeper($keeper){ //对私有化的成员属性值进行过滤 /* * 例如,要求仓库保管员必须是 * tom,jerry * 如果候选人超出这个范围,默认为tom * */ $keeper_array = array("tom","jerry"); if(in_array($keeper,$keeper_array)){ $this->keeper = $keeper; }else{ $this->keeper = "tom"; } } function getKeeper(){ return $this->keeper; } } $w = new WareHouse1; $w->setKeeper("rose"); echo $w->getKeeper(); ---------------------------------------------------- <?php //魔术方法__get应用举例 class WareHouse{ private $keeper; private $location="beijing"; //仓库位置 function __get($variable){ return $this->$variable; } function __set($variables,$value){ //若在类外设置的成员属性是keeper //则对keeper的取值范围进行过滤 if($variables=="keeper"){ $keeper_array = array("tom","jerry"); if(in_array($value,$keeper_array)){ $this->keeper = $value; }else{ $this->keeper = "tom"; } } } } $w = new WareHouse; $w->keeper = "rose"; echo $w->keeper; ---------------------------------------------------- <?php /* * 2、在Mobile类里面应用魔术方法 * __set对私有化成员属性voltage值进行过滤, * 要求取值为110和220,默认取值为220 , * 应用魔术方法__get或者设置的私有化成员属性。 */ class Mobile{ private $voltage; private $model; //型号 //定义成员方法setVol function __set($variable,$value){ //过滤私有化的成员属性 if($variable=="voltage"){ $voltage_arry = array(110,220,111,222,333); if(in_array($value,$voltage_arry)){ $this->voltage = $value; }else{ $this->voltage = 220; } } } function __get($variable){ return $this->$variable; } } $m = new Mobile(); $m->voltage = 3; echo $m->voltage; //这可能是一个底层的bug,__get方法,即使在没有定义test这个这个成员属性的时候,还是可以把它打印出来 echo $m->test; //test //Notice: Undefined property: Mobile::$test in D:\xampp\htdocs\myProject\demo\Person.class.php on line 29 echo $m->test=666;//输出666,但是没有报错
相关文章推荐
- 跟着百度学PHP[4]OOP面对对象编程-13-魔术方法__set(),__get(),__isset(),__unset()
- PHP 类的访问控制与封装 public,protected,private 修饰符
- Java中访问修饰符public、private、protect、default范围
- 我的java学习之路访问修饰符public protect private ;另外instanceof
- 为什么子类不能访问基类的private成员(为什么要使用get,set方法)?为什么要这样设计?
- 封装 关 键字 :public,protected,private 封装相关函数:__set() , __get()
- php面向对象基础概念(属性重载的魔术方法)__get(),__set(),__isset(),__unset()
- Java中访问修饰符public、private、protect、default范围
- Java中 访问修饰符public、private、protect、default作用范围
- Java中访问修饰符public、private、protect、default范围
- Objective-C基础学习笔记(三)-面向对象的三大特性之封装-set方法-get方法-类方法与对象方法
- PHP魔术方法__get()和__set() The magic method must have public visibility
- 方法的访问控制[Public&Private&Protect]
- 【Objective-C】04-OC对象成员变量的封装规范:get方法和set方法
- 类、对象、继承、封装、多态、方法的重载和重写、Java的访问修饰符与其它关键字
- 面向对象实例:小明去考试加封装版本和set() 和get()方法使用
- Objective-C(二、类与isa指针,类的封装,set&get,类方法,对象方法)——iOS开发基础
- PHP 类的访问控制与封装 public,protected,private 修饰符
- java封装中的private关键字和set,get方法
- PHP 对象 魔术方法 __get __set __isset __unset