批改状态:未批改
老师批语:
使用类的构造、属性的访问、输出模板的设置、类的继承等完成一个学生信息类:
<?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();点击 "运行实例" 按钮查看在线实例
最终在页面显示出的查询效果:

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号