首页 > 代码库 > php学习九:存取器&魔术方法
php学习九:存取器&魔术方法
当声明属性的时候用到了private,那么的话只能本类中才能访问此属性,其他地方无法使用,这个时候需要给外界提供一些方法来使外界访问
方法一:存取器:
可以提供一个public的方法来使外界对类里面的属性进行访问和赋值
class Student{ private $name; private $age; public function show(){ echo "{$this->name}今年{$this->age}岁了"; } /*****存取器:get,set******/ /****提供set方法给外界赋值***/ public function setName($name){ $this->name=$name; } public function setAge($age){ if($age<0){ $this->age = "18"; }else{ $this->age=$age; } } /******提供get方法给外界取值**********/ public function getName(){ return $this->name; } public function getAge(){ return $this->age; }}
实例化的代码:
$stu = new Student();/*****不能直接访问,需要用类里面的set,get方法来访问******/$stu->setName("房明");echo $stu->getName();$stu->setAge(-18);echo $stu->getAge();$stu->show();
方法二:魔术方法进行访问
在php中文诶我们提供了许多的魔术方法,在这里我们只要是某某一个魔术方法就可以完成我们想要的效果
*__set():赋值
* __get():取值
* __isset():是否有这个属性
* __unset():销毁某个属性
代码如下:
class User{ private $name; private $age; /*****__set():赋值****/ function __set($name,$value) { if($name == "age"){ if($value <18){ $this->age = 18; }else{ $this->age = $value; } }else{ $this->$name = $value; } } /****__get():取值***/ function __get($name) { if($name == "name"){ return "dog"; }else{ return $this->$name; } } /***** __isset():是否有这个属性****/ //当当前属性被isset()或者empty(),即当某个属性被检验空的方法调用的时候,会触发这个方法 function __isset($name) { echo "{$name}isset被调用了"; } /*******__unset():销毁某个属性******/ // function __unset($name) { echo "{$name}被销毁了"; //防止被销毁的时候直接写一个return即可; } public function show(){ echo "{$this->name}今年{$this->age}岁了"; }}
魔术方法进行访问:
$user = new User();$user->name = "房明";$user->age = 10;echo $user->name;echo $user->age;$user->show();isset($user->name);unset($user->name);
php学习九:存取器&魔术方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。