Table des matières
php中的MVC模式运用
Maison développement back-end tutoriel php php中的MVC模式运用_PHP教程

php中的MVC模式运用_PHP教程

Jul 13, 2016 am 10:59 AM
mvc php 例子 article 模式 de 简单 运用 首先

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);
    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)
{
        //如何处理异常就是你的事了
}

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/631903.htmlTechArticlephp中的MVC模式运用 首先我来举个例子: 一个简单的文章显示系统 简单期间,我们假定这个文章系统是只读的,也就是说这个例子将不涉及文...
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Date et heure de CakePHP

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Configuration du projet CakePHP

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Téléchargement de fichiers CakePHP

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Routage CakePHP

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

Discuter de CakePHP

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Comment configurer Visual Studio Code (VS Code) pour le développement PHP

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

Guide rapide CakePHP

See all articles