博客列表 >第十期PHP接口、抽象类、MVC框架案例练习(2020-01-16)

第十期PHP接口、抽象类、MVC框架案例练习(2020-01-16)

齐齐
齐齐原创
2020年02月05日 18:11:13797浏览

PHP面向对象之接口

  1. interface iDemo
  2. {
  3. public function getName();
  4. public function getAge();
  5. }
  6. class Demo1 implements iDemo
  7. {
  8. // 增加自有成员
  9. public $name;
  10. protected $age;
  11. // 构造函数:初始化属性值
  12. public function __construct($name,$age)
  13. {
  14. $this->name=$name;
  15. $this->age=$age;
  16. }
  17. // 实现接口的类,需要将接口中的所有方法实现
  18. public function getName()
  19. {
  20. return "我是:".$this->name;
  21. }
  22. public function getAge()
  23. {
  24. return "我的年龄:".$this->age;
  25. }
  26. }
  27. // 实例化类
  28. $obj=new Demo1("齐齐",18);
  29. echo $obj->getName();
  30. echo "<br>";
  31. echo $obj->getage();

运行结果

PHP面向对象之抽象类

  1. // 抽象类用关键字abstract声明,不能实例化,只能做 为父类被继承
  2. abstract class Demo2
  3. {
  4. // 增加自有成员
  5. public $name;
  6. protected $age;
  7. // 构造函数:初始化属性值
  8. public function __construct($name, $age)
  9. {
  10. $this->name = $name;
  11. $this->age = $age;
  12. }
  13. // 实现接口的类,需要将接口中的所有方法实现
  14. public function getName()
  15. {
  16. return "我是:" . $this->name;
  17. }
  18. abstract public function getInfo();
  19. }
  20. class son extends Demo2
  21. {
  22. // 继承抽象类,子类必须实现父类中没有实现方法
  23. public function getInfo()
  24. {
  25. return "我是:".$this->times."的".$this->name."&nbsp;年龄:" . $this->age;
  26. }
  27. // 子类构造方法
  28. public function __construct($name, $age,$times)
  29. {
  30. parent::__construct($name, $age);
  31. $this->times=$times;
  32. }
  33. }
  34. // 实例化类
  35. $obj = new son("齐齐", 18,"第十期");
  36. echo $obj->getInfo();

运行结果

PHP面向对象之静态成员

  1. // 静态成员
  2. class Demo3
  3. {
  4. // 静态属性
  5. static $name="齐齐";
  6. // 非静态成员
  7. public $age=19;
  8. // 静态方法
  9. static function getInfo()
  10. {
  11. // return $this->name;
  12. return self::$name;
  13. // return $this->age;
  14. }
  15. }
  16. // 实例化类
  17. $obj=new Demo3();
  18. // echo $obj->getInfo;
  19. echo Demo3::getInfo();
  20. echo "<br>";
  21. echo $obj->age;

运行结果

PHP之MVC框架架构

模型类

  1. namespace mvc;
  2. // 模型类
  3. class Model{
  4. public function getData()
  5. {
  6. return [
  7. ['id'=>1,'food'=>"火锅",'rate'=>"一个月一次",'money'=>120],
  8. ['id'=>2,'food'=>"串串",'rate'=>"一周一次",'money'=>400],
  9. ['id'=>3,'food'=>"车厘子",'rate'=>"偶尔",'money'=>40],
  10. ['id'=>4,'food'=>"火龙果",'rate'=>"经常",'money'=>80],
  11. ];
  12. }
  13. }

视图类

  1. namespace mvc;
  2. // 视图类
  3. class View{
  4. public function apply($date)
  5. {
  6. $result.='<h3>我喜欢吃的食物</h3>';
  7. $result.='<table>';
  8. $result.='<tr><td>序列号</td><td>食品名称</td><td>频率</td><td>花费</td></tr>';
  9. foreach($date as $food){
  10. $result.='<tr><td>'.$food['id'].'</td><td>'.$food['food'].'</td><td>'.$food['rate'].'</td><td>'.$food['money'].'</td></tr>';
  11. }
  12. $result.='</table>';
  13. return $result;
  14. }
  15. }

控制器类

  1. namespace mvc;
  2. // 载入模型类
  3. require "Model.php";
  4. // 载入视图类
  5. require "View.php";
  6. // 控制器类
  7. class Controller{
  8. // 公共属性
  9. private $model;
  10. private $view;
  11. // 构造方法
  12. public function __construct($model,$view)
  13. {
  14. $this->model=$model;
  15. $this->view=$view;
  16. }
  17. public function show()
  18. {
  19. $data=$this->model->getData();
  20. return $this->view->apply($data);
  21. }
  22. }
  23. $model=new Model;
  24. $view=new View;
  25. // 实例化控制类
  26. $controller=new Controller($model,$view);
  27. // 访问类方法
  28. echo $controller->show();
  29. echo '<style>
  30. h3{text-align:center}
  31. table {margin:auto;border-collapse: collapse; border: 1px solid; width: 500px;height: 350px;text-align:center}
  32. td,th {border: 1px solid}
  33. </style>';

运行结果

总结

1.接口面向对象编程的多态的重要手段。创建接口使用关键字interface,。接口的方法只有声明,没有实现。类在实现接口时。需要将没有实现的方法全部实现。

2.当一个类中,有没有实现的方法。使用关键字abstract声明为抽象方法,此时的类变成一个抽象类,类名前同样需要加上关键字abstract。不能被实例化,只能做父类来使用。

3.静态成员,不属于对象,属于类。在类中用self::,类外类名::访问。不能像普通成员一样,直接用类实例$this访问。命名空间如同文件夹目录,让一些同名的函数方法类区分开。使用命名空间,防止重名。

4.MVC框架是类和命名空间综合使用,实现数据到页面的渲染。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议