Criando e Executando um Projeto CakePHP
O que é CakePHP?
CakePHP é um framework PHP de código aberto projetado para ajudar os desenvolvedores a construir rapidamente aplicativos web. Ele é baseado na arquitetura MVC (Model-View-Controller) e oferece um conjunto poderoso de ferramentas que simplificam tarefas comuns no desenvolvimento, como interação com banco de dados, manipulação de formulários, autenticação e gerenciamento de sessão.
Principais características e vantagens do CakePHP
- Desenvolvimento rápido: Oferece uma vasta gama de ferramentas de geração de código que ajudam os desenvolvedores a criar rapidamente estruturas de código comuns.
- ORM flexível e poderoso: A camada ORM (Mapeamento Objeto-Relacional) interna simplifica as operações de banco de dados.
- Segurança: Vem com vários recursos de segurança integrados, como validação de entrada, proteção CSRF e prevenção contra SQL Injection.
- Suporte da comunidade: Tem uma comunidade ativa e um rico ecossistema de plugins.
- Boa documentação: Fornece documentação e tutoriais detalhados para ajudar os desenvolvedores a começar rapidamente.
O CakePHP é adequado para projetos de todos os tamanhos, desde pequenas aplicações até sistemas empresariais de grande porte, ajudando os desenvolvedores a construir aplicativos web de alta qualidade rapidamente.
Criando e Executando um Projeto CakePHP com o ServBay
Neste artigo, usaremos o ambiente PHP fornecido pelo ServBay para criar e executar um projeto CakePHP. Utilizaremos a funcionalidade de 'host' do ServBay para configurar o servidor web e acessar o projeto por meio de configurações simples.
Nota: Se você já foi usuário do NGINX ou Apache
O ServBay usa o Caddy como servidor web por padrão. Para os usuários que estão migrando de NGINX e Apache para o ServBay, existem alguns pontos de mudança importantes a serem observados:
Configuração do Caddy
O ServBay já vem com o Caddy integrado e a configuração padrão já foi otimizada e testada. Os desenvolvedores só precisam gerenciar os sites através da funcionalidade 'host' do ServBay, sem necessidade de modificar manualmente os arquivos de configuração do Caddy.
Regras de Rewrite e .htaccess
No NGINX e Apache, os desenvolvedores geralmente precisam escrever suas próprias regras de Rewrite e arquivos .htaccess para lidar com reescrita de URL e outras configurações. No entanto, o ServBay já vem configurado com as regras do Caddy, então, a menos que haja necessidades especiais, os desenvolvedores não precisam escrever essas regras.
Saiba mais
Para mais informações, consulte Rewrite e htaccess, Como migrar um site Apache para o ServBay e Como migrar um site NGINX para o ServBay.
Criando um Projeto CakePHP
TIP
O ServBay recomenda que os desenvolvedores coloquem os sites no diretório /Applications/ServBay/www
para facilitar o gerenciamento.
Instalando o Composer
O ServBay já vem com o Composer pré-instalado, então não é necessário instalá-lo separadamente.
Criando 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
4Entrando no Diretório do Projeto
Entre no diretório do novo projeto CakePHP:
bashcd /Applications/ServBay/www/servbay-cakephp-app
1
Inicializando a Configuração
Configurar Variáveis de Ambiente
No arquivo
config/app_local.php
, configure as informações de conexão de banco de dados e outras variáveis de ambiente. Certifique-se de que a configuração a seguir esteja correta: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
Configurando o Servidor Web
Use a funcionalidade de 'host' do ServBay para acessar o projeto CakePHP. Nas configurações de 'host' do ServBay, adicione um novo host:
- Nome:
Meu Primeiro Site de Desenvolvimento CakePHP
- Domínio:
servbay-cakephp-test.local
- Tipo de Site:
PHP
- Versão do PHP: Escolha
8.3
- Diretório Raiz do Site:
/Applications/ServBay/www/servbay-cakephp-app/webroot
Para passos detalhados, consulte Adicionando o Primeiro Site.
Adicionando Código de Exemplo
No arquivo config/routes.php
, adicione o seguinte código para exibir "Hello ServBay!":
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
No arquivo src/Controller/PagesController.php
, adicione o seguinte código:
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
Acessando o Site
Abra o navegador e acesse https://servbay-cakephp-test.local
. Você verá a mensagem Hello ServBay!
na página.
Exemplos de Banco de Dados NoSQL
Exemplo Memcached
Instalar a Extensão Memcached
No ServBay, a extensão Memcached já está pré-instalada, sem necessidade de instalação extra.
Configurar Memcached
No arquivo
config/app_local.php
, configure as informações de conexão do Memcached:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\MemcachedEngine', 'servers' => ['127.0.0.1'], ], ],
1
2
3
4
5
6Configurar Roteamento
No arquivo
config/routes.php
, adicione o seguinte código:php$routes->connect('/memcached', ['controller' => 'Pages', 'action' => 'memcached']);
1Usar o Memcached
No controlador, use o cache:
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 o navegador e acesse
https://servbay-cakephp-test.local/memcached
.
Exemplo Redis
Instalar a Extensão Redis
No ServBay, a extensão Redis já está pré-instalada, sem necessidade de instalação extra.
Configurar Redis
No arquivo
config/app_local.php
, configure as informações de conexão do Redis:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\RedisEngine', 'server' => '127.0.0.1', 'port' => 6379, ], ],
1
2
3
4
5
6
7Configurar Roteamento
No arquivo
config/routes.php
, adicione o seguinte código:php$routes->connect('/redis', ['controller' => 'Pages', 'action' => 'redis']);
1Usar o Redis
No controlador, use o cache:
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 o navegador e acesse
https://servbay-cakephp-test.local/redis
.
Exemplos de Banco de Dados Relacional
Criar Estrutura de Banco de Dados e Arquivos de Migração
Criar Arquivo de Migração
Use a ferramenta Bake do CakePHP para criar um arquivo de migração:
bashbin/cake bake migration CreateUsers name:string email:string:unique
1Executar Migração
Use o comando do CakePHP para executar a migração e criar a tabela de banco de dados:
bashbin/cake migrations migrate
1
Exemplo MySQL
Configurar MySQL
No arquivo
config/app_local.php
, configure as informações de conexão do MySQL: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 Roteamento
No arquivo
config/routes.php
, adicione o seguinte código:php$routes->connect('/mysql-add', ['controller' => 'Pages', 'action' => 'mysqlAdd']); $routes->connect('/mysql', ['controller' => 'Pages', 'action' => 'mysql']);
1
2Adicionar Tabela User
Salve o código abaixo no 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
8Inserir Dados de Usuário
No controlador, insira dados de usuário:
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 o navegador e acesse
https://servbay-cakephp-test.local/mysql-add
ehttps://servbay-cakephp-test.local/mysql
.
Exemplo PostgreSQL
Configurar PostgreSQL
No arquivo
config/app_local.php
, configure as informações de conexão do PostgreSQL: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 Roteamento
No arquivo
config/routes.php
, adicione o seguinte código:php$routes->connect('/pgsql-add', ['controller' => 'Pages', 'action' => 'pgsqlAdd']); $routes->connect('/pgsql', ['controller' => 'Pages', 'action' => 'pgsql']);
1
2Adicionar Tabela User
Salve o código abaixo no 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
8Inserir Dados de Usuário
No controlador, insira dados de usuário:
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 o 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, utilizando as funcionalidades fornecidas pelo ServBay para gerenciar e acessar seu projeto, conectando-se a vários bancos de dados e manipulando dados.