Este é um simples projeto feito por mim, com o objetivo de desenvolver uma simples template engine para uso próprio em futuros projetos.
O projeto ainda está em uma fase bem inicial, então ainda não possui muitas funcionalidades. A engine foi desenvolvida na versão
8.1.6
do PHP, então podem haver incompatibilidades com versões anteriores.
file.html
<!-- Global scope variables -->
<h1>{{ title }}</h1>
<!-- If function -->
{{ ?if subtitle }}
<h2>{{ subtitle }}</h2>
{{ ?/if}}
<!-- Foreach function -->
<ul>
{{ ?foreach array }}
<li>{{ this.index }} {{ this.value }}<li>
{{ ?/foreach }}
</ul>
<!-- Works fine with associative arrays too -->
<ul>
{{ ?foreach associativeArray }}
<li>{{ this.index }} {{ this.name }} {{ this.age }}<li>
{{ ?/foreach }}
</ul>
<!-- Repeat function -->
<ul>
{{ ?repeat 5 }}
<li>{{ this.index }} {{ subtitle }}</li>
{{ ?/repeat }}
</ul>
file.php
$data = [
'title' => 'Sample Title',
'subtitle' => 'Subtitle',
'array' => [
'First Name',
'Second Name',
'Third Name'
],
'associativeArray' => [
[
'name' => 'First Name',
'age' => 99
],
[
'name' => 'Second Name',
'age' => 99
],
[
'name' => 'Third Name',
'age' => 99
]
]
];
$view = file_get_contents(...);
echo Engine::render($view, $data);
<h1>Sample Title</h1>
<h2>Subtitle</h2>
<ul>
<li>1 First Name</li>
<li>2 Second Name</li>
<li>3 Third Name</li>
</ul>
<ul>
<li>1 First Name 99</li>
<li>2 Second Name 99</li>
<li>3 Third Name 99</li>
</ul>
<ul>
<li>1 Subtitle</li>
<li>2 Subtitle</li>
<li>3 Subtitle</li>
<li>4 Subtitle</li>
<li>5 Subtitle</li>
</ul>