스마티는 더 정확하게 설명 될 것이다, 실제로 "템플릿 엔진"아니다 "템플릿 / 프리젠 테이션 프레임 워크입니다." 즉, 일반적으로 응용 프로그램의 프리젠 테이션 계층에서 처리 작업을 자동화 할 수있는 도구의 풍부한 프로그래머와 템플릿 디자이너를 제공합니다. 스마티는 간단한 태그로 대체 템플릿 엔진이 아니기 때문에 나는 단어 프레임 워크를 강조한다. 이 같은 간단한 목적을 위해 이용 될 수 있지만, 높은 성능, 확장 성, 보안 및 미래 성장을 유지하면서, 그 초점은 빠르고 고통없이 개발 및 응용 프로그램의 배포에 있습니다.
그래서 당신을위한 스마티 권리는 무엇입니까? 그것은 무엇에 내려 오는 것은 작업에 적합한 도구를 사용하고 있습니다. 당신은 간단한 변수를 교체하려는 경우, 당신은 간단한 것을보고, 심지어 자신의 롤 할 수 있습니다. 당신이 당신의 응용 프로그램이 미래로 발전함에 따라 다양한 도구를 사용하여 강력한 템플릿 프레임 워크의 도움을받을하려는 경우, 스마티 가능성이 좋은 선택이 될 것입니다.
왜 그것을 사용?
Smartys 주요 설계 목표 중 하나는 프레젠테이션 프로그램 코드의 분리를 용이하게하는 것이다. 일반적으로 응용 프로그램 코드 작성 및 PHP 코드를 유지 응용 프로그램의 비즈니스 로직을 포함하고 있습니다. 이 코드는 프로그래머에 의해 유지된다. 발표는 콘텐츠 작성 및 템플릿 파일에 유지되는 최종 사용자에게 제공되는 방법입니다. 템플릿은 템플릿 디자이너에 의해 유지된다.
가장 기본적인 기능에서, 애플리케이션 코드는 템플릿 엔진에 할당하고 표시 내용을 수집한다. 내용은 신문 기사의 제목, 태그 라인, 저자와 몸과 같이 될 수 있습니다. 응용 프로그램 코드는이 내용이 템플릿에 표시되는 방법을 염려가 없습니다. 템플릿 디자이너 프레젠테이션에 대한 책임이 있습니다. 그들은 마크 업을 추가하고 완료를 가져 오는 템플릿 파일을 편집 할 수 있습니다. 이것은 일반적으로 HTML 태그, CSS 스타일 시트 및 템플릿 엔진에서 제공하는 다른 도구 같은 것들을 포함한다.
이 패러다임은 여러 가지 목적이 있습니다 :
) 디자이너는 애플리케이션 코드를 분리 할 수 없습니다. 그들은 모두 그들이 원하는 템플릿을 엉망하지만 코드가 그대로 유지 할 수 있습니다. 코드는, 엄격한 더 안전하고 유지하기 쉬워진다.
) 템플릿에서 오류가 디자이너에 대한 가능한 한 그들과 같은 간단하고 직관적, Smartys 오류 처리 루틴에 국한된다.
모든 프로그래머의 개입없이) 자체 레이어에 프리젠 테이션, 디자이너는 수정하거나 완전히 처음부터 다시 설계.
) 프로그래머는 템플릿 덤비는되지 않습니다. 이들은 애플리케이션 코드를 유지 취득 방법 내용을 변경 프레젠테이션 층을 방해하지 않고 등 새로운 비즈니스 규칙을 만드는 방법에 대한 갈 수있다.
) 템플릿 직관적 인 방법입니다 최종 출력이 될 것입니다 무엇의 가까운 표현이다. 디자이너는 내용이 서식에 도착하는 방법을 걱정하지 않는다. 당신은 SQL 문으로 템플릿에 관계없는 데이터가있는 경우,이 디자이너가 실수로 삭제 또는 변경하여 응용 프로그램 코드를 파괴의 위험을 엽니 다.
) 당신은 임의의 PHP 코드의 실행에 서버를 열 수 없습니다. 스마티는 고의 또는 실수로 여부, 보안을 위반하지 않도록 디자이너에 내장 된 많은 보안 기능을 가지고 있습니다. 그들은 그들 만이 템플릿에 국한되는 일을 할 수 있습니다.
응용 프로그램 코드는 프레젠테이션로부터 분리되어 있지만, 이것은 반드시 그 논리 분취 의미하지 않는다. 응용 프로그램 코드는 논리가 분명하지만, 템플릿은 프리젠 테이션을 위해 전용 인 상태에 기초하여 로직을 가질 수있다. 예를 들어, 설계자는 테이블 행 색 또는 대문자 그들이 수있는 콘텐츠를 할당 된 교대를 원한다. 이 프리젠 테이션 로직, 프로그래머가 관심을해서는 안 무언가이다. 얼마나 자주 당신은 어떤 프리젠 테이션은 하나의 열에 표시했다하고 응용 프로그램 코드는이를 수용 할 수 있도록 조정해야합니다, 그래서 당신은, 두 개 또는 세 개의 열을 원했다? 더 좋은 접근법은 하나의 어레이에 콘텐츠를 할당하고 템플릿 프레젠테이션을 처리하도록한다. 이 응용 프로그램을 단순화하고 유연한 템플릿을 유지합니다. 스마티는 이런 상황을 처리 할 수있는 도구를 제공합니다.
이 스마티 템플릿에서 애플리케이션 로직을 넣어하지 못하도록 것을 의미하지 않는다, 당신은 자기 분야의 비트를 가지고있다. 여기에 (즉, 가능하면이 일을 피하기 맞아) 템플릿에 비즈니스 로직을 포함하는 예입니다 :
{경우 $의 smarty.session.user과 ($의 user_type의 EQ "편집기"또는 $ user_type EQ "관리자")}
<입력 유형 = 체크 박스 이름 = 값 편집 = "Y"> 편집
{/ IF}
사용자가 로그인하고 그들이 편집기 또는 관리자 인 경우 논리 검사가, 그들은이 그렇게 편집 확인란이 나타 편집 할 수 있습니다. 즉, 응용 프로그램 코드에 속하는 논리이다. 템플릿은 어떤 자격 증명에 대해 상관하지 않는다이 사용자가 그냥 편집 상자가 표시되지 않거나 경우에 알 필요가있다! 그럼 더 적합한 방법을 살펴 보자 :
{경우 $의 edit_flag}
<입력 유형 = 체크 박스 이름 = 값 편집 = "Y"> 편집
{/ IF}
그것은 간단하고 이해하기 쉬운 템플릿 변수를 $의 edit_flag을 할당 할 수있는 어플리케이션 프로그래머에 달려있다. 이 방법은 템플릿은 더 이상 기본 데이터 구조에 의존하지 않습니다. 세션 데이터 구조의 형태 적 변화하면 어떠한 템플릿 조절 될 필요가 없다.
지금 당신이 멋지와 함께 할 수있는 몇 가지를 살펴 봅시다. 이 할 수있는 한 가지는 사용자 정의 함수입니다. 다음은 특정 작업을 실행 템플릿 태그입니다. 예 :
{html_image 파일 = "masthead.gif"}
여기에서 우리는 "html_image"라는 기능이 있습니다. 이 기능은 "파일"속성에 지정된 이미지를 받아 다음 HTML 코드로 오는 데 필요한 모든 작업을 수행합니다 :
이미지의 기능은 높이와 너비를 파악하고 기본 테두리 플래그를 공급하는 기계에 의존했다. 물론 당신은 대신 템플릿의 정적 HTML 태그를 사용할 수 있지만, 사용자 정의 함수는 매우 일반적인 작업을 단순화하는 데에 이용 될 수있는 방법을 보여줍니다. 디자이너는 기술 물건에 디자인과 이하에 집중할 수 있습니다. 디자이너가 다른 크기의 마스트 헤드 이미지에 드롭하기로 결정하면 또한, 템플릿은 조정이 필요하지 않습니다.
html_image는 멋지와 함께 제공되는 기능입니다. 당신은 또한 사용자 정의 함수를 만들 수 있습니다. 여기에 하나의 모양에 대한 또 다른 예는 다음과 같습니다
{html_link 유형 = "기사"ID = "ABC123"텍스트 = "화재 호텔을한다"}
이것은 "html_link"라는 사용자 지정 기능을 사용하고 있습니다. 그것은 다음과 같은 HTML 코드로 제공됩니다 :
이것은 무엇을 성취 하는가? 하나를 들어, 설계자는 기사의 URL의 형식에 관계 할 필요가 없습니다. 하드 코딩 된 URL을, 어떻게 프로그래머가 일을 정리하기로 결정 일일하면 어떻게, 및 / ABC123 / 기술에 /display_article.php?id=abc123에서 URL 구문을 변경? 우리는 기사의 URL로 모든 템플릿을 편집해야합니다. 이 템플릿 기능을 유지하기 위해 템플릿을 쉽게 만들 수있는 방법의 또 다른 예이다.
이제 프로그래머와 템플릿에 비트. 이전 그것 프로그래머 템플릿 콘텐츠로 할 것에 대해 아무런 배려가 없다고 언급 하였다. 개념적인 수준에서이 사실이지만, 현실 세계에서 당신은 허공에서 모든 템플릿을 구성해야 할 템플릿 디자이너를 기대하지 않을 수 있습니다. 결국, 비즈니스 로직은 콘텐츠가 템플릿에 할당을 결정한다. 그래서, 프로그래머는 디자이너 일반적으로 설정 골격 템플릿으로 시작됩니다. 그들은 큰 혼란의 콘텐츠로 시작하지 않도록 이것은 일반적으로 콘텐츠 변수와 섹션 루프, 그리고 아마도 몇 가지 간단한 마크 업 태그와 같은 원시 요소가 포함되어 있습니다. 여기서 문서의 목록을 루핑하여 테이블에 표시 골격 템플릿의 예이다 :
<표>
{섹션 이름 = 예술 루프 = $ 기사} {$ 기사 [미술] .headline} {$ 기사 [미술] .date} {$ 기사 [미술] .author}
{/ 섹션}
테이블>
출력은 다음과 같이 보일 수 있습니다 :
<표> 서쪽이 이겨 방법 1999년 12월 2일 존 웨인 팀 상실, 코치가 종료 2002년 2월 2일 존 스미스 미식가 요리 1954년 1월 23일 베티 크로커
테이블>
이제 몇 가지 일반적인 질문에 대한 :
전혀 사용하는 이유 템플릿? 무엇 <작성에 대한 매우 힘든? $ 제목 에코; ? > 대신 {$ 제목}의?
읽기 쉽게 물건을 만드는 것은 디자인 목표 아니었지만, 부작용의 더. 템플릿을 사용하면 위에 설명 된 많은 것이 큰 장점을 가지고 있습니다. ? 우리는 어쨌든 서식 환경에 있기 때문에, {$ 제목}
템플릿 응용 프로그램이 훨씬 느리게하고, 분석 시간이 걸릴.
즉, 어떤 경우에 해당 할 수 있지만, 그것으로 멋지 PHP 스크립트를 실행하는 것보다 더 느리게 없다. 템플릿의 첫 번째 실행에서 스마티는 그 후, PHP 스크립트가 단지 포함 된 PHP 스크립트 (템플릿 컴파일이라고합니다.)에 템플릿 파일을 변환합니다. PHP 가속기 당신과 함께 커플이 정말 최소한의 오버 헤드와 빠른 템플릿 환경을 가지고있다.
스마티는 너무 복잡하다, 어떻게 그렇게 빨리 될 수 있습니까?
스마티의 핵심은 할 수있는 것을 고려 매우 희박. 그 기능의 대부분은 플러그인에있다. 단지 필요한 플러그인 디맨드로드되도록 플러그인 구조를 설계한다. 이 프레임 워크로, 새로운 플러그인의 추가 수백은 성능에 영향을주지 않습니다. 이 멋지 빠르고 확장 성과 유연성 수 있습니다.
스마티는 동적으로 새로 고침 취향에 캐시되지 않은 페이지의 일부를 유지할 수 있습니다 캐싱 기능을 가지고 있습니다. 캐싱을 호출 할 때마다 이들을 실행할 필요성을 절약 컴파일 템플릿의 출력을 저장한다.
가속기에 대한이 모든 이야기는 얼마나 멋지 하나없이 실행합니까?
사실 그것은 하나없이 아주 잘 실행됩니다. 멋지 가속기를 요구하지 않지만, 템플릿은 자신이 하나의 장점을 취할 것이다 멋지 (AFAIK)에 고유 한 것을 파일. 당신이 가속기가없는 경우, 템플릿 실행이 빨리되지하지만 구문 분석되지 않기 때문에 어떤 방법으로 느린하지 않습니다! 또한 다른 모든 혜택과 스마티의 기능을 유지합니다. 가속기가 자유롭게 사용할 수 있기 때문에 또한, 하나를 사용하지 핑계가 전혀 없습니다. 그들은 멋지 여부를 사용하여, 모든 PHP 애플리케이션의 성능을 도움이됩니다.
어떻게 쉽게 유지 관리 할 수 있는가?
어떤 것들은 설명 있지만 경험 될 수 없다. 프레젠테이션 애플리케이션 로직의 분리의 이득은 충분히 강조 할 수 없다. 스마티는 멋진 오류 처리 기능과 한눈에 템플릿 계층 구조를 볼 수 있도록 디버깅 콘솔에 내장 할당 변수를 가지고있다. 스마티에 사용자 지정 기능을 추가하면 플러그인 디렉토리를 삭제하고 템플릿을 언급하는 것만 큼 쉽습니다.
템플릿 태그는 XML 기반하지 않은, 내 편집기를 좋아하지 않는다.
{} 구분은 HTML 태그들 사이에서 분별하기 쉽고, 단지 기본이다. 당신이 그들을 좋아하지 않는 경우에, 당신의 구분 기호를 변경하거나 어쩌면 무언가를 더 XMLish 또한 사용자 드림위버에 대한 기여 등의 많은있다처럼, 그들에게 기여 영역의 모양을 제공합니다.
즉 희망 당신은 웹 애플리케이션 구축을위한 도구의 무기고에 추가 할 수 있습니다, 한마디로 멋지입니다. 정말 자세한 내용은, 아래로 수동 상단을 읽고 포럼에 가입하고 사람들이 논의하고있는 것을 볼 수
특징 : 있습니다.
캐싱 : 스마티는 모든 캐싱에 대한 세분화 된 캐싱 기능을 제공합니다 또는 렌더링 된 웹 페이지의 일부, 또는 캐시되지 않은 부분을 떠나. 프로그래머 등 캐시 비 캐시 할 쉽게 관리를위한 논리적 인 단위로 그룹의 캐시 된 페이지, 템플릿으로 기능을 등록 할 수 있습니다
구성 파일 : 스마티 구성 파일에서 가져온 변수를 할당 할 수 있습니다. 템플릿 디자이너 프로그래머로부터의 개입없이 한 장소에서 여러 템플릿 공통 값을 유지할 수 있고, 설정 변수는 쉽게 애플리케이션 프로그래밍 및 프레젠테이션 부분 사이에 공유 될 수있다.
보안 : 템플릿 PHP 코드를 포함하지 않습니다. 따라서, 템플릿 디자이너는 PHP의 모든 기능과 해방, 그러나 기능의 부분 집합은 프로그래머에서 그들에게 제공되지 않습니다 (응용 프로그램 코드입니다.)
사용 및 유지 관리가 쉬운 : 웹 페이지 디자이너는 PHP 코드 구문을 다루는 것이 아니라, 일반 HTML보다 대신 사용하기 쉬운 템플릿 구문 크게 다르지 않다. 템플릿은 극적 설계주기를 단축 최종 출력의 매우 가까운 표현이다.
변수 수정 : 할당 된 변수의 내용이 쉽게 모두 대문자로 표시하는 등의 개질제와 디스플레이시에 조정될 수있다, HTML 이스케이프, 날짜 포맷, 텍스트 블록을 절단, 캐릭터 사이에 공간을 추가하는 등 다시이다 프로그래머의 개입없이 이루어진다.
템플릿 기능 : 대부분의 기능은, HTML 코드 세그먼트 (드롭 다운, 테이블, 팝업 등)를 생성 인라인 다른 템플릿의 내용을 표시하는 내용의 배열을 통해 반복, 텍스트를 포맷하는 등의 작업을 처리 할 수있는 템플릿 디자이너 사용할 수 있습니다 이메일 출력, 순환 비록 색상 등
필터 : 프로그래머는 템플릿 출력을 완전히 제어 및 사전 필터, 포스트 필터와 출력 필터를 사용하여 컴파일 된 템플릿의 컨텐츠를 보유하고 있습니다.
자원은 : 템플릿은 다음, 새 리소스 처리기를 만드는 템플릿을 사용하여 소스의 숫자에서 가져온 할 수 있습니다.
플러그인 : 거의 멋지의 모든면은 플러그의 사용을 통해 제어된다. 그들은 일반적으로 플러그인 디렉토리에 그들을 삭제 한 다음 템플릿을 언급하거나 응용 프로그램 코드를 사용하는 것만 큼 쉽다. 많은 사용자가 지역 사회 공헌도 사용할 수 있습니다. (포럼 및 위키의 플러그인 섹션을 참조하십시오.)
부가 기능 : 많은 사용자 커뮤니티 기능이 추가 등이 도구는 개발주기를 단축하는 데 도움 매김, 양식 유효성 검사, 드롭 다운 메뉴, Calander 날짜 선택기로 사용할 수 있습니다 기여, 바퀴를 다시 발명 할 필요가 없습니다 이미 안정 및 배포에 대한 준비 또는 코드를 디버깅. (포럼 및 위키의 추가 기능 섹션을 참조하십시오.)
디버깅 : 템플릿 디자이너가 할당 된 모든 변수를 볼 수 있으며, 프로그래머가 템플릿 렌더링 속도를 조사 할 수 있도록 스마티가 내장 된 디버깅 콘솔이 제공됩니다.
컴파일 : 스마티 템플릿의 런타임 분석을 제거, 뒤에서 PHP 코드로 템플릿을 컴파일합니다.
성능 : 스마티는 광대 한 기능 세트에도 불구하고, 매우 잘 수행합니다. 스마티의 기능의 대부분은 온 디맨드로드 플러그인 거짓말. 스마티는 응용 프로그램 코드를 최소화하고 빠르게, 더 적은 오류가 발생하기 쉬운 응용 프로그램 개발 / 구축의 결과로, 다수의 프레 젠 테이션 도구와 함께 제공됩니다. 스마티 템플릿은 비용이 많이 드는 템플릿 파일 스캔을 제거하고 PHP 연산 코드 가속기의 속도를 활용, PHP 파일 내부 (한 번)로 컴파일 얻을.
이 릴리스의 새로운 기능 :
슈퍼 글로벌 액세스 변경을 되돌릴, 대신 보안 USE_SUPER_GLOBALS에 의존
버전 2.6.23의 새로운 기능 :
{} 수학 방정식에서 스트립 역 따옴표 (mohrt)
템플릿이 존재하지만 때 오류가 발생하지 읽을 수있는 (mohrt)
버전 2.6.22의 새로운 기능 :
이 릴리스는 멋지 2.6.21 버전과 PHP 5.2에서 PCRE 엔진 버그가 발생 문제를 해결합니다. 메소드 체인은 버그를 방지하기 위해 제거되었습니다. 메소드 체인은 스마티 3에 다시 나타납니다.
댓글을 찾을 수 없습니다