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 -
|
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.
registroSr. 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]',
],
],