广

PHP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    php中的MVC模式运用技巧

    2018-10-07 10:23:31 次阅读 稿源:互联网
    零七广告
    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)
    {
           //如何处理异常就是你的事了
    }

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告