博客列表 >01月16日作业:模仿课堂mvc框架案例

01月16日作业:模仿课堂mvc框架案例

李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰
李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰原创
2020年01月31日 22:55:06780浏览

作业一

1、代码:

(1)、view代码:

  1. <?php
  2. namespace mvc;
  3. //输出显示类
  4. class Show
  5. {
  6. public function show($data){
  7. $table='<table>';
  8. $table.='<caption>员工信息表</caption>';
  9. $table.='<tr><th>ID</th><th>工号</th><th>名字</th><th>性别</th><th>职位</th><th>工龄</th></tr>';
  10. foreach ($data as $staff){
  11. $table.='<tr>
  12. <td>'.$staff['id'].'</td>
  13. <td>'.$staff['工号'].'</td>
  14. <td>'.$staff['name'].'</td>
  15. <td>'.$staff['sex'].'</td>
  16. <td>'.$staff['position'].'</td>
  17. <td>'.$staff['seniority'].'</td>
  18. </tr>';
  19. }
  20. $table.='</table>';
  21. return $table;
  22. }
  23. }

(2)model代码

  1. <?php
  2. namespace mvc;
  3. //定义获取数据类
  4. class Model
  5. {
  6. public function get_data(){
  7. return [
  8. ['id'=>1,'工号'=>'001','name'=>'李总','sex'=>1,'position'=>'董事长','seniority'=>10],
  9. ['id'=>2,'工号'=>'002','name'=>'小花','sex'=>0,'position'=>'财务会计','seniority'=>4],
  10. ['id'=>3,'工号'=>'003','name'=>'小王','sex'=>1,'position'=>'后勤','seniority'=>3],
  11. ['id'=>4,'工号'=>'004','name'=>'小七','sex'=>0,'position'=>'人事','seniority'=>7],
  12. ['id'=>5,'工号'=>'005','name'=>'小八','sex'=>1,'position'=>'销售','seniority'=>3],
  13. ];
  14. }
  15. }

(3)controls代码

  1. <?php
  2. namespace mvc;
  3. //导入数据操作
  4. require 'model.php';
  5. //导入视图显示
  6. require 'view.php';
  7. class Controls
  8. {
  9. public $model;
  10. public $view;
  11. public function __construct($model,$view){
  12. $this->model=$model;
  13. $this->view=$view;
  14. }
  15. public function control(){
  16. $data=$this->model->get_data();
  17. return $this->view->show($data);
  18. }
  19. }
  20. $model=new Model();
  21. $view=new Show();
  22. $index=new Controls($model,$view);
  23. echo $index->control();
  24. #注释css样式
  25. echo '<style>
  26. table {border-collapse: collapse; border: 1px solid; width: 500px;height: 150px}
  27. caption {font-size: 1.2rem; margin-bottom: 10px;}
  28. tr:first-of-type { background-color:lightblue;}
  29. td,th {border: 1px solid}
  30. td:first-of-type {text-align: center}
  31. </style>';

2、效果图

作业二

1月16日知识点总结

1、关于类的相关知识点:
extends:继承 例:B类继承了A类

  1. class A {}
  2. class B extends A {}

2、封装:类内方法和属性使用声明:
(1)public:公共的,类内部和外部都可以直接调用,包含子类
(2)private:私有的,仅类的内部可以直接调用
(3)protected:保护的,不允许类外部使用,但子类可以调用
3、静态变量:static 类内外都可以使用:self::$static/ClassName::$static
可以直接使用类名直接访问(不需要实列化):ClassName::$static
静态方法(声明的静态函数)不能用实例访问,内部不允许使用$this
4、接口:interface 实现接口的类, 必须将接口中声明的方法全部实现
使用接口的类关键字:implements
例:

  1. <?php
  2. interface iDome
  3. {
  4. public function get_info();
  5. public function get_data();
  6. }
  7. class Demo implements iDome
  8. {
  9. public $name;
  10. protected $age;
  11. public function __construct($name,$age)
  12. {
  13. $this->name=$name;
  14. $this->age=$age;
  15. }
  16. public function get_info()
  17. {
  18. return $this->name.'的年龄'.$this->age;
  19. }
  20. public function get_data()
  21. {
  22. return [$this->name,$this->age];
  23. }
  24. }
  25. $a=new Demo('ldy',27);
  26. echo $a->name,'<br>';
  27. echo $a->get_info(),'<br>';
  28. echo print_r($a->get_data(),true);
  • 实例效果

    5、抽象类:需要使用关键字:abstract 来声明,其中必须有一个未实现函数(只声明)
    抽象类不能备实列化,只能当父类来继承,通过子类访问
    7、命名空间:namespace A; namespace A {}主要用于解决类命名冲突 \A 访问全局空间 \
    函数或常量,当前空间找不到, 就到全局找, 但是类不会
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议