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

1, 什么是封装性?

      把对象的成员(属性,方法)结合成一个独立的相同单位,并尽可能隐藏对象的内部细节。

      属性和方法都可以封装!

 

2,方法的封装

    

     在类的成员方法定义的时候前面加上private[protected,public...]关键字

     如下:

 

     private function say(){

         

     }

    

     private:私有的------用这个关键字修饰的成员只能在对象内部访问!(即只能用$this->say()访问,不能在对象外部访问。)

 

3,属性的封装

 

     只要一个变量需要在多个方法中使用,就将这个变量声明为成员属性,这样这个变量可以在属性的所有方法中使用

     也就是说,成员属性是对象中的全局变量。

     成员属性值的变化其实就是在改变方法的执行行为,进而改变了对象的功能。

     甚至,成员属性的不正常会导致对象的功能不正常!!!

     (如手机电压的值出现了220V,电话就玩完了。)

     所以需要封装成员属性(安全性)来限制外部修改成员属性的值!(即使允许在外部修改成员属性的值,也应该限定一个范围。)

 

     当不需要(不允许)修改成员属性的值时,就应该封装成员属性。

     当需要对成员属性的值在某给范围内控制时,可以先封装成员属性,然后再提供一个公有的方法,可利用这个方法来控制成员属性的值的范围,甚至制造假象。

 

     如:class Age{

        private $age;

       

        function setAge($age){

                    if($age>100 || $age <0)  return;

                    else   $this->age=$age;

                  }

        }

 

 

4,封装的作用:

   

     a,使用private关键字使其只能在内部使用。

     b,如果一个类中有100个方法,封装了95个方法(为另外5个服务的方法),只有5个方法可以使用,则这个类对外提供的方法只有5个。将细节进行了隐藏。提供了有限的对外接口。

     c,安全性会更高!

 

        $object = new Age;

 

        $object->setAge(500);

 

5,与封装有关的一些魔术方法(已经封装的成员属性)

 

     __set();是直接在对象外部设置私有成员属性值时,自动调用的方法。(用于成员赋值)

     __get();是直接在对象外部获取私有成员属性值时,自动调用的方法。(用于成员取值)

     __isset();直接检查(使用isset()检查)对象中私有属性是否存在时,自动调用的方法。

     __unset();直接删除(使用unset()删除)对象中私有属性是否存在时,自动调用的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值