PHP面向对象三大特性之一:封装

时间:2023-12-16 17:43:38
面向对象的三大特性:封装、继承、多态
1、封装
封装的目的:让类更加安全,做法是不让外界直接访问类的成员
具体做法:1、成员变为私有:访问修饰符(public、private、protected)
                    2、造成员方法来操作变量 SetAge()和GetAge()方法 (每个变量都需要两个方法很麻烦,用PHP以下的方法)
                3、PHP操作变量的方法(双下划线__set()和__get()方法)也可以控制用户的输入,并且只需要一个就好
具体例子:
class SuanShu{
    private $a;
    private $b;
    function __construct($a,$b){
        $this->a = $a;
        $this->b = $b;
    }
    function __set($n,$v){
        if($n == "a" || $n == "b"){
            if($v > 0  and $v < 100){
                $this->$n = $v;        
            }
        }else{
            $this->$n = $v;    
        }
    }
    function __get($n){
        return $this->$n;    
    }
    function He(){
        return $this->a + $this->b;
    }
    function Ji(){
        return $this->a * $this->b;
    }
}
$r = new SuanShu(5,5);
$r->a = 8;
$r->b = 8;
echo $r->He();
echo "<br/>";
echo $r->Ji();
需要注意的是成员变量的$符号使用
2、构造函数
    在创建对象的时候,对成员变量进行初始化
    特点:1、在创造对象的时候自动执行。2、名字是双下划线  __construct()
function __construct($s)
    {
        $this->sex = $s;
    }