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) 

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

  • 相关阅读:
    VMware Workstation CentOS7 Linux 学习之路(2)--.net core环境安装
    VMware Workstation CentOS7 Linux 学习之路(1)--系统安装
    Castle IOC概念理解
    Visual Studio Nuget还原步骤
    Js中分号使用总结
    ABP理论学习之依赖注入
    C# 中字段和属性的使用时机
    C#基础知识梳理系列
    .Net 中的IL中间语言基本语法
    项目工程结构说明(Internal)
  • 原文地址:https://www.cnblogs.com/wgphp/p/7884549.html
Copyright © 2011-2022 走看看