乙個編譯型的PHP模板引擎大致實現過程

2022-09-22 22:27:19 字數 2795 閱讀 2886

jtemplate.class.php

001<?php

002/**

003 * @author  jiawei

004 * @completed in 2012-6-29 0:23

005 */

006class jtemplate

024    /**

025     * 顯示模板

026     * @param string $filename 模板檔名

027     */

028    public function display($filename)

036            extract($this->templatevar);

037            include $compilefilename;

038        }else

041    }

042    /**

043     * 獲取編譯檔名

044     */

045    private function get_compile_file()

050    /**

051     * 編譯

052     */

053    private function compile()

058        fclose($filehandle);

059        $filecontent = $this->template_replace($filecontent);

060        //$compilefile = $this->get_compile_file($filename);

061        $filehandle = @fopen($this->templatecompiledir.'/'.$this->file_safe_name().'.php','w');

062        if($filehandle)else

068    }

069    /**

070     * 模板傳值

071     * @param string $valuename 模板中使用的變數名

072     * @param $value 變數值

073     */

074    public function assign($valuename,$value)

077    

078    /**

079     * 模板正則替換

080     * @param string $content 替換內容

081     * @return  string 替換過後的內容

082     */

083    private function template_replace($content)/s',

094            '/\/s',

095            '/\/s',

096            '/\/s',

097            '/\/s',

098            '/\/s',

099        );

100        

101        $changearray = array(

102            '<?php if(!empty($$1)&&is_array($$1))if(!empty($countloop))$countloop--;}else?>',

105            '<?php }if(!empty($countloop))$countloop--;}?>',

106            '<?php if($1)?>',

108            '<?php }elseif($1)else

119    /**

120     * 刪除舊檔案

121     */

122    private function del_old_file()

129    }

130    /**

131     * 編譯檔名安全處理方法

132     * @return  string 返回編譯檔名

133     */

134    private function file_safe_name()

138    

139    /**

140     * 錯誤輸出函式

141     * @param string $content 錯誤輸出資訊

142     */

143    private function error($content)

152}

153?>

index.php

view sourceprint?

01<?php

02/**

03 * @author jiawei

04 */

05include_once 'jtemplate/jtemplate.class.php';

06$template = new jtemplate('template','compile');

07$a = array('a','b','c','d');

08define('_core_','aaa');

09$template->assign('a', $a);

10$template->display('index.html');

11?>

作者:袁家偉

乙個自己寫的PHP模板引擎

這是乙個自己寫的編譯型的模板引擎 不包括快取部分 貼上 有問題可以隨時跟帖。單檔案版 jtemplate.class.php templatedir templatedir this templatecompiledir templatecompliedir 顯示模板方法 param string ...

寫了乙個簡單實用的PHP模板引擎

php模板引擎很多,但要麼很龐大,要麼效率很低,如果只是要實現php 與程式分離,就只要乙個簡單的模板引擎就行了。今天抽空寫了乙個。xt.class.php created on 2011 10 08 author xyl this is template engine for your site ...

DIY乙個前端模板引擎 一

下面是我定義好的html 模板字串。var template span div 這是我的資料 var scope 好了,現在怎麼把資料渲染到模板上面呢?很自然的想到 正規表示式 第一步 可以使用字串的replace 函式。這是正則 var regex g 好了,現在編寫乙個函式,我把我的模板引擎就叫...