CakePHP - Configuração de Projeto

Neste capítulo, vamos entender o Environment Variables, General Configuration, Database Configuration e Email Configuration no CakePHP.

ConfigurationO CakePHP vem com um arquivo de configuração por padrão, e podemos modificá-lo de acordo com nossas necessidades. Existe uma pasta dedicada“config”para este propósito. O CakePHP vem com diferentes opções de configuração.

Vamos começar entendendo as variáveis ​​de ambiente no CakePHP.

variáveis ​​ambientais

Variáveis ​​de ambiente facilitam o trabalho de seu aplicativo em ambientes diferentes. Por exemplo, no servidor dev, servidor de teste, servidor intermediário e ambiente de servidor de produção. Para todos esses ambientes, você pode fazer uso deenv() function para ler a configuração do ambiente de que você precisa e construir seu aplicativo.

Em sua pasta de configuração, você encontrará config / .env.example. Este arquivo contém todas as variáveis ​​que serão alteradas com base no seu ambiente. Para começar, você pode criar um arquivo na pasta config, ou seja, config / .env, definir essas variáveis ​​e usá-las. Caso você precise de alguma variável adicional, ela pode ir nesse arquivo.

Você pode ler sua variável de ambiente usando a função env () como mostrado abaixo -

Exemplo

$debug = env('APP_DEBUG', false);

O primeiro é o nome da variável de ambiente desejada e o segundo valor é o valor padrão. O valor padrão é usado, se nenhum valor for encontrado para a variável de ambiente.

Configuração Geral

A tabela a seguir descreve a função de várias variáveis ​​e como elas afetam seu aplicativo CakePHP.

Sr. Não Nome e descrição da variável
1

debug

Altera a saída de depuração do CakePHP.

false= Modo de produção. Nenhuma mensagem de erro, erro ou aviso mostrado.

true = Erros e avisos exibidos.

2

App.namespace

O namespace no qual encontrar classes de aplicativos.

3

App.baseUrl

Retire o comentário desta definição, se você não planeja usar o mod_rewrite do Apache com o CakePHP. Não se esqueça de remover seus arquivos .htaccess também.

4

App.base

O diretório base em que o aplicativo reside. Se for falso, será detectado automaticamente.

5

App.encoding

Defina qual codificação seu aplicativo usa. Essa codificação é usada para gerar o conjunto de caracteres no layout e codificar entidades. Deve corresponder aos valores de codificação especificados para seu banco de dados.

6

App.webroot

O diretório webroot.

7

App.wwwRoot

O caminho do arquivo para webroot.

8

App.fullBaseUrl

O nome de domínio totalmente qualificado (incluindo protocolo) para a raiz do seu aplicativo.

9

App.imageBaseUrl

Caminho da Web para o diretório de imagens públicas em webroot.

10

App.cssBaseUrl

Caminho da Web para o diretório css público em webroot.

11

App.jsBaseUrl

Caminho da Web para o diretório js público em webroot.

12

App.paths

Configure caminhos para recursos não baseados em classe. Suporta oplugins, templates, locales, subkeys, que permitem a definição de caminhos para plug-ins, modelos de visualização e arquivos de localidade, respectivamente.

13

Security.salt

Uma string aleatória usada em hash. Este valor também é usado como o sal HMAC ao fazer criptografia simétrica.

14

Asset.timestamp

Anexa um carimbo de data / hora, que é a hora da última modificação do arquivo específico no final dos URLs dos arquivos de ativos (CSS, JavaScript, imagem) ao usar auxiliares adequados. Os valores válidos são -

  • (bool) false - Não faz nada (padrão).

  • (bool) true - Anexa o carimbo de data / hora, quando a depuração for verdadeira.

  • (string) 'force' - sempre anexa o carimbo de data / hora.

Configuração de bancos de dados

O banco de dados pode ser configurado em config/app.php and config/app_local.phpArquivo. Este arquivo contém uma conexão padrão com os parâmetros fornecidos, que podem ser modificados conforme nossa escolha.

O snippet abaixo mostra os parâmetros e valores padrão, que devem ser modificados de acordo com o requisito.

Config / app_local.php

*/
   'Datasources' => [
      'default' => [
         'host' => 'localhost',
         'username' => 'my_app',
         'password' => 'secret',
         'database' => 'my_app',
         'url' => env('DATABASE_URL', null),
      ],
      /*
         * The test connection is used during the test suite.
      */
      'test' => [
         'host' => 'localhost',
         //'port' => 'non_standard_port_number',
         'username' => 'my_app',
         'password' => 'secret',
         'database' => 'test_myapp',
         //'schema' => 'myapp',
      ],
   ],

Vamos entender cada parâmetro em detalhes em config/app_local.php.

Hospedeiro

O nome do host do servidor de banco de dados (ou endereço IP).

nome do usuário

Nome de usuário do banco de dados

senha

Senha do banco de dados.

base de dados

Nome do banco de dados.

Porta

A porta TCP ou socket Unix usado para conectar ao servidor.

config / app.php

'Datasources' => [
   'default' => [
      'className' => Connection::class,
      'driver' => Mysql::class,
      'persistent' => false,
      'timezone' => 'UTC',
      //'encoding' => 'utf8mb4',
      'flags' => [],
      'cacheMetadata' => true,
      'log' => false,
      'quoteIdentifiers' => false,
      //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
   ],
]

Vamos entender cada parâmetro em detalhes em config/app.php.

registro
Sr. Não Chave e descrição
1

className

O nome da classe com namespace completo da classe que representa a conexão com um servidor de banco de dados. Esta classe é responsável por carregar o driver do banco de dados, fornecer mecanismos de transação SQL e preparar instruções SQL, entre outras coisas.

2

driver

O nome da classe do driver usado para implementar todas as especificidades de um mecanismo de banco de dados. Pode ser um nome de classe curto usando a sintaxe do plugin, um nome com namespace completo ou uma instância de driver construída. Exemplos de nomes de classe curtos são Mysql, Sqlite, Postgres e Sqlserver.

3

persistent

Se deve ou não usar uma conexão persistente com o banco de dados.

4

encoding

Indica o conjunto de caracteres a ser usado, ao enviar instruções SQL para o servidor como 'utf8' etc.

5

timezone

Fuso horário do servidor a ser definido.

6

init

Uma lista de consultas que devem ser enviadas ao servidor de banco de dados conforme e quando a conexão é criada.

7

log

Defina como true para habilitar o log de consulta. Quando ativadas, as consultas serão registradas em um nível de depuração com o escopo queriesLog.

8

quoteIdentifiers

Defina como verdadeiro se estiver usando palavras reservadas ou caracteres especiais em seus nomes de tabela ou coluna. Habilitar esta configuração resultará em consultas construídas usando o Query Builder com identificadores citados ao criar SQL. Isso diminui o desempenho.

9

flags

Uma matriz associativa de constantes PDO que deve ser passada para a instância PDO subjacente.

10

cacheMetadata

Boolean true, ou uma string contendo a configuração do cache para armazenar metadados. Desativar o cache de metadados não é recomendado e pode resultar em um desempenho muito ruim.

Configuração de Email

O e-mail pode ser configurado no arquivo config/app.php. Não é necessário definir a configuração de e-mail em config / app.php. O e-mail pode ser usado sem ele. Basta usar os respectivos métodos para definir todas as configurações separadamente ou carregar uma série de configurações. A configuração dos padrões de e-mail é criada usandoconfig() e configTransport().

Transporte de configuração de email

Ao definir transportes separadamente dos perfis de entrega, você pode facilmente reutilizar a configuração de transporte em vários perfis. Você pode especificar várias configurações para produção, desenvolvimento e teste. Cada transporte precisa de um className. As opções válidas são as seguintes -

  • Mail - Enviar usando a função PHP mail

  • Smtp - Enviar usando SMTP

  • Debug - Não envie o e-mail, apenas devolva o resultado

Você pode adicionar transportes personalizados (ou substituir transportes existentes), adicionando o arquivo apropriado para src/Mailer/Transport. Transportes devem ser nomeadosYourTransport.php, Onde 'Your' é o nome do transporte.

A seguir está o exemplo de transporte de configuração de email.

'EmailTransport' => [
   'default' => [
      'className' => 'Mail',
      // The following keys are used in SMTP transports
      'host' => 'localhost',
      'port' => 25,
      'timeout' => 30,
      'username' => 'user',
      'password' => 'secret',
      'client' => null,
      'tls' => null,
      'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
   ],
],

Perfis de entrega de email

Os perfis de entrega permitem predefinir várias propriedades sobre mensagens de e-mail de seu aplicativo e dar um nome às configurações. Isso economiza a duplicação em seu aplicativo e torna a manutenção e o desenvolvimento mais fáceis. Cada perfil aceita várias chaves.

A seguir está um exemplo de perfis de entrega de e-mail.

'Email' => [
   'default' => [
   
      'transport' => 'default',
      'from' => '[email protected]',
   ],
],