문제

내가 찾는 것을 사용하여 스마티 PHP,때로는 추가 시간이 필요에 사용되는

1)를 사용하여 매우 다른 문법보다는 자체 PHP
2)확인해야 작은 경우,기 때문에 설명서를 주지 않는다 더 정밀한 정보 등에 대한"escape"

http://www.smarty.net/manual/en/language.modifier.escape.php

그것은 말하지 않 탈출:"따옴표"에 대한 큰따옴표를 만나 하나의 견적뿐만 아니라,그래서 당신은 필요한 코드를 작성을 테스트합니다.또한 위의 경우 탈출:"javascript"--말할 수 없을 정확히 무엇을 어떻게 그것은 탈출했다.

3)무언가를 위해 복잡하고,쓸 필요가 도우미 기능 또는 수정이 필요하므로 창조의 새로운 파일과 종료하고 그것 PHP 에서 다시합니다.

여 방법을 사용하여 않 멋을 제공하는 좋은 속도를 통해 사용 PHP 까요?감사합니다.

도움이 되었습니까?

해결책

첫째, PHP는 템플릿 언어입니다. PHP 기반 웹 응용 프로그램에 템플릿 시스템을 사용하는 것에 대해 이야기 할 때 명심하십시오.

내가 템플릿 엔진을 사용한다고 들었던 유일한 '실제'주장은 PHP를 모르고 신뢰하지 않는 템플릿 디자이너가있는 경우 템플릿 조작에 더 간단한 언어를 제공한다는 것입니다. PHP를 신중하게 사용하는 법을 배우십시오.

이러한 주장과 관련하여 템플릿 디자이너가 템플릿 디자인을 위해 충분한 PHP를 배우는 것이 유능하지 않은 경우 새로운 템플릿 디자이너를 찾는 것을 고려해야한다고 주장합니다. 또한 PHP 자체는 템플릿과 코드에서 사용할 수있는 제어 문에 대한 다른 구문을 제공합니다. 예를 들어:

<? foreach($array as $key => $val): ?>
    <?= $val ?>
<? endforeach; ?>

VS :

<?php
    foreach($array as $key => $val) {
        echo $val;
    }

?>

개인적으로, 나는 템플릿 엔진이 PHP에서 발생했다고 생각합니다.

  1. 그것이 다른 언어가하는 방식입니다
  2. 더 나은 PHP 프로그래머는 프리젠 테이션과 응용 프로그램 논리와 템플릿 사이의 분리를 시행 할 수있는 방법이 필요하다는 것을 깨달았습니다.

첫 번째 이유는 단지 어리석은 것입니다. 두 번째 이유는 약간의 자제력과 애플리케이션에서 층을 분리해야 할 필요성에 대한 기초적인 이해로 극복 할 수 있습니다. MVC 설계 패턴은이 문제에 접근하는 한 가지 방법입니다. 일부 자제력을 행사하는 한, 제 규칙은 필요한 루프와 진술이 사용되는 경우 화면의 출력을 필터링하고 탈출하는 기능을 사용한다는 것입니다.

Smarty를 광범위하게 사용했을 때, 나는 그것이 솔루션보다 더 많은 장애물을 제시했다고 솔직하게 말할 수 있습니다. PHP 기반 템플릿으로 전환하는 것이 실제로 템플릿과 코드 모두에 대한 개발 시간이 감소한 것입니다.

다른 팁

나는 템플릿 엔진을 좋아하지 않는다. 나는 그들에게 PHP에 대해 매우 손실하고 자원 집약적이라고 생각합니다.

MediaWiki를 사용하면 버전 1.6.x는 기본적으로 Smarty를 사용하여 백업했으며 PHP의 내장 템플릿을 사용하여 성능이 크게 향상되었습니다.

사람들이 템플릿 시스템으로하고 싶은 대부분의 일 (링크 추가, 색상 변경, 페이지의 텍스트 또는 섹션 제거)은 간단한 이벤트 후크 시스템으로 더 잘 수행된다는 것을 알았습니다.

Open Microblogging 플랫폼 인 Laconica는 기본적으로 템플릿을 수행하지 않습니다. 템플릿에 미친 사람들을위한 플러그인이 있습니다.

