|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
可以在书上很方便地做标记,及时记下自己的心得体会。 复制代码 代码以下:
<?php
/*
* 封装性:面向对象三大特征之一
*
* 1.就是把对象的成员(属性,办法)联合成一个自力的不异单元,并尽量埋没对象的外部细节
* 会见权限润色符 public protected private
* private:公有的,用这个关头字润色的成员,只能在对象外部会见(只要用$this会见)
*
* 属性可以封装:
* 只需一个变量,需求在多个办法利用,就将这个变量声明为成员属性,可以直接在这个对象中的一切办法中利用
*
* 成员属性,相当于这个对象中的全局变量
*
* 成员属性城市在办法中利用,成员属性值的变更其实就是在改动办法的履行行动,也就是改动了对象的功效
*
* 成员属性的值假如不正常,办法履行的功效叶就不正常
*
* 感化:不需求在对象内部改动或读取它的值
* 1.封装
* 再供应一个私有的办法(经由办法对对象成员属性停止赋值和取值就能够掌握)
*
*
* 办法也能够封装
*
* 感化:
* 1.利用private润色使其只能在外部利用
*
* 2.一个类中有100个办法,封装了95个(为别的5个办事的办法),只要5个办法可使用
*
* 100个成员属性,都让取值,不成以改值;或只可改值,不成获得值//此种情形下利用以下办法对照便利
* 和封装有关的魔术办法:
*
* __set();//是直接设置[公有的]成员属性值时,主动挪用的办法
* __get();//是直接获得[公有的]成员属性值时,主动挪用的办法
* __isset();//是直接利用isset()检查对象中公有属性是不是存在时,主动挪用这个办法
* __unset();//是直接利用unset()删除对象中公有属性时,主动挪用的办法
*
*
*
*
*
*
*
*/
class Person{
//x封装成员属性,不需求在对象内部改动
private $name;
private $age;
private $sex;
private __unset($proName){
unset($this->$proName);
}
//是直接检查对象中公有属性是不是存在时,主动挪用这个办法
//__isset($proName)的利用,$proName代表属性名
private function __isset($proName){
return isset($this->$proName);//isset()前往是不是存在
}
function __construct($name,$age,$sex){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
//当获得公有的成员属性时,主动挪用此办法
private function __get($proName)
{
//掌握所获得的值
if($proName=="age"){
if($this-age>40)
return $this->age-10;
}
return $this->$proName;
}
//当设置公有的成员属性时,主动挪用此办法
private function __set($proName,$proValue){
//$proName暗示成员属性名,$proValue暗示成员属性值
//掌握设置局限
if($proName=="age"){
if($proValue > 100 $proValue<0)
return;
}
$this->$proName=$proValue;
}
//供应私有办法来设置成员属性的值
function setAge($age){
//掌握岁数局限,增添平安性
if($age > 100 $age < 0 )
return;
$this->age=$age;
}
//供应私有办法来获得成员属性的值
function getAge(){
//掌握获得岁数的局限
if($this->age < 30)
return $this->age;
else if($this->age<40)
return $this->age-5;
else if($this->age<50)
return $this->age;
else
return $this->age-15;
供应私有办法来 }
function say(){
echo "我的名字:{$this->name},我的岁数:{$this->age},我的姓别:{$this->sex}<br>";
//会见封装过的 run()办法
$this-run();
}
private function run(){
echo '111111111111<br>'
}
function eat(){
}
//析构办法
function __destruct(){
}
}
$p1=new Person("zhangsan",25,"男");
$p2=new Person;
$p3=new Person;
//$p1->age=-50;//由于岁数在内部随便会见,所以成员属性药封装,才有平安性。
$p1->setAge(30);//经由过程办法来设置成员属性德值
$p1->getAge();//经由过程办法来获得成员属性德值
//经由过程添加家魔术办法__set($proName,$proValue) __get($proName),就能够直接挪用成员属性了
$p1->say();//可以挪用
$p1->run();//公有的办法不克不及直接挪用
//删除$p1外面的name
unset($p1->name);
//判别name是不是存在
if(isset($p1->name)){
echo "存在<br>";
}else{
echo "没有这个成员 <br>";
}
?>
作者:代号极光
出处:http://zizhuyuan.cnblogs.com从刚开始练习的PHP基础语法练习,到PHP语言在WEB中的应用,再到实际的项目开发,如留言版,相册系统,中小型公司网站系统,以及期间做过的有关团队合作的小游戏,让我受益匪浅,学到了很多。 |
|