Maison  >  Article  >  développement back-end  >  php mvc模式的文章系统-学习mvc

php mvc模式的文章系统-学习mvc

WBOY
WBOYoriginal
2016-07-25 09:05:241154parcourir
  1. Interface DataOperation
  2. {
  3. public function select($info);
  4. public function selectNum($info);
  5. }
复制代码

以上的interface定义了读取数据的接口,select方法将返回所需要的文章。 selectNum方法返回文章的总数,这是分页显示时用到的。 $info是一个数组,用来存放查询条件。

  1. Interface DataSource
  2. {
  3. public static function getInstance();
  4. }
复制代码

这里假定操作的是数据库,DataSource定义一个接口,所有实现该接口的实例类将得到一个静态对象。

  1. Interface Controller
  2. {
  3. public function pop();
  4. public function push();
  5. public function execute();
  6. }
  7. Interface View
  8. {
  9. public function display();
  10. }
复制代码

定义一个类来实现DataSource接口,运用了单例模式。

  1. class DataBaseSource implements DataSource
  2. {
  3. public static $instance = null;
  4. public static function getInstance()
  5. {
  6. if(self::$instance == null)
  7. {
  8. self::$instance == new PDO("mysql:host=localhost;dbname=article","root","123456");
  9. }
  10. return self::$instance;
  11. }
  12. }
复制代码

定义一个抽象类来实现DataOperation,我们要共享一个数据库连接,所以在抽象类中将这个数据库对象初始化,这样,所有的子类都能共享这个对象。

  1. abstract class DataBaseOperation implements DataOperation
  2. {
  3. protected $db = null;
  4. public function __construct()
  5. {
  6. $this->db = DataBaseSource::getInstance();
  7. }
  8. public function select($info);
  9. }
复制代码

下面来写一个业务子类来实现抽象类DataBaseOperation

  1. class Tech extends DataBaseOperation
  2. {
  3. public function select($info)
  4. {
  5. //在这里实现你的代码
  6. }
  7. public function selectNum($info)
  8. {
  9. //在这里实现你的代码
  10. }
  11. }
复制代码

实现了业务逻辑层后,开如控制层吧。

  1. class ViewController implements Controller

  2. {
  3. private $mod = array();
  4. public function push($key,$value);
  5. {
  6. //实现你的代码,将类注册进$this->mod;
  7. }
  8. public function pop($key)
  9. {
  10. //实现你的代码,将$this->mod[$key]值为null;
  11. }
  12. public function execute($key)
  13. {
  14. //在这里实现你的代码,生成实例.注意利用php5新的特性,异常的处理
  15. }
  16. }
  17. //表现层,这里将实现Interface View
  18. abstract ArticleView implements View
  19. {
  20. protected $smarty = null;
  21. public function __construct()
  22. {
  23. $this->smarty = new Smarty();
  24. ///下面你可以定义smarty的一些属性值
  25. }
  26. }
  27. 具体的页面,例如科技文章的显示页面
  28. class TechArticleView extends ArticleView
  29. {
  30. public function display()
  31. {
  32. //实现你的代码,调用Tech类和更多的DataBaseOperation子类
  33. }
  34. }
  35. //总入口 index.php

  36. try
  37. {
  38. $viewController = new ViewController();
  39. $viewController->push("tech",TechArticleView);
  40. //持续的增加
  41. $mod = $_GET["mod"]:$_GET["mod"]:$_POST["mod"];
  42. //最后
  43. $viewController->execute($key);
  44. }
  45. catch(Exception $e)
  46. {
  47. //处理异常
  48. }
  49. ?>
复制代码


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn