使用类的构造、属性的访问、输出模板的设置、类的继承等完成一个学生信息类:
实例
<?php //学生信息 class Student { //属性 public $name; public $age; //private私有变量,子类或外部不能访问,只能在本类使用,除非添加获取器。 private $sex; //protected,子类可以访问,外部不能访问 protected $grade; //构造函数,初始化化模板 public function __construct($name,$age,$sex,$grade) { $this->name = $name; //姓名 $this->age = $age; //年龄 $this->sex = $sex; //性别 $this->grade = $grade; //成绩 // //预设输出 // echo $this->getInfo(); } //私有变量获取器 public function getSex() { return var_export($this->sex,true); } //私有变量获取器 public function getGrade() { return var_export($this->grade, true); } // //私有变量通过角色判断才可以获得相对数值 // public function getGrade1() { // $grade = '<br>成绩是:'; // if ($this->role === '老师') { // $grade .= var_export($this->grade,true); // }else { // $grade = '只有老师才能查看最终成绩'; // } // return var_export($grade); // } //输出函数 public function getInfo(){ $stu = '学生的'; $stu .= '姓名:'. $this->name; $stu .= '<br>年龄:'. $this->age; $stu .= '<br>性别:'. $this->getSex(); $stu .= '<br>成绩:'. $this->getGrade(); //返回输出模板 return $stu; } } $student = new Student('nick',27,'男',90); //输出信息 echo $student->getInfo(); echo '<hr>'; //继承 class Role extends Student{ //添加角色属性 public $role; //角色属性初始化 public function __construct($name, $age, $sex, $grade,$role) { parent::__construct($name, $age, $sex, $grade); $this->role = $role; } //重写输出模板getInfo() public function getInfo() { //先判断角色是否可以查看学生成绩,预设只有老师和管理员可以查看学生成绩 if ($this->role === '老师' || $this->role === 'admin'){ $stu = '登录人员:'. $this->role . '<br>'; $stu .= '学生的'; $stu .= '姓名:'. $this->name; $stu .= '<br>年龄:'. $this->age; $stu .= '<br>性别:'. $this->getSex(); $stu .= '<br>成绩:'. $this->getGrade(); //返回输出模板 return $stu; }else { $stu = '登录人员:'. $this->role . '<br>'; $stu .= '学生的'; $stu .= '姓名:'. $this->name; $stu .= '<br>年龄:'. $this->age; $stu .= '<br>性别:'. $this->getSex(); $stu .= '<br>成绩:'. '非老师或管理员,无权查看'; //返回输出模板 return $stu; } } } $student = new Role('Nick',27,'男',90,'学生'); //输出信息 echo $student->getInfo(); echo '<hr>'; //测试老师或者管理员是否可以查看完整学生信息 $teacher = new Role('Nick',27,'男',90,'老师'); //输出信息 echo $teacher->getInfo(); echo '<hr>'; //测试老师或者管理员是否可以查看完整学生信息 $admin = new Role('Nick',27,'男',90,'admin'); //输出信息 echo $admin->getInfo();
运行实例 »
点击 "运行实例" 按钮查看在线实例
最终在页面显示出的查询效果: