源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

php中的MVC模式运用技巧

  • 时间:2021-11-01 08:12 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要: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) {        //如何处理异常就是你的事了 }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部