Blogger Information
Blog 22
fans 1
comment 0
visits 17694
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
第十期PHP接口、抽象类、MVC框架案例练习(2020-01-16)
齐齐
Original
795 people have browsed it

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框架是类和命名空间综合使用,实现数据到页面的渲染。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

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