Inspirado no artigo sobre Hyperf do grade Leonardo do Carmo (e também na dica dele sobre a hashnode hehe) resolvi passar por aqui e escrever sobre o Nano, o micro-framework pra Swoole da galera do Hyperf.
Pra quem gosta de analogias, assim como temos o Laravel e o Lumen, temos o Hyperf e o Nano. Ou mais ou menos isso:
É uma analogia bem simplória, porque na verdade o Nano é como se fosse um Hyperf completo, diferente do que a gente vê entre Laravel-Lumen, a única feature que você fica sem são as Annotations.
Qual é a vantagem então se ele é um Hyperf sem uma das features? - Você deve estar se perguntando.
- Zero-configurações
- Sem estruturas pré-definidas
- Uma distribuição mínima do Hyperf
- Um único arquivo PHP e você já está rodando
Pessoalmente sou um fã de carteirinha dessa simplicidade, não a toa fiz a Siler, a Nano consegue trazer toda essa simplicidade mantendo compatibilidade com todos* (só não o de Annotations) os pacotes disponíveis pro Hyperf e ter Corrotinas como first-class citizens.
Confesso que se tivesse conhecido a dupla Hyperf-Nano antes, talvez não tivesse criado a Siler 🤭
Beleza, parece bem legal, mas talk is shit, show me the code.
Como dito anteriormente, a Nano não vai te chatear com estruturas de diretórios, então você pode começar literalmente com um diretório vazio:
mkdir hello-nano
cd hello-nano
Agora trazer a Nano é tão simples quanto qualquer outro pacote do PHP. Se você programa em PHP e ainda não conhece o Composer, volte duas casas.
composer require hyperf/nano
Agora tudo o que você precisa é de apenas um arquivo PHP, como se fosse um PHP de rua, mas com todo tipo de componente para aplicações de alto-nível disponíveis a um composer install
e tudo isso rodando nas Corrotinas da Swoole.
<?php
// index.php
use Hyperf\Nano\Factory\AppFactory;
require_once __DIR__ . '/vendor/autoload.php';
$app = AppFactory::create();
$app->get('/', function () {
$user = $this->request->input('user', 'nano');
$method = $this->request->getMethod();
return [
'message' => "hello {$user}",
'method' => $method,
];
});
$app->run();
Pra começar a brincadeira é só rodar:
php index.php start
E voilà!
A porta padrão é a 9501
, então é só acessar localhost:9501. Pra mudar o host e a porta é no próprio método AppFactory::create()
:
AppFactory::create('127.0.0.1', 8080);
Agora é só deixar a imaginação tomar conta e você ainda vai ter todo o suporte de containers de injeção de dependência, orms para acessar banco de dados, sistema para disparo de eventos e por aí vai!
Não esquece de acessar o site nano.hyperf.wiki/#/en e começar a explorar todas as possibilidades.
Grande abraço!