>백엔드 개발 >PHP 튜토리얼 >PHP 템플릿 엔진 수동 개발 1 (35)

PHP 템플릿 엔진 수동 개발 1 (35)

WBOY
WBOY원래의
2016-08-08 09:23:37913검색

스마티 템플릿 엔진을 모델로 한 템플릿은 TPL이라고 합니다.

템플릿이라고 부르는 것은 주로 HTML 마크업으로 구성된 언어로 작성된 페이지이지만 동적으로 생성된 콘텐츠(파싱 태그)를 나타내는 방법도 있는 웹 템플릿입니다. 템플릿 엔진은
템플릿에서 HTML 코드를 생성하고 포함할 동적 콘텐츠를 지정할 수 있게 해주는 소프트웨어 라이브러리입니다.

1 템플릿 엔진의 특징:

1. 분리 장려: 전체 시스템의 가독성과 유지 관리성을 향상시킵니다.
2. 분업 촉진: 프로그래머와 아티스트가 자신의 디자인에 집중할 수 있도록 합니다.
3. PHP보다 구문 분석이 더 쉽습니다. 컴파일된 파일과 캐시된 파일은 더 빠르게 로드되고 더 적은 리소스를 차지합니다.

4. 보안 강화: 우발적인 삭제 및 우발적인 액세스를 방지하기 위해 템플릿 디자이너가 안전하지 않은 작업을 수행하는 기능을 제한할 수 있습니다.

2가지 템플릿 엔진 제품:

PHP에는 Smarty, Heyes Templates Class,
FastTemplate 등 팀에서 특별히 개발한 다양한 템플릿 엔진이 있습니다. 이러한 템플릿 엔진을 직접 사용하면 위의
기능 중 많은 부분을 완벽하게 구현할 수 있습니다. 그러나 초보자의 경우 템플릿 엔진의 원리를 이해하면 템플릿을 사용해야 하는 이유에 대한 더 깊은 이해를 제공할 수 있습니다.

3 TPL 템플릿 흐름도

자체 템플릿 엔진을 만들 때 가장 큰 이점은 단순성입니다. 많은 팀이 작성한 템플릿 엔진은 강력한 기능을 많이 갖고 있기 때문에 보안성도 매우 높습니다. 하지만 단점은 많이 사용하지 않고 크기가 매우

부풀어 오른다는 점입니다.

 

4. TPL 템플릿 엔진 생성

1. 초기 템플릿에 필요한 폴더와 파일을 생성합니다

a) 비즈니스 로직 작성에 사용되는 index.php 메인 파일.

b) template.inc.php 템플릿 초기화 파일로, 초기 템플릿 정보에 사용됩니다.
c) 템플릿 디렉토리에는 모든 템플릿 파일이 저장됩니다.
d) template_c 디렉토리에는 모든 컴파일된 파일이 저장됩니다.
e) 캐시 디렉토리에는 모든 캐시 파일이 저장됩니다.
f) 포함 디렉토리에는 모든 클래스 파일이 저장됩니다.
g) config 디렉토리는 템플릿 시스템 변수 구성 파일을 저장합니다.

2. 웹 사이트 루트 디렉터리에 있는 Index.php 파일 코드

<span>//</span><span>设置编码为utf-8</span>header(<span>'</span><span>Content-Type:text/html;charset=utf-8</span><span>'</span><span>);
</span><span>//</span><span>网站根目录</span>define(<span>'</span><span>ROOT_PATH</span><span>'</span><span>,dirname(__FILE__));
</span><span>//</span><span>存放模板文件夹</span>define(<span>'</span><span>TPL_DIR</span><span>'</span>,ROOT_PATH.<span>'</span><span>/templates/</span><span>'</span><span>);
</span><span>//</span><span>编译文件夹</span>define(<span>'</span><span>TPL_C_DIR</span><span>'</span>,ROOT_PATH.<span>'</span><span>/templates_c/</span><span>'</span><span>);
</span><span>//</span><span>缓存文件夹</span>define(<span>'</span><span>CACHE_DIR</span><span>'</span>,ROOT_PATH.<span>'</span><span>/cache/</span><span>'</span>);
3 포함 폴더에 있는 Templates.class.php — 여부를 확인하기 위해 추가됨 해당 디렉토리가 존재함 Method

<span>//</span><span>创建一个构造方法</span><span>public</span><span> function __construct() {
</span><span>//</span><span>验证一下目录是否存在</span><span>if</span> (!is_dir(TPL_DIR) || !is_dir(TPL_C_DIR) || !<span>is_dir(CACHE_DIR)) {
    exit(</span><span>'</span><span>ERROR:模板文件夹或者编译文件夹或者缓存文件夹没有创建!</span><span>'</span><span>);
  }
}</span>
 4 samrty에도 있습니다. 디스플레이 프로토타입 방식

계속

<span>//</span><span>将模板导入到php文件中</span><span>public</span><span> function display($_file) {
</span><span>//</span><span>设置模板文件的路径</span>  $_tplFile =<span> TPL_DIR.$_file;
</span><span>//</span><span>判断模板文件是否存在</span><span>if</span> (!<span>file_exists($_tplFile)) {
    exit(</span><span>'</span><span>ERROR:模板文件不存在!</span><span>'</span><span>);
  }
</span><span>//</span><span>设置编译文件的文件名</span>  $_parFile = TPL_C_DIR.md5($_file).$_file.<span>'</span><span>.php</span><span>'</span><span>;
</span><span>//</span><span>判断编译文件是否存在,模板文件是否修改过</span><span>if</span> (!file_exists($_parFile) || filemtime($_parFile) <<span> filemtime($_tplFile)) {
</span><span>//</span><span>生成编译文件</span><span>  file_put_contents($_parFile,file_get_contents($_tplFile));
  }
</span><span>//</span><span>载入编译文件</span><span>  include $_parFile;
}
</span><span>//</span><span>引入模板类</span>require ROOT_PATH.<span>'</span><span>/includes/Template.class.php</span><span>'</span><span>;
</span><span>//</span><span>实例化模板类</span>$_tpl = <span>new</span><span> Template();
</span><span>//</span><span>载入index.tpl</span>$_tpl->display(<span>'</span><span>index.tpl);</span>
위 내용은 PHP 템플릿 엔진 1(35)의 수동 개발에 대한 내용을 담고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.