标签: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