Criando e Executando um Projeto Phalcon
O que é Phalcon?
Phalcon é um framework PHP de alto desempenho, implementado como uma extensão C, fornecendo eficiência extrema na execução. Ele adota a arquitetura MVC (Modelo-Visão-Controlador), com o objetivo de oferecer uma experiência de desenvolvimento rápida e flexível, ao mesmo tempo que mantém alto desempenho.
Principais características e vantagens do Phalcon
- Alto Desempenho: Sendo implementado como uma extensão C, Phalcon oferece um desempenho excelente.
- Funcionalidades Ricas: Inclui ORM, motor de templates, roteamento, cache, filas e muito mais, atendendo a diversas necessidades de desenvolvimento.
- Baixo Consumo de Memória: Graças ao seu método de implementação único, Phalcon consome pouca memória em tempo de execução.
- Fácil de Usar: Fornece uma API simples e fácil de usar e documentação clara, auxiliando desenvolvedores a começar rapidamente.
- Design Modular: É possível escolher e usar diferentes componentes conforme necessário, oferecendo elevada flexibilidade.
Phalcon é uma escolha ideal para construir aplicações Web de alto desempenho e APIs, adequando-se a projetos de pequeno porte até sistemas empresariais de grande escala.
Criando e Executando um Projeto Phalcon com o ServBay
Neste artigo, usaremos o ambiente PHP fornecido pelo ServBay para criar e executar um projeto Phalcon. Iremos utilizar a função 'Hospedagem' do ServBay para configurar o servidor Web e acessar o projeto através de configurações simples.
Atenção: Se você já foi usuário do NGINX ou Apache
O ServBay usa o Caddy como servidor Web por padrão. Para usuários que estão migrando do NGINX e Apache para o ServBay, há algumas mudanças importantes a serem observadas:
Configuração do Caddy
O ServBay já vem com o Caddy embutido e sua configuração padrão já está otimizada. Os desenvolvedores apenas precisam usar a função 'Hospedagem' do ServBay para gerenciar os sites, sem precisar modificar manualmente os arquivos de configuração do Caddy.
Regras de Reescrita e .htaccess
No NGINX e Apache, os desenvolvedores geralmente precisam escrever suas próprias regras de reescrita e arquivos .htaccess para tratar as reconfigurações de URL e outras configurações. No entanto, o ServBay vem configurado com essas regras no Caddy, então, a menos que haja uma necessidade especial, os desenvolvedores não precisam escrever essas regras.
Saiba Mais
Para mais informações, consulte Reescrita e htaccess, Como Migrar um Site do Apache para ServBay, Como Migrar um Site do NGINX para ServBay.
Atenção: Habilitando o Módulo Phalcon
O ServBay já vem com o módulo Phalcon embutido. Os usuários precisam ativar e reiniciar o PHP. Veja o artigo Como habilitar o módulo Phalcon embutido no ServBay para isso.
Diferentes Versões do Phalcon e DevTools
De acordo com as diferentes versões do PHP, é necessário instalar diferentes versões das Ferramentas de Desenvolvimento do Phalcon:
- PHP 5.6, 7.0, 7.1: Phalcon 3.4.5
- Versão correspondente das Ferramentas de Desenvolvimento do Phalcon:
3.4.x
- Versão correspondente das Ferramentas de Desenvolvimento do Phalcon:
- PHP 7.2, 7.3, 7.4: Phalcon 4.1.2
- Versão correspondente das Ferramentas de Desenvolvimento do Phalcon:
4.3.x
- Versão correspondente das Ferramentas de Desenvolvimento do Phalcon:
- PHP 8.0, 8.1, 8.2, 8.3, 8.4: Phalcon 5.7.0
- Versão correspondente das Ferramentas de Desenvolvimento do Phalcon:
5.0.x
(visto que as ferramentas de desenvolvimento oficiais não suportam bem o PHP 8.x, recomenda-se usar a versão corrigida)
- Versão correspondente das Ferramentas de Desenvolvimento do Phalcon:
Criando o Projeto Phalcon
TIP
O ServBay recomenda que os desenvolvedores coloquem seus sites no diretório /Applications/ServBay/www
para facilitar o gerenciamento.
Instalando o Composer
O ServBay já vem com o Composer embutido, não sendo necessária uma instalação separada.
Criando o Diretório do Projeto
Crie o diretório do projeto e entre nele:
bashcd /Applications/ServBay/www mkdir servbay-phalcon-app cd servbay-phalcon-app
1
2
3Instalando as Ferramentas de Desenvolvimento do Phalcon
Instale as ferramentas de desenvolvimento correspondentes à versão do PHP:
PHP 5.6, 7.0, 7.1:
bashcomposer require phalcon/devtools:"^3.4"
1PHP 7.2, 7.3, 7.4:
bashcomposer require phalcon/devtools:"~4.1"
1PHP 8.0, 8.1, 8.2, 8.3, 8.4:
Crie o arquivo
composer.json
com o seguinte conteúdo
{
"repositories": [
{
"url": "https://github.com/daleffe/phalcon-devtools-5.x-fixed.git",
"type": "git"
}
],
"require": {
"phalcon/devtools": "dev-master"
},
"minimum-stability": "dev",
"prefer-stable": true
}
2
3
4
5
6
7
8
9
10
11
12
13
Em seguida, execute:
composer update
Criando o Projeto Phalcon
Use as ferramentas de desenvolvimento do Phalcon para criar um novo projeto:
bashvendor/bin/phalcon project servbay-phalcon-app
1Entrando no Diretório do Projeto
Entre no diretório do novo projeto Phalcon criado:
bashcd servbay-phalcon-app
1
Configuração Inicial
Configurar Variáveis de Ambiente
No arquivo
app/config/config.php
, configure as informações de conexão do banco de dados e outras variáveis de ambiente, certificando-se de que as configurações estão corretas:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Mysql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], ]);
1
2
3
4
5
6
7
8
9
Configuração do Servidor Web
Utilize a função 'Hospedagem' do ServBay para acessar o projeto Phalcon através do servidor Web. Nas configurações de 'Hospedagem' do ServBay, adicione uma nova hospedagem:
- Nome:
My First Phalcon Dev Site
- Domínio:
servbay-phalcon-test.local
- Tipo de Site:
PHP
- Versão do PHP: escolha a versão correspondente do PHP
- Diretório Raiz do Site:
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/public
Para passos detalhados de configuração, consulte Adicionando o Primeiro Site.
Adicionando Código de Exemplo
No arquivo app/config/routes.php
, adicione o seguinte código para exibir "Hello ServBay!":
$router->add(
'/',
[
'controller' => 'index',
'action' => 'index',
]
);
2
3
4
5
6
7
No arquivo app/controllers/IndexController.php
, adicione o seguinte código:
namespace App\Controllers;
use Phalcon\Mvc\Controller;
class IndexController extends Controller
{
public function indexAction()
{
echo 'Hello ServBay!';
}
}
2
3
4
5
6
7
8
9
10
11
Acessando o Site
Abra o navegador e acesse https://servbay-phalcon-test.local
, você verá a página exibindo Hello ServBay!
.
Exemplo de Banco de Dados NoSQL
Exemplo de Memcached
Instalar a Extensão Memcached
No ServBay, a extensão Memcached já vem pré-instalada, não sendo necessária instalação adicional.
Configurar o Memcached
No arquivo
app/config/config.php
, adicione as informações de conexão do Memcached:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Mysql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], 'cache' => [ 'adapter' => 'Memcached', 'host' => '127.0.0.1', 'port' => 11211, ], ]);
1
2
3
4
5
6
7
8
9
10
11
12
13
14Configurar Rotas
No arquivo
app/config/routes.php
, adicione o seguinte código:php$router->add( '/memcached', [ 'controller' => 'index', 'action' => 'memcached', ] );
1
2
3
4
5
6
7Utilizando o Memcached
No controlador, utilize o cache:
phpnamespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Cache\Backend\Memcached; use Phalcon\Cache\Frontend\Data as FrontData; class IndexController extends Controller { public function memcachedAction() { $frontCache = new FrontData([ 'lifetime' => 86400 ]); $cache = new Memcached($frontCache, [ 'host' => '127.0.0.1', 'port' => 11211, ]); $cacheKey = 'my_cache_key'; $cachedData = $cache->get($cacheKey); if ($cachedData === null) { $cachedData = 'Hello Memcached!'; $cache->save($cacheKey, $cachedData); } echo $cachedData; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30Abra o navegador e acesse
https://servbay-phalcon-test.local/memcached
Exemplo de Redis
Instalar a Extensão Redis
No ServBay, a extensão Redis já vem pré-instalada, não sendo necessária instalação adicional.
Configurar o Redis
No arquivo
app/config/config.php
, adicione as informações de conexão do Redis:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Mysql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], 'cache' => [ 'adapter' => 'Redis', 'host' => '127.0.0.1', 'port' => 6379, ], ]);
1
2
3
4
5
6
7
8
9
10
11
12
13
14Configurar Rotas
No arquivo
app/config/routes.php
, adicione o seguinte código:php$router->add( '/redis', [ 'controller' => 'index', 'action' => 'redis', ] );
1
2
3
4
5
6
7Utilizando o Redis
No controlador, utilize o cache:
phpnamespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Cache\Backend\Redis; use Phalcon\Cache\Frontend\Data as FrontData; class IndexController extends Controller { public function redisAction() { $frontCache = new FrontData([ 'lifetime' => 86400 ]); $cache = new Redis($frontCache, [ 'host' => '127.0.0.1', 'port' => 6379, ]); $cacheKey = 'my_cache_key'; $cachedData = $cache->get($cacheKey); if ($cachedData === null) { $cachedData = 'Hello Redis!'; $cache->save($cacheKey, $cachedData); } echo $cachedData; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30Abra o navegador e acesse
https://servbay-phalcon-test.local/redis
Exemplo de Banco de Dados Relacional
Criar Estrutura do Banco de Dados e Arquivos de Migração
Criando Arquivo de Migração
Utilize as ferramentas de desenvolvimento do Phalcon para criar o arquivo de migração:
bashvendor/bin/phalcon migration generate --directory=servbay-phalcon-app
1Editando o Arquivo de Migração
No diretório
migrations
, crie um novo arquivo de migração e edite-o para definir a estrutura da tabela do banco de dados:phpuse Phalcon\Db\Column; use Phalcon\Db\Index; use Phalcon\Migrations\Mvc\Model\Migration; class UsersMigration_100 extends Migration { public function morph() { $this->morphTable('users', [ 'columns' => [ new Column( 'id', [ 'type' => Column::TYPE_INTEGER, 'autoIncrement' => true, 'notNull' => true, 'primary' => true, ] ), new Column( 'name', [ 'type' => Column::TYPE_VARCHAR, 'size' => 255, 'notNull' => true, ] ), new Column( 'email', [ 'type' => Column::TYPE_VARCHAR, 'size' => 255, 'notNull' => true, 'unique' => true, ] ), ], 'indexes' => [ new Index('PRIMARY', ['id'], 'PRIMARY'), new Index('email_UNIQUE', ['email'], 'UNIQUE'), ], ]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44Executando a Migração
Utilize o comando da ferramenta de desenvolvimento do Phalcon para executar a migração e criar a tabela:
bashvendor/bin/phalcon migration run --directory=servbay-phalcon-app
1
Exemplo de MySQL
Configurar o MySQL
No arquivo
app/config/config.php
, configure as informações de conexão do MySQL:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Mysql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], ]);
1
2
3
4
5
6
7
8
9Configurar Rotas
No arquivo
app/config/routes.php
, adicione o seguinte código:php$router->add( '/mysql-add', [ 'controller' => 'index', 'action' => 'mysqlAdd', ] ); $router->add( '/mysql', [ 'controller' => 'index', 'action' => 'mysql', ] );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Inserindo Dados dos Usuários
No controlador, insira os dados dos usuários:
phpnamespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Db\Adapter\Pdo\Mysql; class IndexController extends Controller { public function mysqlAddAction() { $connection = new Mysql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ]); $success = $connection->insert( 'users', ['ServBay', '[email protected]'], ['name', 'email'] ); echo $success ? 'User added' : 'Failed to add user'; } public function mysqlAction() { $connection = new Mysql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ]); $users = $connection->fetchAll('SELECT * FROM users', \Phalcon\Db\Enum::FETCH_ASSOC); echo 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39Abra o navegador e acesse
https://servbay-phalcon-test.local/mysql-add
ehttps://servbay-phalcon-test.local/mysql
Exemplo de PostgreSQL
Configurar o PostgreSQL
No arquivo
app/config/config.php
, configure as informações de conexão do PostgreSQL:phpreturn new \Phalcon\Config([ 'database' => [ 'adapter' => 'Postgresql', 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ], ]);
1
2
3
4
5
6
7
8
9Configurar Rotas
No arquivo
app/config/routes.php
, adicione o seguinte código:php$router->add( '/pgsql-add', [ 'controller' => 'index', 'action' => 'pgsqlAdd', ] ); $router->add( '/pgsql', [ 'controller' => 'index', 'action' => 'pgsql', ] );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Inserindo Dados dos Usuários
No controlador, insira os dados dos usuários:
phpnamespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Db\Adapter\Pdo\Postgresql; class IndexController extends Controller { public function pgsqlAddAction() { $connection = new Postgresql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'dbname' => 'servbay_phalcon_app', ]); $success = $connection->insert( 'users', ['ServBay', '
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19