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

WBOY
Freigeben: 2016-07-25 09:05:24
Original
1153 Leute haben es durchsucht
  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. ?>
复制代码


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage