最新消息:xilo的博客2016重新上线,感谢新老朋友的热情关注。

PHP.class的学习(二)

学习 xilo 1285浏览 0评论

接下来,再再努力!

摘选二:(注:本教程来源网上,方便学习之用。)

php中的MVC模式运用

首先我来举个例子:
一个简单的文章显示系统
简单期间,我们假定这个文章系统是只读的,也就是说这个例子将不涉及文章的发布,现在开始了。
由于只涉及数据库的读取,所以我定义了两个interface
[php]
Interface DataOperation
{
    public function select($info);
    public function selectNum($info);
}[/php]

上面这interface定义了读取数据的接口,select方法将返回所需要的文章。selectNum方法返回文章的总数,这是分页显示时用到的。$info是一个数组,用来存放查询条件
[php]
Interface DataSource
{
    public static function getInstance();
}[/php]

这里我们假定我们操作的是数据库,DataSource定义一个接口,所有实现该接口的实例类将得到一个静态对象
[php]
Interface Controller
{
    public function pop();
    public function push();
    public function execute();
}
Interface View
{
    public function display();
}[/php]
好了,我们来实现.
下面定义一个类来实现DataSource接口,这个类运用了单例模式
[php]
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”,”123″);
        }
        return self::$instance;
    }
}[/php]

定义一个抽象类来实现DataOperation,我们要共享一个数据库连接,所以我在抽象类中将这个数据库对象初始化,这样,所有的子类都能共享这个对象
[php]
abstract class DataBaseOperation implements DataOperation
{
    protected $db = null;
    public function __construct()
    {
        $this->db = DataBaseSource::getInstance();
    }
    public function select($info);
    public function select($info);
}[/php]
下面我来写一个业务子类来实现抽象类DataBaseOperation
[php]
class Tech extends DataBaseOperation
{
    public function select($info)
    {
        //在这里实现你的代码
    }
    public function selectNum($info)
    {
        //在这里实现你的代码
    }
}[/php]
业务逻辑层我们实现了,下面是控制层
[php]
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新的特性,异常的处理
    }
}[/php]
好了,下面是表现层,这里将实现Interface View
[php]
abstract ArticleView implements View
{
    protected $smarty = null;
    public function __construct()
    {
        $this->smarty = new Smarty();
        ///下面你可以定义smarty的一些属性值
    }
}[/php]
具体的页面,例如科技文章的显示页面
[php]
class TechArticleView extends ArticleView
{
    public function display()
    {
        //实现你的代码,调用Tech类和更多的DataBaseOperation子类
    }
}[/php]
好了,下面是总入口  index.php
[php]
try
{
    $viewController = new ViewController();
    $viewController->push(“tech”,TechArticleView); 
//持续的增加 
    $mod = $_GET[“mod”]:$_GET[“mod”]:$_POST[“mod”];
    //最后
    $viewController->execute($key);
}
catch(Exception $e)
{
        //如何处理异常就是你的事了
}
[/php]

转载请注明:xilo blog » PHP.class的学习(二)

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址