面向对象第二天

面向对象三大特性之一

第二天 封装性
============================================
1、封装性
  1.1 定义
  将类的成员(方法和属性)用修饰符设置成非公有(private protected)
 作用:
  实现对成员的访问控制

1.2 对成员方法的封装
  将成员方法设置为非公有
特点:
  ① 被非公有化的方法不能在类的外部直接访问
  ② 在类的公共方法中使用$this访问

1.3 对成员属性的封装(真封装)
  将成员属性设置为非公有
特点:
  ① 在类的外部不能直接访问或修改
  ② 在类的内部用$this操作
作用:
  实现对成员属性的访问控制

2、访问私有成员
  2.1 通过公共方法访问私有成员
    给每一个非公有属性,准备两个公共方法
缺点:
  属性较多时,方法也多

2.2 与封装相关的魔术方法4个
  2.2.1 自动获取非公有属性
    __get()
  触发条件:
      当对象在类的外部访问非公有或不存在的属性时自动调用
参数:
  @param $param 访问的属性名
格式:
  public function __get($param)
  {
  return $this->$param;
  }

__set()
触发条件:
  当对象在类的外部设置非公有或不存在的属性时自动调用
参数:
  @param $param 设置的属性名
  @param $value 设置的属性值
格式:
  public function __set($param,$value)
  {
  $this->$param = $value;
  }

__isset()
触发条件:
  当对象外部用isset或empty判断成员属性时自动触发
参数:
  @param $param 判断的属性名
格式:
  public function __isset($param)
  {
  return isset($this->$param);
  }
注意:empty判断时 需要 __get配合提高判断准确性

__unset()
触发条件:
  当对象外部用unset销毁成员属性时自动触发
参数:
  @param $param 销毁的属性名
格式:
  public function __unset($param)
  {
  unset($this->$param);
  }

posted @ 2016-05-17 17:41  隔壁家王叔叔  阅读(90)  评论(0编辑  收藏  举报