写自己的php框架(三)

今天来给框架添加一个view类,实际上就是一个模板类,用于提取html文件,然后通过操作它来控制html的内容,最后把html内容传送给控制器加以显示。framework\models\myview.class.php
<?php

class MyView {

    public function View($htmlFile='') {
       
        if (empty($htmlFile)) {
            $htmlFile =BASE_PATH .'/application/views/'.get_class($this).'.html';
        }
       
        ob_start();
        readfile($htmlFile);
        $contents = ob_get_contents();
        ob_get_clean();
       
        return $contents;
    }
}

为了说明方便,我们的类非常简单,但是却具备了所需要的主要功能,就是读入html然后传送给控制器。MyView类只有一个view函数,用于调用html文件,由目录可见这些html都被我们存放在views目录中,并且默认会和调用view的类的名字相同的一个html文件。

现在我们写个index.php在用户端的controllers文件夹中,他是一个被控制器调用的文件,打开网站的主页就会调用它。xxxweb\application\controllers\index.php
<?php
class index extends MyView implements IController  {
    public function loadindex() {
        return $this->view();
    }
}

我们的index类很简单吧, 它实现IController的loadindex接口,也就是控制器需要默认调用的方法。然后他还继承MyView类,这样view就会得知调用它的类名为index ,那么view() 会就自动把/application/views/index.html这个网页读取出来,然后把整个内容发送给前端控制器,由控制器显示器内容。如果不想默认调用index我们的view还支持一个参数。

这样我们框架的整体可运行部分就都出来了,当然我们还需要个配置文件,发现没有我们的php文件本身根本没有任何include函数,用户调用库,恩…… 我们都是自动调用的,因为框架文件会越来越多,而他们之间的交叉调用会越来越频繁,所以用__autoload()实现类自动调用。
下面我们写个初始化文件,初始化框架framework\models\initialization.php

<?php

function __autoload($class_name) {
    include dirname(__FILE__) . '/'.strtolower($class_name) . '.class.php';
}

也很简单吧,当然里面你还可以放别初始化信息等等。

然后是客户端的index.php的写法,这个index就是承接所有文件处理的总调度。
xxxweb\index.php

<?php

//网站物理地址
define ('BASE_PATH', dirname(__FILE__));
//框架存放地址
define ('FRAME_PATH', BASE_PATH . '/../framework/');
//网站存放基地址
define ('BASE_URI', '');
//网站绝对url
define ('BASE_URL', 'http://localhost/');

include FRAME_PATH . 'models/initialization.php';

try{
      
    $front_obj = JdFrontController::getInstance(); //初始化控制器
    $front_obj->Route();
    echo $front_obj->GetBody();
    
} catch (Exception $e) {
        echo '系统遇到关键性错误,暂时无法访问!';
}


删删改改弄出这些来 呵呵。总算看到一个include 。。。。。

如果你看了前两篇可能发现类名和方法名字有些改动,恩,我最近正在照着编程规范来修改框架,所以有些出入,即使就一个人写编程,程序规范也一样很重要。(ps:一个人写程序很无聊啊...........)

posted @ 2011-10-04 16:14  舍本  阅读(757)  评论(0编辑  收藏  举报