码迷,mamicode.com
首页 > 其他好文 > 详细

初识访问控制修饰符及魔术方法

时间:2019-06-18 14:31:50      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:public   无法   ons   通过   没有   UNC   方法   说明   return   

访问控制修饰符:

  访问控制修饰符: 访问控制修饰符可以修饰成员属性,也可以修饰方法,有 public(公有),protected(受保护)和 private(私有)三种。

   代码说明:

class Clerk{
    public $name;
    protected $salary;
    private $lover;
    //构造函数
    public function __construct($name,$salary,$lover){
        $this -> name = $name;
        $this -> salary = $salary;
        $this -> lover = $lover;
    }
    public function getSalary(){
        return $this -> salary;
    }
    public function getLover(){
        return $this -> lover;
    }
}
$clerk = new Clerk(‘小明‘,15000,‘翠花‘);
//访问各个属性
//如果访问修饰符是public则可以直接访问
echo ‘<br>职员的名字是‘ . $clerk -> name;
//如果访问修饰符是protected,则不能直接访问,需要通过编写一个public成员方法来操作protected属性
echo "<br>" . $clerk -> name . ‘的薪水是‘ . $clerk -> getSalary();
//如果访问修饰符是private,则不能直接访问,需要通过编写一个public成员方法来操作private属性
echo "<br>" . $clerk -> name . ‘的爱人是‘ . $clerk -> getLover();
页面输出:
    职员的名字是小明
    小明的薪水是15000
    小明的爱人是翠花

 魔术方法:

    __get 和 __set函数:

    基本介绍:

      (1)当程序员去使用不可以访问的属性时,系统就会调用__get方法.

      (2)不可以访问的属性指的是(1 . 该属性不存在 2. 直接访问了protected或者private属性)

      (3)当程序员去给不可以访问的属性直接赋值,系统就会调用__set方法

  快速入门案例:

class Monkey{
    public $name;
    protected $food;
    public function __construct($name,$food){
        $this -> name = $name;
        $this -> food = $food;
    }
    //魔术方法__get
    //1.魔术方法的名字是固定的,系统提供
    //2.$pro_name是形式参数,表示属性名
    public function __get($pro_name){
        //property_exists检查对象或类是否具有改属性
        return property_exists($this,$pro_name) ? $this -> $pro_name : ‘没有该属性无法返回‘ ;
    }
    //魔术方法__set
    //1.魔术方法的名字是固定的,系统提供
    //2.$pro_name表示属性名,$pro_val表示要传入的属性值
    public function __set($pro_name,$pro_val){
        //property_exists检查对象或类是否具有改属性
        return property_exists($this,$pro_name) ? $this -> $pro_name = $pro_val: ‘属性值不存在无法赋值‘ ;
    }
}
$monkey = new Monkey(‘孙悟空‘,‘香蕉‘);
echo ‘<br>猴子的名字是‘ . $monkey -> name;
//直接访问访问修饰符protected,会把成员属性名作为传参传入__get函数中
echo ‘<br>猴子喜欢吃‘ . $monkey -> food;
var_dump($monkey);
//修改猴子的名字和食物
$monkey -> name = ‘战斗佛‘;
// 在默认情况下不能直接给修饰符protected的属性赋值,会出发__set魔术方法
$monkey -> food = ‘元宝蜡烛‘;
echo ‘<br>猴子的名字是‘ . $monkey -> name;
echo ‘<br>猴子喜欢吃‘ . $monkey -> food;
var_dump($monkey);

 

初识访问控制修饰符及魔术方法

标签:public   无法   ons   通过   没有   UNC   方法   说明   return   

原文地址:https://www.cnblogs.com/rickyctbur/p/11044550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!