여기에 코드를 게시하는 것은 이번이 처음입니다. 이 코드는 주로 PHP 템플릿 엔진 기술에 대한 연구입니다. 현재는 컴파일된 버전만 있으므로 더 많은 의견과 최적화 팁을 제공할 수 있기를 바랍니다.
3개의 파일로 구성되어 있는데 파일로 포맷하는 방법을 몰라서 복사만 가능합니다.
index.php는 구성 파일이므로 누구나 보시면 이해하실 것입니다
index.html 일부 사용 예
Templates.class.php 기본 클래스 나중에 완벽한 캐싱 버전이 출시될 예정이지만 친구나 전문가의 지도를 받아 이 템플릿 엔진에서는 컴파일과 캐싱만 처리하면 됩니다. , 나머지는 지금은 고려하지 않겠습니다. 물론 일반 교체 모드에도 f, w 등을 추가해야 합니다. . . 친구들이 내 질문을 공부할 수 있기를 바랍니다:
76376931 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/');
- //버퍼 오픈 여부
- define('NEW_CACHE', false);
- //버퍼 오픈 여부 결정
- NEW_CACHE? () : null;
- //템플릿 클래스 소개
- require ROOT_HOST.'/lib/Templates.class.php';
- $_moban = new Templates();
- $array = array(a=>'안녕하세요',b=>'몸이 좋지 않은데 많이 보고 싶어요',c=>'벌써 집에 왔는데 왜 아직도 그리워요? 나?');
- $xcvu = '안녕하세요, XCVU입니다';
- $zmq = "hi";
- $title = "템플릿 엔진 사용자 정의 방법입니다!";
- $ling = ""기능"이 수정 중이기 때문에????????????????";
-
- $_moban->ass('ling', $ling) ;
- $_moban->할당('title',$title);
- $_moban->할당('zmq', $zmq);
- $_moban->할당('xcvu' , $xcvu );
- $_moban->할당('abc',5>4);
- $_moban->할당('array', $array);
- $_moban-> display(' index.html');
-
- ?>
-
코드 복사
-
- *{ margin:0;}
- body{ 글꼴 크기:12px; 배경:#999;}
- .index { 여백:0 자동; 너비:960px; 줄 높이:50px ; padding:20px;color:#000;}
- .index a{color:#000; text-꾸밈:none;}
- .index a:hover{ color:#F0F;}
- < /style>
-
- BBBasd< /span>무슨 말을 해야 할지 모르겠지만 하고 싶은 말이 있습니다
-
-
-
-
-
-
1번
-
- < P>2
-
-
- .....
-
코드 복사
- /* 정보:Richard.z
- * 사이트:http://www.zmq.cc
- * E_mail:code@zmq .cc
- * 날짜:2013/01/02/17:30
- * */
- 클래스 템플릿{
- private $_CaChe;
- private $_Compiled;
- private $_HtmlFile;
- 비공개 $_FileVar;
- 비공개 $_KeyArr = array();
-
- 공개 함수 __construct(){
- if(!is_dir(HTML_DIR) || !is_dir(COMPILED_DIR) || ! is_dir(CACHE_DIR)){
- exit('디렉토리가 존재하지 않습니다!');
- }
- }
-
- 공용 함수 할당($_var, $_value){
- if (isset($_var) && !empty($_var)){
- $this->_KeyArr[$_var] = $_value;
- }else{
- exit('값을 설정하세요!' );
- }
- }
-
- 공용 함수 표시($_File){
- //设置模板적变weight
- $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('템플릿 파일 읽기 오류!');
- }
- //컴파일된 파일 날짜 < 날짜 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) { ?>',
- ' php } ?>',
- '',
- '');
- $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]) || 비어 있음($_File)){
- 종료('포함 파일 오류!');
- }
- $this->_FileVar = preg_replace($_preFile, "", $this->_FileVar);
- }
- }
-
- }
- ?>
复代码
- /* 정보:Richard.z
- * 사이트:http://www.zmq.cc
- * E_mail:code@zmq .cc
- * 날짜:2013/01/02/17:30 || 2013/01/14/21:35
- * */
- 클래스 템플릿{
- private $_CaChe;
- private $_Compiled;
- private $_HtmlFile;
- private $_FileVar;
- 비공개 $_KeyArr = array();
-
- 공개 함수 __construct(){
- if(!is_dir(HTML_DIR) || !is_dir(COMPILED_DIR) || !is_dir(CACHE_DIR)){
- exit('디렉토리가 존재하지 않습니다!');
- }
- }
-
- public function 할당($_var, $_value){
- if(isset($_var) && ! 비어 있음($_var)){
- $this->_KeyArr[$_var] = $_value;
- }else{
- exit('값을 설정하세요!');
- }
- }
-
- 공용 함수 표시($_File){
- //设置模板的变weight
- $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('템플릿 파일 읽기 오류!');
- }
- //컴파일된 파일 날짜 < 날짜 HtmlFile
- if(!file_exists($this->_Compiled) || filemtime($this->_Compiled) < filemtime($this->_HtmlFile)){
- $this->Set_Comilled ();
- }
- //컴파일 포함
- include $this->_Compiled;
- $this->SetCaChe();
- }
-
- //The 다시 생성하려는 경우 캐시 파일 설정
- 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 ;
- }
- }
- }
-
- //공용 함수
- 공용 함수 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]) || 비어 있음($_File) ){
- exit('Include 파일 오류가 발생했습니다!');
- }
- $this->_FileVar = preg_replace($_preFile, "" , $this->_FileVar);
- }
- }
-
- }
- ?>
复system代码
|