Instalação


1Pré-requisitos

Para usar o Temma, você precisa de uma hospedagem web que utilize o interpretador PHP na versão 8.3 ou superior.

O Temma pode usar todos os bancos de dados suportados pela extensão PDO, além do banco de dados noSQL Redis, e do servidor de cache Memcached.


2Instalação com Composer

Se você tem o gerenciador de dependências Composer instalado no seu computador, pode usá-lo para criar um projeto baseado no Temma.

Para criar um projeto de site web:

$ composer create-project digicreon/temma-project-web meu_site

Para criar um projeto de API:

$ composer create-project digicreon/temma-project-api minha_api

A diferença:

  • Um projeto web retorna principalmente páginas HTML, e por isso embute o mecanismo de templates Smarty.
  • Uma API retorna, por padrão, fluxos JSON e gerencia sua autenticação por meio de pares de chaves pública/privada. Por isso, ela não embute o Smarty, e ativa o plugin API.
Os projetos criados com o Composer também instalam automaticamente as skills para agentes de codificação com IA, que ajudam um assistente de IA a gerar código que segue as convenções do Temma.

3Instalação sem Composer

Se você não tem o Composer instalado no seu computador, ou não quer usá-lo, o Temma oferece um script de instalação fácil de usar. Você pode até simplesmente clonar um repositório de código Git.


3.1Versão estável

Para criar seu projeto com base na versão estável mais recente do Temma:

$ curl -Ls https://temma.net/release | sh -

Ou, de forma abreviada:

$ curl -Ls temma.net/r | sh -

O script vai solicitar o nome do diretório de destino a ser criado. O nome padrão é temma_project.

Se preferir, você pode extrair o arquivo você mesmo.
A versão estável mais recente do Temma é a 2.20.0.

$ wget https://github.com/Digicreon/Temma/archive/refs/tags/2.20.0.tar.gz
$ tar xzf 2.20.0.tar.gz
$ mv Temma-2.20.0 meu_projeto
$ chmod 777 meu_projeto/log meu_projeto/tmp

3.2Última versão das fontes

Você pode baixar as versões mais recentes das fontes do Temma. Essas fontes estão em fase de testes (por isso ainda não fazem parte de uma versão estável) e podem conter bugs.

Mais uma vez, um script de instalação é fornecido:

$ curl -Ls https://temma.net/release/latest | sh -

Ou, de forma abreviada:

$ curl -Ls temma.net/r/l | sh -

Mais uma vez, o script vai solicitar o nome do diretório de destino a ser criado. O nome padrão é temma_project.

Se preferir, você pode extrair o arquivo você mesmo:

$ wget https://github.com/Digicreon/Temma/archive/main.tar.gz
$ tar xzf main.tar.gz
$ mv Temma-main meu_projeto
$ chmod 777 meu_projeto/log meu_projeto/tmp

Você pode até clonar diretamente o repositório git:

$ git clone git@github.com:Digicreon/Temma.git meu_projeto
$ chmod 777 meu_projeto/log meu_projeto/tmp
$ rm -rf meu_projeto/.git

3.3Instalar o Smarty

Se você usa o Temma para criar uma API sem geração de páginas HTML, não vai precisar do mecanismo de templates Smarty. Caso contrário, o Temma funciona igualmente bem com o Smarty 4 ou o Smarty 5. O Smarty 4 é compatível com PHP 7.1 a 8.4, e o Smarty 5 com PHP 7.2 a 8.5. Como o Temma exige PHP 8.3 ou superior, as duas versões do Smarty são adequadas; basta usar o Smarty 5 se você estiver rodando PHP 8.5.

Observe que a versão 5 do Smarty introduz mudanças que não são retrocompatíveis.

Observe que a versão 5.4.0 (ou superior) do Smarty é altamente recomendada. O Temma ativa a opção de auto-escape para variáveis, o que elimina a necessidade de usar o modificador escape. No entanto, versões do Smarty anteriores à 5.4.0 não oferecem o modificador raw, que permite cancelar o auto-escape sempre que necessário. Ainda assim, é possível desativar o auto-escape por padrão.

Você pode instalar o Smarty de duas maneiras diferentes: usando o Composer, ou baixando o arquivo manualmente.

Para instalar a versão estável mais recente do Smarty com o Composer, digite este comando a partir da raiz do projeto (mais informações na documentação):

$ composer require smarty/smarty

Para instalar o Smarty manualmente, baixe o arquivo (formato ZIP ou TAR.GZ) da versão desejada. Ao descompactar o arquivo, você verá um subdiretório libs/ (Smarty 4) ou src/ (Smarty 5). Renomeie-o para smarty4 (Smarty 4) ou Smarty (Smarty 5) e depois mova-o para dentro do diretório lib/ do seu projeto.


4Configuração do servidor web

Depois que o Temma for instalado, você precisa configurar o servidor web que vai executar sua aplicação web.
Para isso, você pode usar a configuração Apache/Nginx ou arquivos .htaccess.


4.1Arquivos .htaccess

Os arquivos .htaccess são necessários em caso de hospedagem compartilhada.
Se for o seu caso, você não precisa fazer nada. Os arquivos já estão presentes (.htaccess na raiz e www/.htaccess).


4.2Servidor Apache ou Nginx

Use a configuração do Apache ou do Nginx se você tiver seu próprio servidor (dedicado, virtual ou container Docker).

Você vai encontrar configurações de exemplo (arquivos etc/apache.conf e etc/nginx.conf), que você pode modificar de acordo com suas necessidades.

Você também vai precisar excluir os arquivos .htaccess existentes:

$ cd meu_projeto
$ rm -f .htaccess www/.htaccess

5Estrutura do projeto

Aqui está o conteúdo de um projeto Temma:

meu_projeto/
    bin/
    cli/
    controllers/
    etc/
        temma.php
        apache.conf
    lib/
        Temma/
        Smarty/
        smarty-plugins/
    log/
        temma.log
    templates/
    tmp/
    var/
    vendor/
    www/
        index.php
  • bin: Contém programas utilitários.
  • cli: Contém seus scripts de linha de comando.
  • controllers: Diretório principal para seus controladores.
  • etc: Diretório de configuração
    • temma.php: Arquivo de configuração do projeto.
    • apache.conf: Arquivo de configuração do "virtual host", no caso de um servidor Apache.
  • lib: Diretório base contendo as bibliotecas externas, mas também seus objetos de negócio.
    • Temma: O código do framework (para instalações sem Composer).
    • Smarty (ou smarty4): mecanismo de templates Smarty (para instalações sem Composer).
    • smarty-plugins: plugins Smarty oferecidos pelo Temma.
  • log: Diretório contendo os arquivos de log.
    • temma.log: Arquivo de log do projeto.
  • templates: Diretório contendo os templates.
  • tmp: Diretório de arquivos temporários.
  • var: diretório opcional, que pode conter os arquivos de dados da sua aplicação.
  • vendor: Este diretório existe se você instalou o Temma usando o Composer, ou se carregou bibliotecas externas com o Composer.
  • www: Diretório raiz do site, contendo todos os arquivos CSS, Javascript e imagens.
    • index.php: Script PHP principal, que inicia o framework.