Criando e Executando um Projeto PHPixie no macOS com o ServBay
O PHPixie é um framework PHP leve e de alta performance, projetado para o desenvolvimento ágil de aplicações web. Segue o padrão de projeto HMVC (Hierarchical Model-View-Controller), oferecendo uma estrutura de código clara e eficiente. PHPixie é conhecido por sua simplicidade, flexibilidade e desempenho elevado, sendo escolhido por muitos desenvolvedores.
Principais Características e Vantagens do PHPixie
- Leveza: O núcleo do PHPixie é extremamente enxuto, contendo apenas os componentes essenciais para construir uma aplicação, garantindo inicialização e execução rápidas.
- Alta Performance: O framework foi desenhado para ser eficiente e processar requisições concorrentes com facilidade, sendo ideal para aplicações com altas demandas de desempenho.
- Facilidade de Aprendizado: Conta com uma API clara e documentação abrangente, permitindo que desenvolvedores aprendam seu uso rapidamente.
- Flexibilidade: Possui arquitetura desacoplada, permitindo ao desenvolvedor escolher e integrar bibliotecas e componentes de terceiros conforme necessário.
- Comunidade Ativa: Uma comunidade de desenvolvedores engajada oferece uma variedade de extensões e recursos de suporte.
O PHPixie ajuda desenvolvedores a construir aplicações web de alta performance e qualidade de forma eficiente, adequado desde pequenos projetos até aplicações empresariais de grande porte.
Como Criar e Executar um Projeto PHPixie com o ServBay
Neste artigo, mostraremos como utilizar o ambiente de desenvolvimento local do ServBay para criar e executar um projeto PHPixie. Usaremos o PHP integrado do ServBay, o Composer para gerenciamento de dependências, a funcionalidade “Websites” para configurar o servidor web e passos simples para acessar o projeto localmente, além da integração com bancos de dados e cache.
Pré-requisitos
- ServBay instalado e rodando no macOS. O ServBay já integra PHP, Composer, bancos de dados (MySQL, PostgreSQL, MongoDB, Redis, etc.) e o servidor web Caddy.
- Conhecimento básico de comandos no terminal.
Criando um Projeto PHPixie
Caminho sugerido para sites
O ServBay recomenda que você armazene todos os seus projetos web locais em /Applications/ServBay/www
para melhor organização e controle de permissões de acesso.
- Verifique se o Composer está instalado: O ServBay já inclui o Composer por padrão, sem a necessidade de instalação adicional. Você pode verificar abrindo o terminal e digitando
composer --version
. - Crie o diretório do projeto: Dentro da pasta recomendada pelo ServBay, crie um novo diretório para seu projeto PHPixie e acesse-o:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - Crie o projeto PHPixie via Composer: No diretório do projeto, execute o comando do Composer para baixar o template do PHPixie:bashO Composer irá baixar o PHPixie e todas as dependências para o diretório atual.
composer create-project phpixie/project .
1
Configurando o Servidor Web
Utilize a funcionalidade Websites do ServBay para configurar o servidor web Caddy e garantir que ele aponte corretamente para seu projeto PHPixie.
Abra a interface do aplicativo ServBay.
Navegue até a lista Websites.
Clique para adicionar um novo site.
Preencha as informações de configuração:
- Nome: Por exemplo,
Meu Primeiro Site Dev PHPixie
(identificação interna no ServBay). - Domínio: Por exemplo,
servbay-phpixie-test.local
(URL de acesso no navegador). - Tipo de site: Selecione
PHP
. - Versão do PHP: Escolha a versão preferida, como
8.3
. - Diretório raiz (Document Root): Aponte para o diretório
web
do seu projeto:/Applications/ServBay/www/servbay-phpixie-app/web
.
Por que o diretório
/web
?O arquivo de entrada do projeto PHPixie é o
web/index.php
. Por questões de segurança e boas práticas, a raiz do servidor web deve apontar diretamente para o diretórioweb
, evitando o acesso externo a arquivos sensíveis do projeto (como configurações e diretório vendor).- Nome: Por exemplo,
Salve a configuração. O ServBay irá configurar o Caddy e atualizar seu arquivo hosts local (se necessário), fazendo o domínio
servbay-phpixie-test.local
apontar para o servidor ServBay local.
Para detalhes passo a passo, consulte Adicionando seu primeiro site.
Adicionando Código de Exemplo
Para verificar se o projeto está funcionando e demonstrar a integração com banco de dados e cache, adicione alguns exemplos de código.
Crie um controlador de exemplo: Adicione o seguinte código em
src/App/HTTP/Controller/Home.php
. Se as pastas ou arquivo não existirem, crie-os manualmente.php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // Importa a classe Query class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // Action da página inicial padrão public function action_index(Request $request) { // Renderiza o template assets/templates/app/home.php return $this->template->render('app:home'); } // Action de exemplo com Memcached public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached from ServBay!', 60); // Armazena dado por 60 segundos $value = $cache->get('key'); // Recupera o dado return $this->response()->string($value); // Retorna resposta em string } // Action de exemplo com Redis public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis from ServBay!'); // Armazena dado $value = $redis->get('key'); // Recupera o dado return $this->response()->string($value); // Retorna resposta em string } // Adiciona usuário ao MySQL/PostgreSQL public function action_add_user(Request $request) { // Usa o componente database para obter o query builder $query = $this->components->database()->query(); // Insere novo usuário na tabela 'users' $query->insert('users')->data([ 'name' => 'ServBay Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // Usa email único ])->execute(); // Executa a inserção return $this->response()->string('User added successfully.'); // Retorna mensagem de sucesso } // Lista usuários do MySQL/PostgreSQL public function action_list_users(Request $request) { // Usa o componente database para obter o query builder $query = $this->components->database()->query(); // Consulta todos os usuários na tabela 'users' $users = $query->select('*')->from('users')->execute()->fetchAll(); // Executa e busca os resultados return $this->response()->json($users); // Retorna lista de usuários em JSON } }
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67Crie um template de exemplo: Adicione o código abaixo em
assets/templates/app/home.php
. Crie as pastas ou arquivo, se necessário.php<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Welcome to PHPixie on ServBay</title> <style> body { font-family: sans-serif; line-height: 1.6; margin: 20px; } h1 { color: #333; } p { margin-bottom: 15px; } code { background-color: #f4f4f4; padding: 2px 5px; border-radius: 4px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } li a { text-decoration: none; color: #007bff; } li a:hover { text-decoration: underline; } </style> </head> <body> <h1>Welcome to PHPixie on ServBay</h1> <p>This page is being generated dynamically by your PHPixie application running on ServBay.</p> <h2>Links de funcionalidades de exemplo:</h2> <ul> <li><a href="/home/memcached">Testar Memcached</a></li> <li><a href="/home/redis">Testar Redis</a></li> <li><a href="/home/add_user">Adicionar usuário ao banco de dados</a></li> <li><a href="/home/list_users">Listar usuários do banco de dados</a></li> </ul> <p>Certifique-se de que você já realizou as configurações do banco de dados e do cache.</p> </body> </html>
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
Acessando o Site Básico
Com a configuração do site no ServBay finalizada e o código de exemplo adicionado, você já pode acessar no navegador o domínio que definiu:
- Abra o navegador e acesse
https://servbay-phpixie-test.local
. - Você verá uma página mostrando "Welcome to PHPixie on ServBay" e vários links de funcionalidades de exemplo.
Se não conseguir acessar, verifique:
- Se o ServBay está rodando corretamente.
- Se as configurações do site no ServBay estão corretas (domínio, tipo de site, diretório raiz).
- Se o seu arquivo hosts local está resolvendo o domínio
servbay-phpixie-test.local
(o ServBay geralmente faz isto automaticamente). - Se a versão do PHP está habilitada.
Exemplos de Integração com Banco de Dados e Cache
O PHPixie tem suporte nativo para múltiplos bancos de dados e sistemas de cache. O ServBay disponibiliza pacotes como MySQL, PostgreSQL, Redis e Memcached, tornando fácil integrá-los ao seu projeto PHPixie.
Atenção: Antes de operar o banco, certifique-se de que o serviço correspondente (MySQL ou PostgreSQL) está rodando no ServBay e que o banco para este projeto já foi criado, por exemplo, servbay_phpixie_app
. Use ferramentas como Sequel Ace, Postico, TablePlus ou o terminal para criar o banco. O usuário padrão costuma ser root
e a senha password
(confirme conforme sua configuração ServBay).
Configurando a Conexão com o Banco de Dados
De acordo com o tipo de banco (MySQL ou PostgreSQL), edite o arquivo assets/config/database.php
na raiz do projeto. O endereço padrão do banco no ServBay é geralmente 127.0.0.1
.
Exemplo de configuração do MySQL (assets/config/database.php
):
<?php
return [
'default' => [
'driver' => 'pdo',
// ajuste a string de conexão conforme o tipo de banco e configuração do ServBay
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // usuário padrão do ServBay
'password' => 'password', // senha padrão do ServBay (modifique caso necessário)
'options' => []
]
];
2
3
4
5
6
7
8
9
10
11
12
Exemplo de configuração do PostgreSQL (assets/config/database.php
):
<?php
return [
'default' => [
'driver' => 'pdo',
// ajuste a string de conexão conforme o tipo de banco e configuração do ServBay
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // usuário padrão do ServBay
'password' => 'password', // senha padrão do ServBay (modifique caso necessário)
'options' => []
]
];
2
3
4
5
6
7
8
9
10
11
12
Criando Tabelas (via Migração)
O PHPixie fornece CLI para gerenciamento de migrações, facilitando o versionamento do esquema do banco de dados.
- Abra o terminal: Vá para a raiz do projeto:bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - Crie o arquivo de migração: Use o CLI do PHPixie para gerar a migração da tabela
users
:bashEsse comando criará um arquivo novo emphp pixie generate:migration create_users_table
1assets/migrations
com carimbo de data/hora. - Edite o arquivo de migração: No arquivo criado (por exemplo,
YYYY_MM_DD_HHMMSS_create_users_table.php
), edite os métodosup()
edown()
assim:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // Cria a tabela 'users' usando o schema builder $this->schema->create('users', function(Table $table) { $table->increments('id'); // Chave primária auto-incrementada $table->string('name'); // Coluna nome $table->string('email')->unique(); // Coluna email, única $table->timestamps(); // Colunas de timestamp created_at e updated_at }); } public function down() { // Remove a tabela 'users' $this->schema->drop('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 - Execute a migração: No terminal do diretório do projeto, execute:bashSe tudo estiver correto, aparecerá uma mensagem indicando sucesso. Você poderá também conferir no seu gerenciador de banco se a tabela
php pixie migrate
1users
foi criada no bancoservbay_phpixie_app
.
Usando Bancos de Dados Relacionais (MySQL/PostgreSQL)
No controlador de exemplo src/App/HTTP/Controller/Home.php
, já adicionamos os métodos action_add_user
e action_list_users
para ilustrar o uso do componente database do PHPixie com MySQL ou PostgreSQL.
- Adicionar usuário: Acesse
https://servbay-phpixie-test.local/home/add_user
para inserir um novo usuário na tabelausers
. - Listar usuários: Acesse
https://servbay-phpixie-test.local/home/list_users
para consultar todos os registros da tabela e obter uma resposta em JSON.
Configurando e Usando Bancos NoSQL (Memcached/Redis)
O ServBay já instala os pacotes e extensões PHP do Memcached/Redis por padrão. Só é necessário configurar no PHPixie.
Configuração do Memcached (assets/config/cache.php
):
Crie ou edite assets/config/cache.php
e adicione:
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // Endereço padrão do Memcached ServBay
'port' => 11211, // Porta padrão do Memcached ServBay
'weight' => 100,
],
],
],
];
2
3
4
5
6
7
8
9
10
11
12
13
14
Configuração do Redis (assets/config/redis.php
):
Crie ou edite assets/config/redis.php
e adicione:
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Endereço padrão do Redis ServBay
'port' => 6379, // Porta padrão do Redis ServBay
'timeout' => 0,
'database' => 0, // Índice do banco Redis
],
];
2
3
4
5
6
7
8
9
10
Usando Memcached/Redis:
Nos métodos action_memcached
e action_redis
do controlador de exemplo já mostramos como utilizar o componente de cache do PHPixie (cujo backend é escolhido pela configuração).
- Testar Memcached: Acesse
https://servbay-phpixie-test.local/home/memcached
para gravar e ler uma chave do Memcached. - Testar Redis: Acesse
https://servbay-phpixie-test.local/home/redis
para gravar e ler uma chave no Redis.
Certifique-se de que os pacotes respectivos (Memcached e Redis) estejam rodando no ServBay.
Conclusão
Seguindo este passo a passo, você conseguiu criar, configurar e rodar um projeto PHPixie localmente no macOS usando o ServBay. Você aprendeu a criar o projeto com Composer, configurar o servidor web via funcionalidade Websites do ServBay, integrar bancos de dados e sistemas de cache, e validar essas funcionalidades.
O ambiente integrado do ServBay torna a configuração para desenvolvimento PHP muito mais simples, permitindo ao desenvolvedor focar no código. Esperamos que este guia ajude você a começar rapidamente e a construir seu próximo projeto web com PHPixie!