Criar e Executar um Projeto CakePHP
O que é CakePHP?
CakePHP é um framework web PHP de código aberto projetado para ajudar desenvolvedores a construir aplicações web rapidamente. Baseado na arquitetura MVC (Model-View-Controller), ele fornece um conjunto poderoso de ferramentas que simplificam tarefas comuns de desenvolvimento, como interação com banco de dados, manipulação de formulários, autenticação e gerenciamento de sessões.
Principais Funcionalidades e Vantagens do CakePHP
- Desenvolvimento Rápido: Oferece ferramentas ricas de geração de código que ajudam os desenvolvedores a gerar rapidamente estruturas comuns de código.
- ORM Flexível e Poderoso: A camada de ORM (Mapeamento Objeto-Relacional) embutida simplifica operações de banco de dados.
- Segurança: Recursos de segurança embutidos, como validação de entrada, proteção CSRF e prevenção de injeção SQL.
- Suporte da Comunidade: Comunidade ativa e um ecossistema rico em plugins.
- Boa Documentação: Fornece documentação extensa e tutoriais para ajudar desenvolvedores a iniciarem rapidamente.
CakePHP é adequado para projetos que variam de pequenas aplicações a grandes sistemas empresariais, ajudando desenvolvedores a construir rapidamente aplicações web de alta qualidade.
Criar e Executar um Projeto CakePHP Usando o ServBay
Neste artigo, utilizaremos o ambiente PHP fornecido pelo ServBay para criar e executar um projeto CakePHP. Utilizaremos o recurso "Host" do ServBay para configurar um servidor web e configurar o projeto para acesso com configurações simples.
Nota: Se Você Já Usou NGINX ou Apache Antes
O ServBay usa o Caddy como servidor web por padrão. Existem algumas mudanças importantes a serem observadas para os usuários que estão migrando do NGINX e Apache para o ServBay:
Configuração do Caddy
O ServBay vem com o Caddy pré-instalado e pré-configurado. Os desenvolvedores só precisam gerenciar sites através do recurso "Host" do ServBay sem editar manualmente o arquivo de configuração do Caddy.
Regras de Reescrita e .htaccess
No NGINX e Apache, os desenvolvedores geralmente escrevem suas próprias regras de reescrita e arquivos .htaccess para lidar com reescrita de URL e outras configurações. No entanto, o ServBay já fornece regras otimizadas para o Caddy prontas para uso, então os desenvolvedores não precisam escrever essas regras, a menos que haja requisitos especiais.
Saiba Mais
Para mais informações, consulte Reescrita e htaccess, Como Migrar Site Apache para o ServBay e Como Migrar Site NGINX para o ServBay.
Criar um Projeto CakePHP
TIP
ServBay recomenda que os desenvolvedores coloquem seus sites no diretório /Applications/ServBay/www
para facilitar o gerenciamento.
Instalar Composer
O ServBay vem com o Composer pré-instalado, então não é necessário uma instalação separada.
Criar um Projeto CakePHP
Use o Composer para criar um novo projeto CakePHP:
bashcd /Applications/ServBay/www mkdir servbay-cakephp-app cd servbay-cakephp-app composer create-project --prefer-dist cakephp/app .
1
2
3
4Entrar no Diretório do Projeto
Navegue até o novo diretório do projeto CakePHP:
bashcd /Applications/ServBay/www/servbay-cakephp-app
1
Configuração Inicial
Configurar Variáveis de Ambiente
Configure as informações de conexão do banco de dados e outras variáveis de ambiente no arquivo
config/app_local.php
. Certifique-se de que as seguintes configurações estejam corretamente definidas:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
Configurar Servidor Web
Use o recurso "Host" do ServBay para acessar o projeto CakePHP via servidor web. Nas configurações do Host do ServBay, adicione um novo host:
- Nome:
Meu Primeiro Site Dev CakePHP
- Domínio:
servbay-cakephp-test.local
- Tipo de Site:
PHP
- Versão PHP: Selecione
8.3
- Diretório Raiz do Site:
/Applications/ServBay/www/servbay-cakephp-app/webroot
Para etapas detalhadas de configuração, consulte Adicionando Seu Primeiro Site.
Adicionar Código de Exemplo
Adicione o seguinte código ao arquivo config/routes.php
para exibir "Hello ServBay!":
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
Adicione o seguinte código ao arquivo src/Controller/PagesController.php
:
namespace App\Controller;
use Cake\Http\Response;
class PagesController extends AppController
{
public function display()
{
return new Response(['body' => 'Hello ServBay!']);
}
}
2
3
4
5
6
7
8
9
10
11
Acessar o Site
Abra um navegador e acesse https://servbay-cakephp-test.local
para ver a página exibindo Hello ServBay!
.
Exemplo com Bancos de Dados NoSQL
Exemplo com Memcached
Instalar Extensão Memcached
A extensão Memcached já está pré-instalada no ServBay, então não é necessário uma instalação adicional.
Configurar Memcached
Configure as informações de conexão do Memcached no arquivo
config/app_local.php
:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\MemcachedEngine', 'servers' => ['127.0.0.1'], ], ],
1
2
3
4
5
6Configurar Rotas
Adicione o seguinte código ao arquivo
config/routes.php
:php$routes->connect('/memcached', ['controller' => 'Pages', 'action' => 'memcached']);
1Usar Memcached
Use o cache no controlador:
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function memcached() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Memcached!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Abra um navegador e acesse
https://servbay-cakephp-test.local/memcached
Exemplo com Redis
Instalar Extensão Redis
A extensão Redis já está pré-instalada no ServBay, então não é necessário uma instalação adicional.
Configurar Redis
Configure as informações de conexão do Redis no arquivo
config/app_local.php
:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\RedisEngine', 'server' => '127.0.0.1', 'port' => 6379, ], ],
1
2
3
4
5
6
7Configurar Rotas
Adicione o seguinte código ao arquivo
config/routes.php
:php$routes->connect('/redis', ['controller' => 'Pages', 'action' => 'redis']);
1Usar Redis
Use o cache no controlador:
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function redis() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Redis!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Abra um navegador e acesse
https://servbay-cakephp-test.local/redis
Exemplo com Banco de Dados Relacional
Criar Esquema de Banco de Dados e Arquivos de Migração
Criar Arquivos de Migração
Use a ferramenta Bake do CakePHP para criar arquivos de migração:
bashbin/cake bake migration CreateUsers name:string email:string:unique
1Executar Migração
Use os comandos do CakePHP para rodar as migrações e criar tabelas no banco de dados:
bashbin/cake migrations migrate
1
Exemplo com MySQL
Configurar MySQL
Configure as informações de conexão do MySQL no arquivo
config/app_local.php
:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9Configurar Rotas
Adicione o seguinte código ao arquivo
config/routes.php
:php$routes->connect('/mysql-add', ['controller' => 'Pages', 'action' => 'mysqlAdd']); $routes->connect('/mysql', ['controller' => 'Pages', 'action' => 'mysql']);
1
2Adicionar Tabela de Usuários
Adicione o seguinte código ao arquivo
src/Model/Table/UsersTable.php
:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Adicionar Dados de Usuário
Adicione dados de usuário no controlador:
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function mysqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function mysql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => json_encode($users)]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25Abra um navegador e acesse
https://servbay-cakephp-test.local/mysql-add
ehttps://servbay-cakephp-test.local/mysql
Exemplo com PostgreSQL
Configurar PostgreSQL
Configure as informações de conexão do PostgreSQL no arquivo
config/app_local.php
:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'driver' => Postgres::Class, 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
10Configurar Rotas
Adicione o seguinte código ao arquivo
config/routes.php
:php$routes->connect('/pgsql-add', ['controller' => 'Pages', 'action' => 'pgsqlAdd']); $routes->connect('/pgsql', ['controller' => 'Pages', 'action' => 'pgsql']);
1
2Adicionar Tabela de Usuários
Adicione o seguinte código ao arquivo
src/Model/Table/UsersTable.php
:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Adicionar Dados de Usuário
Adicione dados de usuário no controlador:
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function pgsqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function pgsql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => json_encode($users)]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25Abra um navegador e acesse
https://servbay-cakephp-test.local/pgsql-add
ehttps://servbay-cakephp-test.local/pgsql
Seguindo os passos acima, você criou e executou com sucesso um projeto CakePHP, utilizou os recursos do ServBay para gerenciar e acessar seu projeto, e conectou e consultou diversos bancos de dados.