스마트 템 플 릿 엔진 기초 지식 입문
기본 개념
1.뮤 직 비디오 가 무엇 입 니까?
화면 음악 c 는 개발 모델 로 핵심 사상 은 데이터 의 입력,데이터 의 처리,데이터 디 스 플레이 의 강제 분리 이다.
2.스마트 란 무엇 인가?
smarty 는 phop 의 템 플 릿 엔진 이다.더욱 명확 하 게 말하자면 개발 자가 프로그램 논리 와 페이지 디 스 플레이 를 더욱 잘 분리 하 는 데 도움 을 줄 수 있다.
3.smarty 운행 원리
템 플 릿 파일 은 데 이 터 를 표시 하 는 템 플 릿 입 니 다.그 중에서 표시 해 야 할 데 이 터 는 자리 표시 자 로 대체 합 니 다.
smarty 가 실 행 될 때 템 플 릿 파일 을 읽 고 템 플 릿 파일 의 대체 자 를 실제 데이터 로 바 꾸 고 처 리 된 phop 파일 을 출력 하여 서버 에 맡 깁 니 다.
2.스마트 템 플 릿 을 스스로 작성 합 니 다.
스마트 템 플 릿 을 잘 이해 하기 위해 서 는 먼저 자신의 스마트 템 플 릿 인 미니 스마트 를 써 서 스마트 의 운행 원 리 를 더욱 깊이 이해 하도록 한다.
1.새 프로젝트 minismarty
새 템 플 릿 파일 경로:templates
새 템 플 릿 파일 이 컴 파일 된 파일 경로:templatesc
새 템 플 릿 파일:intro.tpl
새로 실행 할 파일:index.php
템 플 릿 을 처리 하 는 smarty 파일 을 새로 만 듭 니 다:clsMiniSmarty.php
2.index.php 파일 작성
<?php
require_once './cls_MiniSmarty.php';
$miniSmarty = new MiniSmarty();
//
$miniSmarty->assign("title","hello minismarty!");
$miniSmarty->assign("content","<font color='red'>this is content!</font>");
//
$miniSmarty->display("intro.tpl");
?>
3.intro.tpl 파일 작성
<!-- -->
<html>
<head>
<meta http-equiv="Content-Language" content="en" />
<meta name="GENERATOR" content="PHPEclipse 1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>{$title}</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#FF9966" vlink="#FF9966" alink="#FFCC99">
{$content}
</body>
</html>
이 안의 내용 은 자리 차지 문자 의 형식 으로 스마트 의 역할 은 자리 차지 문자 의 내용 을 진정한 데이터 로 바 꾸 는 것 이다.이렇게 하면 템 플 릿 파일 과 데이터 파일 을 강제로 분리 하여 스마트 를 통 해 데 이 터 를 전달 할 수 있다.
4.cls 작성MiniSmarty.php 파일
<?php
/**
*
* smarty
* ,
* smarty , , php
*
*/
class MiniSmarty {
//
var $template_dir = "./templates/";
//
var $templates_c_dir = "./templates_c/";
//
var $tpl_vars = array ();
// 2
/**
*
* 1:
* 2: , null
*/
function assign($tpl_var, $var = null) {
if ($tpl_var != '') {
$this->tpl_vars[$tpl_var] = $var; //
}
}
/**
*
* 1:
*/
function display($tpl_file) {
//
$tpl_file_path = $this->template_dir . $tpl_file;
//
$compile_file_path = $this->templates_c_dir . "com_" . $tpl_file . ".php";
//
if (!file_exists($tpl_file_path)) {
return false;
}
// ,
//
//filemtime :
if (!file_exists($compile_file_path) || filemtime($tpl_file_path) > filemtime($compile_file_path)) {
//
$fpl_file_content = file_get_contents($tpl_file_path);
$newStr = myReplace($fpl_file_content);
// ,
file_put_contents($compile_file_path, $newStr);
}
//
include $compile_file_path;
}
/**
* ,
*/
function myReplace($fpl_file_content) {
$pattern = array (
'/\{\s*\$([a-zA-Z_][a-zA-Z0-9_]*)\s*\}/i'
);
$replace = array (
'<?php echo $this->tpl_vars["${1}"] ?>'
);
$newStr = preg_replace($pattern, $replace, $fpl_file_content);
return $newStr;
}
}
?>
preg_replace 방법 소개:인자 1:교체 규칙
인자 2:교 체 된 내용
매개 변수 3:작업 내용 바 꾸 기
5.실행 결과
제목 과 내용 이 모두 표시 되 었 습 니 다.
결론:
실제로 실행 되 는 파일 은 index.php 도 아니 고 intro.php 도 아 닌 smarty 를 통 해 작 동 된 파일 입 니 다.
com_intro.tpl.php。이 파일 의 데 이 터 는 index.php 에서 유래 되 었 으 며,표 시 된 레이아웃 은 intro.tpl 에서 나 왔 으 며,중간 다 리 는 smarty 입 니 다.
smarty 의 역할 은 데 이 터 를 받 아들 이 고 데 이 터 를 채 우 는 것 입 니 다.
3.스마트 사용 디 테 일 설명
1.스마트 를 어떻게 설정 하나 요?
압축 을 풀 고 libs 폴 더 를 프로젝트 디 렉 터 리 에 복사 한 다음 2 개의 폴 더 templates 와 templates 를 만 듭 니 다.c.템 플 릿 파일 과 템 플 릿 을 각각 넣 고 컴 파일 한 파일 입 니 다.
2.스마트 사용 시 주의사항
① 변 수 를 바 꾸 는 표시 자.
기본 표시 자 는{}입 니 다.이것 은 style 스타일 의{}과 충돌 하기 때문에 기본 식별 자 를 수정 해 야 합 니 다.일반적으로{<>}으로 수정 합 니 다.
② 식별 자 를 수정 하 는 방법.
방법 1:스마트 류 소스 코드 를 직접 수정:추천 하지 않 습 니 다.
방법 2:스마트 가 제공 하 는 방법 으로 수정 합 니 다.
$smarty->left_delimiter="{<";
$smarty->right_delimiter=">}";
③ 스마트 의 기본 설정
$smarty->template_dir="./templates";//
$smarty->compile_dir="./templates_c";//
$smarty->caching=false; //
$smarty->cache_dir="./smarty_cache";// :
3.smarty 템 플 릿 기술 배분 변수의 세부 문제한 마디 로 php 가 지원 하 는 각종 데 이 터 를 분배 할 수 있다.
php 기본 데이터:int double string bool
복합 데이터 형식:array object
특수 데이터 형식:resource null
본 논문 에서 말 한 것 이 여러분 의 phop 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.