멋지 확실히 최고의 템플릿 중 하나 엔진이있다.내 경험에서 비록 사람들이 연속적으로 전송되어야 합니다.을 생각하는 그들의 사용 사례를 통해 더 많은 철저하게 사용하기 전에 모든 템플릿 생성 엔진은 위에 PHP 다.

첫째,PHP 그 자체에 대한 완벽한 템플릿이 있습니다.꽤 많은 유일한 정당성을 사용하여 다른 템플릿 생성 엔진은 경우도록 허용할 신뢰할 수 없는 사용자가를 만들거나 편집하려면 템플릿 이후 그들은 실행할 수 있습니다 모든 종류의 나쁜.경우에 따라서,귀하의 프로젝트에서는 사용자가 편집할 수 없는 템플릿을 사용하여 스마티.하지 않을 경우,지팡이와 함께 PHP.

귀하의 문제는 별거의 코드와 레이아웃,나는 당신이 볼로 구현하량 MVC 스타일의 실행을 모델입니다.또는,그것을 더 심하는 경우에,당신은 깊은 논리 코드 템플릿에서,그것은 아마도 할 시간이 어떤 refactoring.

성능는 또 다른 고려 사항입니다.Yes,렌더링을 멋지 템플릿 비용으로 온다.하지만 그 후에 그것은 완료,출력을 캐시해야 하는,당신을 선도하는 개선된 실행 시간.한 PHP 템플릿이 있습니다.PHP 을 구현할 수 있습니다 모든 종류의 세분화된 캐싱 모델의 사용을 통해 출력 버퍼입니다.하지만 조심의 조산 최적화:하는 후에 당신은 코드가 완료 및 확인 것 실제의 병목 현상이 있다!

가장 큰 비용을 때 사용하여 멋지 또는 어떤 다른 엔진의 형태로 제공하는 개발자의 시간입니다.그것은 또 다른 복잡성과 필연적으로 자신을 찾을 수 있는 상황에서 당신 엔진으로 무엇을 하는 당신은 수행 내에서 순수 PHP 습니다.

나처럼 서로를 생각하고 그들은 사용해야 하지만,특정 사례의 스마티,제가 생각하는 시간 낭비 때문에,그것은 크게 향상 PHP 으로 템플릿 생성 언어:

  • 새로운 구문은 여전히 주위를 기반으로 오래된 개념의 특별한 범주에 삽입되는 임의의 장소에 문서입니다.
  • 기 때문에 멋지 이해하지 못하 HTML 의 구문/구조,수 없습니다 당신은 도움이 되지 않을 만드는 유효/형 HTML.스마티의 태그 위반 HTML 의 구문,그래서 당신이 추가되면 그들을,다른 표준 도구를 도울 수 없습니다.
  • 스마티의 출력에서처럼,PHP,안전하지 않은 것입니다(이스케이프)기본적으로 당신 추가해야 한다는 점을 기억하십시오 |escape 모든 곳에서 당신은 출력 데이터에서는 HTML.

거기에 하나의 특별한 PHP 템플릿 엔진 내가와 사랑에 빠졌고,수정하는 모든 문제: PHPTAL.

그것은 여전히 뭔가 새로운 것을 배워야하고,그것은 depenency 응용 프로그램에 대해,그러나 내가 생각하는 XSS 고 올바른 형식 문제 해결이 가치가 있습니다.

PHPTAL 처럼 멋을 컴파일되면을 PHP 및 캐시되므로,성능은 비교하여 원 PHP.

프로

  • HTML 파일에 PHP가 없음 (PHP 및 HTML ID가 모두 허용)
  • 파이프 {$ var | default : "none selected"} {$ var | urlencode}
  • foreachelse : {foreach item = row from = $ results} {$ row.name}u003Cbr> {foreachelse} 결과 없음 {/foreach}
  • 그들에게 가능한 웹 사이트/페이지 (CSS 만 사용하면 제한이 있습니다)

단점

  • 다른 언어 구문
  • 항상 명백한 코드는 아닙니다 { "ymd"| stffime : $ timestamp} {$ array | @var_dump}
  • 약간의 오버 헤드

