Blogger Information
Blog 49
fans 1
comment 0
visits 45367
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
用面向对象的知识编写一个学生信息的类(使用到类的构造、属性的访问、输出模板的设置、类的继承)2019年6月13日20点
Nick的博客
Original
1496 people have browsed it

使用类的构造、属性的访问、输出模板的设置、类的继承等完成一个学生信息类:

实例

<?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();

运行实例 »

点击 "运行实例" 按钮查看在线实例


最终在页面显示出的查询效果:

学生信息类的显示.png

Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post