#phpchina开户#
Smarty는 항상 중복되는 것으로 간주되어 왔습니다. Smarty가 중복된다고 생각하는 사람들은 중복되는 것 같습니다.... 이 이야기는 더 이상 하지 않겠습니다. 오늘은 누구나 자신만의 템플릿 엔진을 작성할 수 있도록 템플릿 엔진 작성 방법을 알려드리겠습니다. 이 글을 읽고 나면 Smarty에 대한 이해가 더욱 좋아질 것입니다. 내 템플릿 엔진은 Stupid("멍청하다"라는 뜻)라고 불리며, 저는 너무 영리한 것을 좋아하지 않습니다!
Stupid 템플릿 엔진은 3개의 파일로 구성되어 있습니다. 해당 파일은 stupid.class.php, Stupid_parser.class.php, Stupid_debugger.class.php입니다.
Stupid.class.php의 작업은 변수, 템플릿 경로 및 표시 기능을 설정하는 것이고 Stupid_parser.class.php는 템플릿 파일을 컴파일하는 데 사용되고 Stupid_debugger.class.php는 디버깅에 사용됩니다.
좋아요, 이제 Stupid.class.php를 작성해 봅시다.
1. stully.class.php라는 새 PHP 파일을 생성합니다.
우리 클래스는 Stupid라고 합니다. 먼저 멤버 변수를 디자인해 보겠습니다.
멤버 변수에는 $_tpl_vars, $_tpl_file, $_parser, $_debugger가 포함됩니다.
$_tpl_vars: 템플릿 변수를 저장하는 데 사용됩니다.
$_tpl_file: 템플릿 파일 이름을 저장하는 데 사용됩니다.
$_parser: StupidParser 개체를 저장하는 것은 컴파일된 개체입니다.
$_debugger: StupidDebug 개체를 저장하는 것은 디버깅 개체입니다.
아래에는 템플릿 폴더와 컴파일 폴더를 저장하는 데 사용되는 두 가지 상수가 정의되어 있습니다.
정의('TPL_DIR', './templates/');
Define('TPL_C_DIR', './templates_c/');
코딩 시작>>>
<?php
정의('TPL_DIR', './templates/');
정의('TPL_C_DIR', './templates_c/')
클래스 바보 {
비공개 $_tpl_vars;
비공개 $_tpl_file;
비공개 $_parser;
비공개 $_debugger;
}
?>
생성자 작성 시작>>>
public function Stupid() {
if(!is_dir(TPL_DIR) || !is_dir(TPL_C_DIR)) {
exit('오류: 템플릿 폴더와 컴파일 폴더를 올바르게 설정하세요.');
}
}
생성자에서 템플릿 경로와 컴파일 경로가 올바르게 설정되었는지 확인합니다.
우리 클래스에는 주로 다음과 같은 메서드가 있습니다.
할당(), set_tpl_dir(), set_parsed_dir(), 디스플레이(), 디버그().
할당() 메소드:
할당()의 목적은 템플릿 변수를 설정하는 것입니다. 코드는 다음과 같습니다. >>>
public function 할당($var, $value) {
if(isset($var) && Trim($var) != '') {
$this->_tpl_vars[$var] = $값;
사실을 반환;
} 또 다른 {
Exit('오류: 변수 이름을 설정해주세요.');
}
}
먼저 사용자가 변수 이름을 설정했는지 확인합니다. isset($var) && Trim($var) != ''를 사용하여 확인합니다. Trim($var) != ''는 사용자가 변수 이름을 공백으로 설정하는 것을 방지합니다.
멤버
변수에 저장됩니다.
display() 메소드는 Stupid 클래스에서 가장 중요한 메소드로, 템플릿이 업데이트되었는지 여부를 표시하고 감지하는 데 사용됩니다. 업데이트되지 않으면 원래 컴파일된 파일을 다시 컴파일합니다. 사용되는
코드는 다음과 같습니다. >>>
public function display( $tpl_file) {
$template_file = TPL_DIR.$tpl_file;
if(!file_exists($template_file)) {
exit('오류: 템플릿 파일이 존재하지 않습니다.');
}
$parsed_file = TPL_C_DIR.md5($tpl_file).'.php';
if(!file_exists($parsed_file) || filemtime($parsed_file) < filemtime($template_file)) {
require_once './stupid_parser.class.php';
$this->_parser = 새로운 StupidParser();
$this->_parser->compile($tpl_file);
}
$parsed_file 포함;
}
이 방법은 !file_exists($parsed_file)||filemtime($parsed_file)< filemtime($template_file) 문을 기반으로 컴파일되었는지, 템플릿 파일이 컴파일되지 않았는지 또는 업데이트되었는지 여부를 확인합니다. 템플릿 파일이 업데이트되었으므로 다시 컴파일해야 합니다. StupidParser 객체를 생성하고 템플릿 파일을 컴파일한 후 컴파일된 템플릿 파일을 소개하겠습니다. 일반적인 PHP 파일입니다.
debug() 메서드입니다.
Debugg() 메소드는 비교적 간단하며, stupid_debugger.class.php 파일을 도입하고, StupidDebuger 객체를 생성하고, 디버깅을 위해 StupidDebuger의 시작 메소드를 호출합니다.
코드는 다음과 같습니다. >>>
공용 함수 디버그($tpl_file) ) {
if (include_once("stupid_debugger.class.php")) {
$this->_debugger = new StupidDebugger(TPL_DIR.$tpl_file);
$this->_debugger->start();
} 또 다른 {
exit('오류: 디버거 클래스 파일이 존재하지 않습니다.');
}
}
이제 Stupid 클래스가 완성되었습니다! 다음에는 StupidParser 클래스 작성에 대해 소개하겠습니다. 의견이나 제안 사항이 있으면
<?php를
제출해
주세요.
정의('TPL_DIR', './templates/');
정의('TPL_C_DIR', './templates_c/');
클래스 바보 {
비공개 $_tpl_vars;
비공개 $_tpl_file;
비공개 $_parser;
비공개 $_debug;
공개 함수 Stupid() {
if(!is_dir(TPL_DIR) || !is_dir(TPL_C_DIR)) {
exit('오류: 템플릿 폴더와 컴파일 폴더를 올바르게 설정하세요.');
}
}
공개 함수 할당($var, $value) {
if(isset($var) && Trim($var) != '') {
$this->_tpl_vars[$var] = $값;
사실을 반환;
} 또 다른 {
Exit('오류: 변수 이름을 설정해주세요.');
}
}
공개 함수 표시($tpl_file) {
$template_file = TPL_DIR.$tpl_file;
if(!file_exists($template_file)) {
exit('오류: 템플릿 파일이 존재하지 않습니다.');
}
$parsed_file = TPL_C_DIR.md5($tpl_file).'.php';
if(!file_exists($parsed_file) || filemtime($parsed_file) < filemtime($template_file)) {
require_once './stupid_parser.class.php';
$this->_parser = 새로운 StupidParser();
$this->_parser->compile($tpl_file);
}
$parsed_file 포함;
}
함수 디버그($tpl_file) {
if (include_once("stupid_debugger.class.php")) {
$this->_debugger = new StupidDebugger($this->_template_dir . $tpl_file);
$this->_debugger->start();
} 또 다른 {
exit('오류: 디버거 클래스 파일이 존재하지 않습니다.');
}
}
}
?>