php 给对象私有及受保护的成员变量赋值的几种方法
1.构造方法赋值
<?php class City{ private $_cityName; private $_population; //function city($_cityName,$_population){} php5.3.3起在有命名空间的类中,类同名方法不再视为构造方法而是常规方法,无命名空间类中不影响 public function __construct($_cityName,$_population){ $this->_cityName = $_cityName; $this->_population = $_population; } public function getCityName(){ return $this->_cityName; } public function getPopulation(){ return $this->_population; } } $nanjing = new City("南京",10000000); echo "城市:".$nanjing->getCityName(),"<br/>"; //城市:南京 echo "人口:".$nanjing->getPopulation(),"<br/>"; //人口:10000000
2.魔术方式赋值和调用:__set()、__get()
<?php class City{ private $_cityName; private $_population; //magic method: __set() /** 当给一个无访问权限或不存在的属性赋值时,__set()魔术方法会自动调用,并传入两个参数:属性和属性值 $suzhou->_cityName="苏州" ---无权访问权限--> __set("_cityName","苏州"); **/ public function __set($property_name,$property_value){ $this->$property_name = $property_value; } //magic method: __get() /** 当我们调用一个权限上不允许访问的属性或者是不存在的属性时,__get()魔术方法会自动调用,并且自动传参,参数名是属性名 $suzhou->_cityName ---无访问权限--> __get(_cityName); **/ public function __get($property_name){ if(isset($this->$property_name)){ return $this->$property_name; }else{ return null; } } } //设置__set()和__get()方法,可以在类外部像给public修饰的成员变量一样赋值和调用 $suzhou = new City(); $suzhou->_cityName = "苏州"; $suzhou->_population = 7000000; echo "城市:".$suzhou->_cityName,"<br/>"; //城市:苏州 echo "人口:".$suzhou->_population,"<br/>"; //人口:7000000
3.调用类常规方法传参赋值
<?php class City{ private $_cityName; private $_population; private $_factory; function setCityName($_cityName){ $this->_cityName = $_cityName; } function setPopulation($_population){ $this->_population = $_population; } function getCityName(){ return $this->_cityName; } function getPopulation(){ return $this->_population; } // function set($name,$value){ $this->_factory[$name] = $value;//以数组的形式存储变量赋值 } function get($name){ return $this->_factory[$name]; } } $shanghai = new City(); //通过函数传参的形式给对象指定私有变量赋值,通过指定函数获取指定私有变量值 $shanghai->setCityName("上海"); $shanghai->setPopulation(30000000); echo "城市:".$shanghai->getCityName(),"<br/>"; //城市:上海 echo "人口:".$shanghai->getPopulation(),"<br/>"; //人口:30000000 $shanghai->set("totalArea","6340平方公里"); $shanghai->set("areaCode","017"); $shanghai->set("zipCode",200000); echo "面积:".$shanghai->get("totalArea"),"<br/>"; //面积:6340平方公里 echo "区号:".$shanghai->get("areaCode"),"<br/>"; //区号:017 echo "邮编:".$shanghai->get("zipCode"),"<br/>"; //邮编:200000
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: Yii2.0框架基础--数据查询之AR类方法一
- 下一篇:没有了