Plates Native PHP Template[Português - Brasil]
Tags: php, braziliandevs, productivity
Published: 2023-09-14 18:01:35

Site oficial da referência do [plates](https://platesphp.com/)

---

## Sobre

O Plates é um sistema de template PHP nativo que é rápido, fácil de usar e fácil de estender. Ele é inspirado no excelente mecanismo de template Twig e se esforça para trazer a funcionalidade moderna da linguagem de template para templates PHP nativos. O Plates foi projetado para desenvolvedores que preferem usar templates nativos de PHP em vez de linguagens de template compiladas, como Twig ou Smarty.

## Instalação

Plates está disponível em Packagist e pode ser instalado usando Composer. Isso pode ser feito executando o seguinte comando ou atualizando seu arquivo composer.json.

```
composer require league/plates
```

```json
{
    "require": {
        "league/plates": "3.*"
    }
}
```
Certifique-se de incluir também o arquivo de carregamento automático do Composer no seu projeto:

```php
require 'vendor/autoload.php';
```

## Exemplo simples
Aqui está um exemplo simples de como usar placas. Assumiremos a seguinte estrutura de diretórios:

```
📦Plates
 ┣ 📂templates
 ┃ ┣ 📜profile.php
 ┃ ┗ 📜template.php
 ┗ 📜index.php
```
**Definir um layout**
A função **layout ()** permite definir um modelo de layout que um template implementará. É como ter templates separados de cabeçalho e rodapé em um arquivo.

```php
<?php $this->layout('template') ?>
```
A função **layout ()** pode ser chamada em qualquer lugar de um template, pois o modelo de layout é realmente renderizado em segundo. Normalmente, ele é colocado na parte superior do arquivo.

**Atribuir dados**
Para atribuir dados ( variáveis ) a um modelo de layout, passe-os como uma matriz para a função **layout ()**. Esses dados estarão disponíveis como variáveis de escopo local no modelo de layout.

```php
<?php $this->layout('template', ['title' => 'Exemplo Simples']) ?>
```
**O modelo da página**

```php
<?php $this->layout('template', ['title' => 'Simple example']) ?>

<h1>Fruta Lista</h1>
<ul>
    <?php foreach( $frutas as $fruta ): ?>
        <li>
            <?=$this->e($fruta)?>
        </li>
    <?php endforeach ?>
</ul>
```
**Acessando o conteúdo**
Para acessar o conteúdo do modelo renderizado dentro do layout, use a função **section()**, passando 'content' como o nome da seção. Isso retornará todo o conteúdo emitido do modelo que não foi definido em uma seção.

**O modelo de layout**

```php
<html>
    <head>
        <title><?=$this->e($title) ?></title>
    </head>
    <body>
        <?=$this->section('content')?>
    </body>
</html>
```
**Escaping**
Escaping é uma forma de filtragem de dados que desinfete a entrada insegura fornecida pelo usuário antes de produzi-la como HTML

```php
<h1>Hello, <?=$this->escape($name)?></h1>

<!-- Usando a função alternativa e abreviada -->
<h1>Hello, <?=$this->e($name)?></h1>
```
**Dentro do seu controlador**

```php
<?php

    require 'vendor/autoload.php';

    // Criar uma nova instancia Plates
    $templates = new League\Plates\Engine('templates');

    $frutas = ['Maçã','Banana', 'Melancia', 'laranja', 'Uva'];

    // Renderizar o template
    echo $templates->render('profile', ['fruta' => $frutas]);
```