主题:
创建一个类,要求有
1. 构造方法
2.查询器:__get()
3.设置器:__set()
并创建一个php脚本进行正确的调用
效果图:
构造方法、__get()、__set()代码:
<?php /* * 魔术方法:__get(),__set() */ class MyPeople2 { //也可以不赋值,设置为私有属性外部无法直接访问,通过方法访问较安全 private $name; private $sex; private $age; private $hobby; private $data=[]; //声明一个构造方法:在实例化类的时候自动调用 //构造方法也叫构造器:对象属性的初始化 public function __construct($name='', $sex=0, $age=0, array $hobby=[]) { $this->name = $name; $this->sex = ($sex == 0) ? '男' : '女'; $this->age = $age; $this->hobby = $hobby; } //两个下划线开头叫魔术方法,可以访问没有权限读取的属性,由系统直接调用,自动触发。 //查询器:__get() public function __get($name) { //如果类中添加一个自定义的数据收集器$data,就从这里取值 $msg = null; if(isset($this->name)) { $msg = $this->$name; }elseif (isset($this->data[$name])) { $msg = $this->data[$name]; }else { $msg = '无此属性,请重新输入。'; } return $msg; } //设置器 public function __set($name, $value) { if($name == 'age') { if(in_array($value,range(16, 70))) { $this->$name = $value; } }else { $this->$name = $value; } } }
运行实例 »
点击 "运行实例" 按钮查看在线实例
调用方法代码:
<?php //加载类文件 require './class/MyPeople2.php'; //实例化对象 $MyPeople2 = new MyPeople2('美女', 1, 18, ['旅游', 'music', '唱歌']); //调用魔术方法__get() echo '名字叫做:'.$MyPeople2->name; echo '<br>'; //调用魔术方法__set() $MyPeople2->age = 90; echo '年龄:'. $MyPeople2->age;
运行实例 »
点击 "运行实例" 按钮查看在线实例
总结:
类文件要独立,类名称与文件名一致,头字母大写,类属性值不能是变量、表达式、对象。
类属性定义几种方式:
共有:public
私有:private
受保护:protected
构造器:__construct()
魔术方法:
查询器:__get()
设置器:__set()
定义常量:const 常量名称全大写