실제로 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'm looping forever.</p>@endwhile
다른 뷰 소개
@include('view.name', ['some' => 'data'])
지금은 이렇게 많은 것을 정의하는 것만으로도 기본적으로 충분합니다. 특별한 요구 사항이 있는 경우 원칙은 기본적으로 동일하며 다른 것도 작성할 수 있습니다.
그러면 어떻게 처리할지 생각해 보세요. PHP가 인식할 수 없는 작성 방법을 정의했습니다.
가장 간단한 예를 들어, {{ $name }}과 같은 콘텐츠를 얻을 때 이를 식별하고 해당 변수 값을 출력할 수 있도록 으로 변환하기만 하면 됩니다.