ここにコードを投稿するのはこれが初めてです。このコードは主に PHP テンプレート エンジン テクノロジの研究用です。現在はコンパイルされたバージョンしかありません。さらに多くの意見や最適化のヒントを提供していただければ幸いです。
ファイルとしてフォーマットする方法がわからないので、コピーすることしかできません。
index.phpは設定ファイルです、見れば誰でも理解できます
index.html 使用例
Templates.class.php 基本クラス キャッシュの完全なバージョンが後でリリースされる予定ですが、友人や専門家の指導により、このテンプレート エンジンはコンパイルとキャッシュ、その他の考慮事項を処理するだけで済みます。当面は考慮されません。もちろん、通常の置換モードにも f、w などを追加する必要があります。 。 。 友達が私の Q: を研究してくれることを願っています
Copy_3_of_Templates.class.php ファイルにキャッシュ メソッドが追加されました。プロジェクト内の一部のページをキャッシュする必要があるかどうかは考慮されていません。将来、友達が私に参加できることを願っています。
header('Content-Type:text/html;charset=utf-8'); define('ROOT_HOST',dirname(__FILE__));define('HTML_DIR',ROOT_HOST. '/moban/');define('COMPILED_DIR',ROOT_HOST.'/data/compiled/');define('CACHE_DIR',ROOT_HOST.'/data/cache/');// buffer define('NEW_CACHE', false);//バッファを開くかどうかを決定します NEW_CACHE? ob_start(): null;//テンプレート クラスを導入します require ROOT_HOST.'/lib/Templates.class.php' ; $_moban = new Templates();$array = array(a=>'こんにちは',b=>'あまり上手ではありませんが、とても寂しいです',c=> 「みんなここにいるよ、家にいるのに、どうしてまだ私がいなくて寂しいの?」);$xcvu = 'こんにちは、XCVU です';
$zmq = "こんにちは";
$title = "これは XCVU ですテンプレートエンジンのカスタマイズ方法!" ;
$ling = "「関数」が変更されているため???????????????";
$_moban->assign('ling' , $ling);
$ _moban->assign('title',$title);
$_moban->assign('zmq', $zmq);
$_moban->assign('xcvu', $ xcvu);
$_moban->assign('abc',5>4);
$_moban->assign('array', $array);
$_moban->display('index.html') ;
?>
コードをコピー
- < ;/title>
- *{ margin:0; padding:0;}
- body{ color:#fff; .index {マージン:0 自動; 幅:960px; 背景:#fff; 高さ:50px; パディング:20px; カラー:#000; :none;}
- .index a:hover{ color:#F0F;}
- <スパンスタイル="color:#000;">BBBasd何を言えばいいのかわからない、でも言いたいことがある< br />
-
-
-
-
-
-
No.1
-
-
いいえ。 2
-
-
-
- ........
-
-
-
-
- コードをコピー
-
- /* about:Richard.z
- * site:http://www.zmq.cc
- * E_mail:code@zmq.cc
- * date:2013/01/02/17: 30
- * */
- class Templates{
- private $_CaChe;
- private $_Compiled;
- private $_HtmlFile;
- private $_FileVar;
- private $_KeyArr = array();
-
- public function __construct(){
- if(! is_dir(HTML_DIR) || !is_dir(COMPILED_DIR) || !is_dir(CACHE_DIR)){
- exit('ディレクトリが存在しません!');
- }
- }
-
- public function assign($_var, $_value){
- if(isset($_var) && !empty($_var)){
- $this->_KeyArr[$_var] = $_value;
- }else{
- exit('値を設定してください!');
- }
- }
-
- public function display($_File){
- //設置モジュールの量
- $this->_HtmlFile = HTML_DIR.$_File;
- //設置モジュール
- $this->Compiled = COMPILED_DIR.md5($ _File).$_File.'.php';
- //設置缓存
- $this->_CaChe = CACHE_DIR.md5($_File).$_File.'.html';
- //模板の有無判断
- if( !file_exists($this->_HtmlFile)){
- exit('テンプレート ファイルが存在しません');
- }
- //赋值和判断读取
- if(!$this->_FileVar = file_get_contents($this- >_HtmlFile)){
- exit('テンプレート ファイルの読み取りエラー!');
- }
- //コンパイル済みファイルの日付を編集する場合 < date HtmlFile
- if(!file_exists($this->_Compiled) || filemtime($this->_Compiled) < filemtime($this->_HtmlFile)){
- $this->Set_Comilled();
- }
- //コンパイル済みを含める
- include $this->_Compiled;
- }
-
- //パブリック関数
- パブリック関数 Set_Comilled(){
- $this->SetArr();
- $this->SetInclude();
- if(!file_put_contents($this->>_Compiled, $this ->_FileVar)){
- exit('コンパイルされたファイルでエラーが発生しました!');
- }
- }
- //arr
- プライベート関数 SetArr(){
- $_preaa = array(
- '//',
- '//',
- '//',
- '//',
- '//',
- '//',
- '//',
- '//');
- $_prebb = array(
- ' _KeyArr["$1"];?>',
- '_KeyArr["$1"]) {?>',
- '',
- '',
- '_KeyArr["$1"] as $$2=>$$3) { ?>',
- ' ',
- '',
- '');
- $this->_FileVar = preg_replace($_preaa, $_prebb, $this->_FileVar);
- if(preg_match($_preaa[0], $this->_FileVar)){
- $this->_FileVar = $this->SetArr ($this->_FileVar);
- }
- }
-
- //Include
- プライベート関数 SetInclude(){
- $_preFile = '//';
- if(preg_match($_preFile, $this->_FileVar,$_File)){
- if(!file_exists($_File[1]) || empty($_File)){
- exit('インクルード ファイル エラーです!');
- }
- $this->_FileVar = preg_replace($_preFile, "", $this->_FileVar);
- }
- }
-
- }
- ?>
复制代
- /* about:Richard.z
- * site:http://www.zmq.cc
- * E_mail:code@zmq.cc
- * date:2013/01/02/17: 30 || 2013/01/14/21:35
- * */
- class Templates{
- private $_CaChe;
- private $_Compiled;
- private $_HtmlFile;
- private $_FileVar;
- private $_KeyArr = array();
-
- public function __construct(){
- if(!is_dir(HTML_DIR) || !is_dir(COMPILED_DIR) || !is_dir(CACHE_DIR)){
- exit('ディレクトリが存在しません!');
- }
- }
-
- public function assign ($_var, $_value){
- if(isset($_var) && !empty($_var)){
- $this->_KeyArr[$_var] = $_value;
- }else{
- exit('設定してくださいあなたの値!');
- }
- }
-
- public function display($_File){
- //設置モジュールの变量
- $this->_HtmlFile = HTML_DIR.$_File;
- //設置编译
- $this-> ;_Compiled = COMPILED_DIR.md5($_File).$_File.'.php';
- //設置保存
- $this->_CaChe = CACHE_DIR.md5($_File).$_File.'.html';
- / / テンプレートが存在するかどうか判断
- if(!file_exists($this->_HtmlFile)){
- exit('テンプレートファイルが存在しません');
- }
- //赋值和判断读取
- if(!$this-> ;_FileVar = file_get_contents($this->_HtmlFile)){
- exit('テンプレート ファイルの読み取りエラー!');
- }
- //if edit コンパイル済みファイルの日付 < date HtmlFile
- if(!file_exists($this->_Compiled) || filemtime($this->_Compiled) < filemtime($this->_HtmlFile)){
- $this->Set_Comilled();
- }
- //Compiledを含める
- include $this->_Compiled;
- $this->SetCaChe();
- }
-
- //再生成したい場合の設定キャッシュファイル
- private function SetCaChe(){
- if(!file_exists($this->_CaChe) || filemtime($this->_CaChe) < filemtime($this->_Compiled)){
- if(NEW_CACHE){
- file_put_contents($this-> _CaChe, ob_get_contents());
- ob_end_clean();
- include $this->_CaChe;
- }
- }
- }
-
- // public function
- public function Set_Comilled(){
- $this->SetArr();
- $this->SetInclude();
- if(!file_put_contents($this->_Compiled, $this->_FileVar)){
- exit('コンパイルされたファイルでエラーが発生しました!');
- }
- }
- / /arr
- プライベート関数 SetArr(){
- $_preaa = array(
- '//',
- '//',
- '//',
- '//' ,
- '//',
- '//',
- '//',
- '/
|