PHP 프레임워크 구축 및 템플릿 엔진 구축

高洛峰
풀어 주다: 2016-10-31 14:32:25
원래의
1007명이 탐색했습니다.

실제로 PHP가 템플릿 엔진을 사용해야 하는지에 대해 인터넷에서 많은 논쟁이 있습니다. 템플릿 엔진을 사용하면 다음과 같은 몇 가지 장점이 있습니다.

기본 이스케이프 출력 등 안전

가독성 좋음

관련 내용은 Zhihu 토론 참고

PHP 템플릿 엔진이 얼마나 의미가 있는지 ?

ThinkPHP가 PHP의 템플릿 엔진과 유사한 기능을 수행하는 이유는 무엇입니까? 똑똑하기도 해? 이것들은 무엇을 위해 사용되나요?

우선 아이디어를 정해보자. 먼저 Laravel의 Blade 템플릿을 참고하여 다음과 같은 간단한 작성 방법을 정의해야 한다.

출력 변수 값

{{ }} XSS 공격을 방지하기 위해 표현식의 반환 값이 자동으로 PHP의 htmlentities 함수에 전달되어 처리됩니다.

Hello, {{ $name }}!
로그인 후 복사

이스케이프되지 않은 변수 값 출력

Hello, {!! $name !!}!
로그인 후 복사

If 표현식

If는 @if, @elseif, @else 및 @endif 지시문 표현식을 사용하여 생성할 수 있습니다. .

@if (count($records) === 1)
    I have one record!@elseif (count($records) > 1)
    I have multiple records!@else
    I don't have any records!@endif
로그인 후 복사

루프

@for ($i = 0; $i < 10; $i++)
    The current value is {{ $i }}@endfor@foreach ($users as $user)
    <p>This is user {{ $user->id }}</p>@endforeach@while (true)
    <p>I&#39;m looping forever.</p>@endwhile
로그인 후 복사

다른 뷰 소개

@include(&#39;view.name&#39;, [&#39;some&#39; => &#39;data&#39;])
로그인 후 복사

지금은 이렇게 많은 것을 정의하는 것만으로도 기본적으로 충분합니다. 특별한 요구 사항이 있는 경우 원칙은 기본적으로 동일하며 다른 것도 작성할 수 있습니다.

그러면 어떻게 처리할지 생각해 보세요. PHP가 인식할 수 없는 작성 방법을 정의했습니다.

가장 간단한 예를 들어, {{ $name }}과 같은 콘텐츠를 얻을 때 이를 식별하고 해당 변수 값을 출력할 수 있도록 으로 변환하기만 하면 됩니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