Download the PHP package jonatasrt/template without Composer

On this page you can find all versions of the php package jonatasrt/template. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package template

Template

Engine de template para PHP 8.0+ que mantém o HTML completamente livre de código PHP.

Esta biblioteca é uma reescrita moderna da clássica raelgc/template (criada por Rael Gugelmin Cunha), com compatibilidade total de sintaxe: as mesmas variáveis, os mesmos blocos, os mesmos modificadores, o mesmo suporte a objetos e comentários.

Você não precisa reescrever nenhum arquivo HTML. Qualquer template que funcionava na versão antiga funciona aqui, sem nenhuma alteração.

Índice

Requisitos

Não há warnings, notices nem deprecations mesmo com error_reporting(E_ALL).

Instalação

Via Composer

Via download / cópia manual

Baixe o repositório e inclua o arquivo diretamente:

Migrando do raelgc/template

O HTML não muda em nada. No PHP, só existem duas possibilidades:

Opção 1 — trocar o use (recomendado):

Opção 2 — nem mexer no use: crie um alias logo depois de carregar a biblioteca e todo o código antigo continua funcionando sem nenhuma alteração:

A partir daí, use raelgc\view\Template; e new raelgc\view\Template(...) seguem válidos.

Se por algum motivo a versão antiga ainda estiver carregada no mesmo processo, não há conflito: a função global replace() é declarada dentro de um function_exists().

Olá Mundo

hello.html:

hello.php:

Resultado:

Variáveis

Toda variável de template é escrita entre chaves: {NOME_DA_VARIAVEL}.

Atribuir uma variável que não existe no HTML lança uma exceção:

Esse comportamento é intencional: ele avisa cedo sobre erros de digitação.

Checando se variáveis existem

Variáveis dinâmicas

Quando o nome da variável só é conhecido em tempo de execução, use chaves:

Variáveis com modificadores

É possível aplicar funções PHP direto no HTML, usando |:

Regras:

Como str_replace() recebe o texto no terceiro parâmetro, a biblioteca já registra a função global replace(), com o texto em primeiro lugar:

Um modificador inexistente lança BadFunctionCallException.

Blocos

Blocos são trechos do HTML que podem ser repetidos, ou simplesmente omitidos. São delimitados por comentários HTML:

Pontos importantes:

Blocos aninhados

Blocos podem conter outros blocos, sem limite de profundidade:

Sempre que o bloco pai é exibido, os blocos filhos acumulados são "descarregados" e limpos, prontos para a próxima iteração.

Blocos automáticos por padrão

Se um bloco aninhado é exibido, todos os blocos pais são exibidos automaticamente. Ou seja, no exemplo acima basta chamar block("BLOCK_DADOS"): o BLOCK_PRODUTOS aparece sozinho.

Blocos FINALLY

Um bloco FINALLY é exibido apenas quando o bloco correspondente nunca foi exibido. É o "senão" do template — perfeito para mensagens de lista vazia:

Sem if, sem count(), sem código extra.

Blocos com HTML select

O caso clássico de "qual opção está selecionada":

O método clear() é essencial aqui: sem ele, o valor da iteração anterior continuaria valendo.

Usando vários arquivos HTML

Ideal para separar cabeçalho, rodapé e miolo:

base.html:

miolo.html:

As variáveis e blocos do arquivo incluído passam a fazer parte do mesmo template — você continua usando $tpl->VARIAVEL e $tpl->block(...) normalmente.

addFile() também aceita arquivos .php (.php5, .php7, .php8, .phtml, .cgi): nesse caso o arquivo é executado e sua saída vira o valor da variável.

Guardando o conteúdo do template

Usando objetos

Objetos podem ser atribuídos direto às variáveis de template — muito útil com ORMs (Doctrine, Eloquent, etc.):

A ordem de resolução de cada propriedade é:

  1. getter (getNome()) — aceita camelCase e snake_case: {OBJ->minha_prop} chama getMinhaProp()
  2. método mágico __get()
  3. propriedade pública com o nome normalizado
  4. propriedade pública com o nome exato
  5. getter booleano (isAtivo())
  6. ArrayAccess ($obj['chave'])

Se nenhum acessor for encontrado, é lançada BadMethodCallException com a mensagem exata do que falta — em vez do erro fatal de acesso a propriedade privada.

Se o objeto no meio da cadeia for null, o resultado é string vazia (não quebra).

Detalhes:

Comentários

Comentários de template usam três traços e nunca chegam ao HTML final:

Comentários HTML normais (<!-- ... -->) são preservados.

Escapando variáveis

Para manter uma variável literal no HTML final (útil quando você gera templates a partir de templates), insira {_} logo depois da chave de abertura:

O resultado final conterá {CONTEUDO}.

Criando XML, CSV e outros formatos

A classe não é específica de HTML — ela trabalha com texto. Você pode usar arquivos .xml, .csv, .txt, .svg, .json ou qualquer outro formato, com a mesma sintaxe de variáveis e blocos (os delimitadores de bloco usam sintaxe de comentário HTML/XML).

Mensagens de erro

Exceção Quando acontece
InvalidArgumentException arquivo não existe / está vazio; block() de bloco inexistente; addFile() em variável inexistente
RuntimeException atribuir ou ler variável que não existe no template
UnexpectedValueException bloco duplicado; bloco mal formado (BEGIN sem END)
BadMethodCallException não existe acessor no objeto para a propriedade usada
BadFunctionCallException modificador que não é uma função callable

Como todas herdam de Exception, dá para tratar tudo junto:

Precisão e desempenho

A biblioteca evita expressões regulares no caminho quente — o trabalho pesado é feito com str_replace(), o que a torna bem mais rápida que engines antigas do estilo PHPLib. Não há cache em disco, e nem é necessário: em praticamente todo sistema real o gargalo é o banco de dados, não o template.

Um efeito colateral disso é que tabulações no início dos blocos são mantidas no HTML final (elas não afetam a renderização). Se você precisa de uma reprodução fiel — por exemplo, dentro de <pre> ou <code> — use o segundo parâmetro do construtor:

Referência da API

Método Descrição
__construct(string $filename, bool $accurate = false) Cria o template a partir do arquivo principal
$tpl->VARIAVEL = $valor Define o valor de uma variável (aceita string, int, float, bool, null, array e objeto)
$tpl->VARIAVEL Lê o valor atual de uma variável
exists(string $varname): bool Informa se a variável existe no template
clear(string $varname): void Limpa o valor de uma variável
addFile(string $varname, string $filename): void Carrega outro arquivo dentro de uma variável
block(string $block, bool $append = true): void Exibe (acumula) um bloco
setParent(string $parent, string $block): void Associa manualmente um bloco filho a um pai
parse(): string Retorna o conteúdo final
show(): void Imprime o conteúdo final

Licença

LGPL-2.1-or-later — a mesma da biblioteca original. Você pode usá-la como biblioteca inclusive em projetos comerciais.

Créditos ao autor original: Rael Gugelmin Cunha (raelgc/template).


All versions of template with dependencies

PHP Build Version
Package Version
Requires php Version >=8.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package jonatasrt/template contains the following files

Loading the files please wait ...