php中类成员的访问限制与封装技术

/**
 * 封装的概念
 * 1. 类属性,除非必要,否则都应该声明为私有或受保护的,屏蔽外部直接访问
 * 2. 为类成员属性提供访问访问接口,在接口方法中对外部访问进行过滤,保护数据
 */
class Staff{

    //public: 公开,在类的内部,外部都可以访问
     public $name;

    //protected: 受保护,仅在类的内部,以及子类中的访问
     protected $dept;

    //private: 私有,仅在本类内部访问,外部以及子类均不能访问
     private $salary;

     //构造方法
    public function __construct($name,$dept,$salary)
    {
        $this->name = $name;
        $this->dept = $dept;
        $this->salary = $salary;
    }

    //对于外部禁止访问的成员,可以提供一个接口(方法)
    public function getDept()
    {
//        一个方法或函数有一个以上的return语句是一个不好的编程风格
//        if ($this->name == 'peter') {
//            return  '该员工在保密部门工作!'
//        }
//        return $this->dept;

        $res = $this->dept;
        if($this->name == 'Donnie')
        {
            $res = '该员工在保密部门工作,不可查';
        }
        return $res;           //protected 在类内部可以访问
    }

    //私有成员访问接口
    public function getSalary()
    {
        $res = $this->salary;
        if($this->dept == '财务部')
        {
            $res =  '财务部的人你都敢查?不想混了?';
        }
        return $res;
    }



}

$staff = new Staff('Donnie','财务部',8000);
echo '姓名:'.$staff->name.'<br>';
//echo '部门:'.$staff->dept.'<br>';    //类外不能访问受保护成员
echo '部门:'.$staff->getDept().'<br>';
echo '<hr>';


$staffs = new Staff('小龙女','财务部',10000);
echo '姓名:'.$staffs->name.'<br>';
echo '部门:'.$staffs->getDept().'<br>';      //使用公共接口访问受限成员
echo '工资:'.$staffs->getSalary().'<br>';   //使用公共接口访问私有成员

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值