Criando e Executando um Projeto PHPixie no macOS com ServBay
O PHPixie é um framework PHP leve e de alto desempenho, projetado para o desenvolvimento rápido de aplicações web. Ele segue o padrão HMVC (Hierarchical Model-View-Controller), oferecendo uma estrutura de código organizada e eficiência no processamento. PHPixie é amplamente adotado por desenvolvedores devido à sua simplicidade, flexibilidade e performance.
Principais Características e Vantagens do PHPixie
- Leveza: O core do PHPixie é bem enxuto, trazendo apenas os componentes essenciais para construção de aplicações, resultando em inicialização e execução rápidas.
- Alto desempenho: O design do framework foca em eficiência, conseguindo lidar com múltiplas requisições simultâneas, ideal para aplicações que exigem performance elevada.
- Facilidade de aprendizado: Oferece uma API clara e documentação detalhada, permitindo que desenvolvedores o dominem rapidamente.
- Flexibilidade: Estrutura desacoplada, permitindo a escolha e integração livre de bibliotecas e componentes de terceiros conforme a necessidade do projeto.
- Comunidade ativa: Possui uma comunidade engajada, com muitos recursos e extensões disponíveis.
O PHPixie permite que desenvolvedores criem aplicações web de alta qualidade e performance, seja para projetos pequenos ou grandes soluções empresariais.
Criando e Executando um Projeto PHPixie com ServBay
Este guia vai mostrar como usar o ambiente de desenvolvimento web local do ServBay para criar e rodar um projeto PHPixie. Utilizaremos o PHP integrado, o gerenciador de dependências Composer e a funcionalidade “Websites” do ServBay para configurar o servidor Web, realizar acesso local ao projeto e integrar bancos de dados/cache facilmente.
Pré-requisitos
- ServBay já instalado e rodando no macOS. O ServBay inclui PHP, Composer, vários bancos de dados (MySQL, PostgreSQL, MongoDB, Redis etc.) e o servidor Web Caddy.
- Conhecimento básico de comando de terminal.
Criando o Projeto PHPixie
Diretório recomendado para sites
O ServBay recomenda que você mantenha seus projetos locais na pasta /Applications/ServBay/www
para facilitar gestão e controle de permissões pelo ServBay.
- Verifique se o Composer está instalado: O ServBay já vem com o Composer pré-instalado, então não há necessidade de instalar extra. Abra o terminal e digite
composer --version
para confirmar. - Crie o diretório do projeto: No diretório raiz recomendado pelo ServBay, crie uma pasta para seu projeto PHPixie e acesse-a:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - Crie o projeto PHPixie com Composer: Execute o comando abaixo no diretório do projeto para baixar o template do PHPixie:bashO Composer fará o download dos arquivos do PHPixie e dependências para a pasta atual.
composer create-project phpixie/project .
1
Configurando o Servidor Web
Utilize a função Websites do ServBay para configurar o servidor web Caddy, apontando corretamente para seu projeto PHPixie.
Abra o ServBay.
Acesse a lista Websites.
Clique para adicionar um novo site.
Preencha os dados de configuração:
- Nome: Por exemplo,
Meu Primeiro Site PHPixie Dev
(apenas para identificação interna no ServBay). - Domínio: Por exemplo,
servbay-phpixie-test.local
(este será o domínio de desenvolvimento no navegador). - Tipo de site: Selecione
PHP
. - Versão do PHP: Escolha a versão desejada, como
8.3
. - Diretório raiz (Document Root): Aponte para a pasta
web
do projeto:/Applications/ServBay/www/servbay-phpixie-app/web
.
Por que o diretório
/web
?O arquivo de entrada do PHPixie está em
web/index.php
. Para segurança e boas práticas, o servidor web deve apontar diretamente para a pastaweb
, evitando acesso direto a arquivos sensíveis como configurações ou o diretório vendor.- Nome: Por exemplo,
Salve a configuração. O ServBay vai ajustar automaticamente o Caddy e atualizar o arquivo hosts local, fazendo o domínio
servbay-phpixie-test.local
apontar para seu servidor ServBay.
Para o passo a passo detalhado, consulte Adicionando o primeiro site.
Adicionando Código de Exemplo
Para testar o funcionamento e demonstrar integração com bancos e cache, vamos adicionar alguns códigos de exemplo ao projeto.
Crie o controlador de exemplo: Adicione o código abaixo em
src/App/HTTP/Controller/Home.php
. Crie pastas/arquivos manualmente se necessário.php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // Importar a classe Query class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // Action padrão para a página inicial public function action_index(Request $request) { // Renderiza o template assets/templates/app/home.php return $this->template->render('app:home'); } // Exemplo de ação Memcached public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Olá Memcached do ServBay!', 60); // Armazena dados, expira em 60 segundos $value = $cache->get('key'); // Busca dados return $this->response()->string($value); // Retorna resposta em string } // Exemplo de ação Redis public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Olá Redis do ServBay!'); // Armazena dados $value = $redis->get('key'); // Busca dados return $this->response()->string($value); // Retorna resposta em string } // Exemplo de adicionar usuário MySQL/PostgreSQL public function action_add_user(Request $request) { // Usa o componente de banco para obter builder de queries $query = $this->components->database()->query(); // Insere novo usuário na tabela 'users' $query->insert('users')->data([ 'name' => 'Usuário Demo do ServBay', 'email' => 'demo-' . uniqid() . '@servbay.test', // Usa e-mail único ])->execute(); // Executa inserção return $this->response()->string('Usuário adicionado com sucesso.'); // Retorna mensagem de sucesso } // Exemplo de listar usuários do banco MySQL/PostgreSQL public function action_list_users(Request $request) { // Usa o componente de banco para obter builder de queries $query = $this->components->database()->query(); // Busca todos os usuários da tabela 'users' $users = $query->select('*')->from('users')->execute()->fetchAll(); // Executa consulta e retorna resultado 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 o template de exemplo: Adicione o código abaixo em
assets/templates/app/home.php
. Crie pastas/arquivos manualmente 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>Bem-vindo ao PHPixie no 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>Bem-vindo ao PHPixie no ServBay</h1> <p>Esta página está sendo gerada dinamicamente pela sua aplicação PHPixie em execução no ServBay.</p> <h2>Links para funções 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ê completou as etapas de configuração do banco de dados e 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
Após configurar o site no ServBay e adicionar os exemplos, basta acessar no navegador o domínio configurado:
- Abra o navegador e acesse
https://servbay-phpixie-test.local
. - Você deverá visualizar a página "Bem-vindo ao PHPixie no ServBay" e os links para funções de exemplo.
Caso não consiga acessar, verifique:
- Se o ServBay está rodando.
- Se a configuração do site está correta, incluindo domínio, tipo de site e diretório raiz.
- Se o arquivo hosts local está resolvendo corretamente
servbay-phpixie-test.local
(o ServBay geralmente faz isso automaticamente). - Se a versão do PHP no ServBay está habilitada.
Exemplos de Integração com Banco de Dados e Cache
O PHPixie já suporta nativamente vários bancos de dados e sistemas de cache. O ServBay fornece pacotes de MySQL, PostgreSQL, Redis, Memcached, entre outros, que podem ser integrados ao PHPixie facilmente.
Atenção: Antes de utilizar o banco de dados, certifique-se de iniciar o serviço correspondente no ServBay (MySQL ou PostgreSQL) e criar o banco para o projeto, por exemplo, servbay_phpixie_app
. Você pode usar ferramentas como Sequel Ace, Postico, TablePlus ou o terminal para criar o banco. O usuário padrão do ServBay costuma ser root
e a senha password
(confirme nas configurações do ServBay).
Configurando a Conexão com o Banco
De acordo com o banco utilizado (MySQL ou PostgreSQL), edite o arquivo assets/config/database.php
na raiz do projeto. O endereço padrão do banco no ServBay costuma ser 127.0.0.1
.
Exemplo de configuração MySQL (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// A string de conexão deve ser ajustada conforme seu 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 conforme necessário)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Exemplo de configuração PostgreSQL (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// A string de conexão deve ser ajustada conforme seu 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 conforme necessário)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Criando Tabela no Banco (migrations)
O PHPixie oferece ferramentas de linha de comando para controlar versões e estrutura de banco com migrations.
- Abra o terminal: Navegue até a raiz do projeto PHPixie:bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - Crie o arquivo de migration: Gere um novo arquivo de migration usando a CLI do PHPixie. Vamos criar um migration para a tabela
users
:bashIsso criará um arquivo novo emphp pixie generate:migration create_users_table
1assets/migrations
com nome iniciando por timestamp. - Edite o migration gerado: Abra o arquivo novo em
assets/migrations
(por exemplo,YYYY_MM_DD_HHMMSS_create_users_table.php
) e edite os métodosup()
edown()
:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // Criação da tabela 'users' usando schema builder $this->schema->create('users', function(Table $table) { $table->increments('id'); // Chave primária auto-incremento $table->string('name'); // Coluna de nome $table->string('email')->unique(); // Email, valor único $table->timestamps(); // Colunas 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 migration: No terminal, na raiz do projeto, rode:bashSe tudo estiver certo, você verá a mensagem de sucesso. Pode confirmar a criação da tabela
php pixie migrate
1users
no bancoservbay_phpixie_app
usando seu gerenciador favorito.
Usando Banco de Dados Relacional (MySQL/PostgreSQL)
No controlador criado acima (src/App/HTTP/Controller/Home.php
), os métodos action_add_user
e action_list_users
exemplificam como usar o componente de banco do PHPixie para interagir com MySQL ou PostgreSQL.
- Adicionar usuário: Acesse
https://servbay-phpixie-test.local/home/add_user
para inserir um usuário na tabelausers
. - Listar usuários: Acesse
https://servbay-phpixie-test.local/home/list_users
para retornar todos os registros da tabelausers
em formato JSON.
Configurando e Usando Banco NoSQL (Memcached/Redis)
O ServBay já traz os pacotes e extensões do Memcached e do Redis instalados. Basta configurar no PHPixie para começar a utilizar.
Configuração Memcached (assets/config/cache.php
):
Crie ou edite o arquivo assets/config/cache.php
com a configuração abaixo:
php
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // Endereço padrão do Memcached no ServBay
'port' => 11211, // Porta padrão do Memcached no ServBay
'weight' => 100,
],
],
],
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Configuração Redis (assets/config/redis.php
):
Crie ou edite o arquivo assets/config/redis.php
com este conteúdo:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Endereço padrão do Redis no ServBay
'port' => 6379, // Porta padrão do Redis
'timeout' => 0,
'database' => 0, // Índice do banco Redis
],
];
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Utilizando Memcached/Redis:
No controlador de exemplo (src/App/HTTP/Controller/Home.php
), os métodos action_memcached
e action_redis
mostram como usar o componente de cache do PHPixie.
- Testar Memcached: Acesse
https://servbay-phpixie-test.local/home/memcached
para gravar/ver um valor no Memcached. - Testar Redis: Acesse
https://servbay-phpixie-test.local/home/redis
para gravar/ver um valor no Redis.
Garanta que os pacotes correspondentes estejam ativos no ServBay.
Conclusão
Seguindo esses passos, você já consegue criar, configurar e rodar um projeto PHPixie localmente no macOS usando o ServBay. Aprendeu como gerar o projeto com Composer, configurar o servidor web pelo ServBay, integrar banco de dados e cache, além de testar todas essas funções.
O ambiente integrado que o ServBay oferece simplifica bastante o setup do desenvolvimento em PHP, permitindo que você foque no seu código. Esperamos que este guia ajude você a começar rapidamente a construir seu próximo projeto web com PHPixie!