1.封装 ****
目的:为了使一个类更加安全
做法: ****
1.将成员变量变为私有的
2.再类中做方法来间接访问成员变量
3.在方法中加入控制条件
//一个成员变量还是可以的,但是不适用于多个成员变量(即可写也可读)
class Ren { public $code; //人员代号 public $name; //人员姓名 private $sex; //人员性别 private $age; //人员年龄 //构造函数:用来初始化性别 function __construct($s) { $this->sex=$s; } //造一个修改年龄的方法 写 function SetAge($a) { if($a>18 && $a<50) //条件满足才往下进行 { $this->age=$a; } } //造一个获取age值得方法 读 function GetAge() { return $this->age; } } //造对象 $r=new Ren("男"); $r->SetAge(60); /条件是18-50之间的年龄,60超出了,所以显示的nullvar_dump($r);
//对于多个变量就可以使用下面的方法
class Ren { public $code; //人员代号 public $name; //人员姓名 private $sex; //人员性别 private $age; //人员年龄 //构造函数:用来初始化性别 function __construct($s) { $this->sex=$s; } //__set()魔术方法,给变量赋值 function __set($n,$v) //固定要有两个参数:变量名称,变量的值 { if($n=="age") { if($v>18 && $v<50) //限制条件 { $this->$n = $v; } } else { $this->$n = $v; } } //__get()魔术方法,取变量值 function __get($n) //一个变量名 { return $this->$n; } } //造对象 $r=new Ren("男"); $r->age=70; //自动调用__set()方法,将变量名当做第一个参数,将等号右边的值当做第二个参数 $r->name="zha"; //自动调用__set()方法,将变量名当做第一个参数,将等号右边的值当做第二个参数 echo $r->sex; //自动调用__get()方法var_dump($r);
//另一个知识点
class Dog { public $name; function Jiao() { echo $this->name."囧"; //注意 } function Setname($n) { $this->name=$n; return $this; //返回新的对象 } } $d=new Dog(); $d->Setname("1")->Jiao(); //连续调对象
时间: 2024-10-13 01:52:59