"템플릿"접근법 (MVC)을 강력히 추천 할 수 있지만 Smarty와 Plain PHP는 모두 작업을 수행합니다.

내가 아는 한 Smarty는 최고의 템플릿 엔진 속도 중 하나입니다. 익숙해지기까지 시간이 걸릴 수도 있습니다. 그러나 시스템만으로 작업하지 않고 HTML 및 스타일 파일의 양이 크기 때문에 개발 속도가 크게 향상됩니다.

마지막 프로젝트에서 작업하는 동안 디자인은 몇 번 변경되었지만 논리는 동일했습니다. Smarty 또는 다른 템플릿 엔진이 많은 도움이 될 때 가장 좋은 예라고 생각합니다.

개인적으로 나는 템플릿을 위해 Blitz를 사용합니다. 이 사이트에서 저자는 그것이 가장 빠른 템플릿 엔진이라고 주장하고 PHP의 다양한 템플릿 시스템 간의 성능에 대한 (바이어스?) 차트를 제공합니다. 나는 스마트를 사용하지 않았지만, 이것은 당신에게 그 성능에 대한 힌트를 줄 수 있습니다.

http://alexeyrybak.com/blitz/blitz_en.html

Smarty를 템플릿 엔진으로 사용하는 것은 추가 소프트웨어 계층, 즉 다른 템플릿 언어의 템플릿 언어이기 때문에 사용하지 않는 것만 큼 성능이 없습니다. 반면에 캐싱 기능을 올바르게 사용하면 전반적인 성능 이득을 실현할 수 있습니다.

Smarty 템플릿은 브라우저에 출력되기 전에 사전 컴파일되며, 여기에는 임시 파일을 디스크에 작성하는 것이 포함됩니다. 이 단계는 반드시 성능을 적어도 약간의 처벌에 불과합니다.

구현 및 프레젠테이션을 별도로 유지할 수있는 능력에 대해 확신하고 서버 측 캐싱에 실제로 관심이 없다면 순수한 PHP 템플릿을 사용해야 할 것입니다. 다음과 같은 일부 MVC 프레임 워크 Zend 프레임 워크 자체 PHP와 같은 템플릿 시스템이 있습니다.

다른 한편으로, Smarty는 구현에서 프레젠테이션을 깔끔하게 분리하는 것을 시행하는 괜찮은 방법입니다. 이 필요한 분리를 시행하는 데 도움이 될 수 있습니다.

즉, 나는 대부분의 PHP 프로젝트에서 Smarty를 사용합니다. JSTL (Java-Server Tag Libraries)을 상기시켜줍니다.

똑똑하거나 사용하는 것은 철학적 입장입니다.

많은 기능을 사용하지는 않지만 사용합니다. 이런 식으로 사용하면 템플릿이 매우 간단한 경향이 있습니다. 매개 변수와 함께 연관 배열을 전달하고 구성 요소를 반복하고 결과 페이지에 필요한 요소를 삽입하십시오. 이것은 템플릿을 깨끗하게 유지하고 (희망적으로) 비즈니스 로직이 없습니다.

또한 Smarty를 확장하는 것은 매우 간단합니다.

예를 들어, FetchusingStyle ()을 갖기 위해 Fetch ()에 스타일 매개 변수를 추가했습니다. 이를 통해 사이트의 다른 레이아웃간에 아주 쉽게 전환 할 수 있습니다.

또한 내 FetchusingStyle ()은 템플릿의 다양한 위치를 검색합니다. 먼저 현재 스타일을 찾으려고 시도합니다. 찾을 수없는 경우 기본 스타일을 사용하여 템플릿을로드하려고합니다. 마지막으로, 그것은 순수한 정적 더미 파일을 찾으려고합니다.

Codeigniter와 같은 MVC 패턴으로 Smarty를 사용하여 Core PHP보다 낫습니다.

을 사용해야 하는 이유는 무엇입니까 템플릿을 때 엔진을 사용할 수 있습니다 html 파일과 주입 php 코드에 당신은 그것을 필요?이 수행할 수 있습니다 Psttt!템플릿 생성 엔진에 대한 php

전체 소스 코드기 http://github.com/givanz/psttt

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top