zoukankan      html  css  js  c++  java
  • PHP MVC运用

    php中的MVC模式运用 
    首先我来举个例子: 
    一个简单的文章显示系统 
    简单期间,我们假定这个文章系统是只读的,也就是说这个例子将不涉及文章的发布,现在开始了。 
    由于只涉及数据库的读取,所以我定义了两个interface 


    Interface DataOperation 

       public function select($info); 
       public function selectNum($info); 



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


    Interface DataSource 

       public static function getInstance(); 


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


    Interface Controller 

       public function pop(); 
       public function push(); 
       public function execute(); 

    Interface View 

       public function display(); 




    好了,我们来实现. 
    下面定义一个类来实现DataSource接口,这个类运用了单例模式 


    class DataBaseSource implements DataSource 

       public static $instance = null; 
       public static function getInstance() 
       { 
           if(self::$instance == null) 
           { 
               self::$instance == new PDO("mysql:host=localhost;dbname=article","root","123456"); 
           } 
           return self::$instance; 
       } 



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


    abstract class DataBaseOperation implements DataOperation 

       protected $db = null;  
       public function __construct() 
       { 
           $this->db = DataBaseSource::getInstance(); 
       } 
       public function select($info); 



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


    class Tech extends DataBaseOperation 

       public function select($info) 
       { 
           //在这里实现你的代码 
       } 
       public function selectNum($info) 
       { 
           //在这里实现你的代码 
       } 



    业务逻辑层我们实现了,下面是控制层 


    class ViewController implements Controller 

       private $mod = array(); 
       public function push($key,$value); 
       { 
           //实现你的代码,将类注册进$this->mod; 
       } 
       public function pop($key) 
       {         
           //实现你的代码,将$this->mod[$key]值为null; 
       } 
       public function execute($key) 
       { 
           //在这里实现你的代码,生成实例.注意利用php5新的特性,异常的处理 
       } 

    好了,下面是表现层,这里将实现Interface View 
    abstract ArticleView implements View 

       protected $smarty = null; 
       public function __construct() 
       { 
           $this->smarty = new Smarty(); 
           ///下面你可以定义smarty的一些属性值 
       } 

    具体的页面,例如科技文章的显示页面 
    class TechArticleView extends ArticleView 

       public function display() 
       { 
           //实现你的代码,调用Tech类和更多的DataBaseOperation子类 
       } 

    好了,下面是总入口  index.php 
    try 

       $viewController = new ViewController(); 
       $viewController->push("tech",TechArticleView);   
    //持续的增加   
       $mod = $_GET["mod"]:$_GET["mod"]:$_POST["mod"]; 
       //最后 
       $viewController->execute($key); 

    catch(Exception $e) 

           //如何处理异常就是你的事了 

  • 相关阅读:
    简单讲解Asp.Net Core自带IOC容器ServiceCollection
    C#配置文件configSections详解
    学习Linq之前必须知道的几种语法糖
    学习Linq之前必须要了解的扩展方法
    学习学习学习学习!!!!!!!!!!!!
    SpringBoot自动配置原理
    OAuth2
    微服务搭建学习笔记(一) 认证中心搭建
    Vue 学习记录
    Vue实例(1)
  • 原文地址:https://www.cnblogs.com/wgphp/p/7884549.html
Copyright © 2011-2022 走看看