Bem-vindo à documentação oficial do Slendie. Aqui você aprenderá como instalar, configurar e desenvolver aplicações modernas com nosso framework.
Comece criando um novo projeto via Composer. O Slendie configura automaticamente toda a estrutura necessária.
composer create-project slendie/slendie meu-projeto cd meu-projeto
Em seguida, configure seu ambiente e instale as dependências:
cp .env.example .env
php scripts/migrate.php
npm install && npm run dev
O Slendie segue o padrão de arquitetura Model-View-Controller (MVC), separando a lógica da aplicação em três camadas interconectadas.
Gerencia os dados e regras de negócio. Interage diretamente com o banco de dados.
A camada de apresentação. É o que o usuário vê (HTML renderizado pelo Blade).
Recebe as requisições, processa dados usando Models e retorna Views.
As rotas definem como sua aplicação responde às requisições HTTP, mapeando URLs para métodos em seus Controllers.
As rotas são configuradas no arquivo config/routes.php. Cada rota é um array contendo método, caminho e handler.
return [
[
'method' => 'GET',
'path' => '/produtos',
'handler' => 'App\Controllers\ProductController@index',
'middlewares' => []
],
[
'method' => 'POST',
'path' => '/produtos',
'handler' => 'App\Controllers\ProductController@store',
'middlewares' => ['auth']
]
];
Os controllers agrupam a lógica de requisição relacionada. Eles devem estender a classe base Slendie\Controllers\Controller.
namespace App\Controllers;
use Slendie\Controllers\Controller;
class ProductController extends Controller
{
public function index()
{
// Acessa dados da requisição
$params = $this->request()->getParams();
// Renderiza uma view
return $this->render('products.index', [
'products' => ['Notebook', 'Mouse']
]);
}
public function store()
{
// Redireciona para outra URL
return $this->redirect('/produtos');
}
}
$this->render($view, $data)
Renderiza uma view Blade. Injeta automaticamente erros de formulário e mensagens de sucesso.
$this->redirect($url)
Realiza um redirecionamento HTTP.
$this->request()
Retorna a instância da requisição atual para acesso a parâmetros e inputs.
O Slendie possui um motor de template próprio, inspirado no Blade do Laravel, mas leve e eficiente. As views ficam em views/ e devem ter a extensão .blade.php.
use Slendie\Framework\Blade;
public function index() {
$blade = new Blade();
// Renderiza views/home.blade.php passando dados
echo $blade->render('home', ['title' => 'Bem-vindo']);
}
Imprime o valor sem escapar (raw output). Use para HTML confiável.
Imprime o valor escapado (safe output). Converte caracteres especiais em entidades HTML.
Suporte completo para condicionais e loops:
<div></div>
@endforeach
@else
<p>Nenhum usuário encontrado.</p>
@endif
Crie layouts reutilizáveis com @extends, @section e @yield.
<html>
<head>
</head>
<body>
</body>
</html>
<h1>Página Inicial</h1>
Inclui outra view. Suporta notação com ponto.
Integração com Vite. Gera tags de script e link CSS.
Gera um campo input hidden com o token CSRF para formulários.
...
Verifica erros de validação. Disponibiliza a variável $message.
Os Models representam tabelas no seu banco de dados e facilitam a manipulação de registros. Eles devem estender a classe base Slendie\Models\Model.
namespace App\Models;
use Slendie\Models\Model;
class User extends Model
{
// Define a tabela associada ao model
protected static string $table = 'users';
}
Métodos estáticos para criar, ler, atualizar e deletar registros:
// Criar
$id = User::create([
'name' => 'John Doe',
'email' => 'john@example.com'
]);
// Ler
$user = User::find(1); // Retorna array ou null
$allUsers = User::all(); // Retorna array de arrays
// Atualizar
User::update(1, ['name' => 'John Updated']);
// Deletar
User::delete(1);
Para consultas mais complexas, utilize os métodos de construção de query. Eles retornam uma instância fluente que deve ser finalizada com execute() ou first().
// Filtrar e Ordernar
$users = User::where('active', 1)
->orderBy('created_at', 'DESC')
->limit(10)
->execute(); // Retorna array
// Buscar um único registro com condição
$user = User::where('email', 'john@example.com')->first();
// Condições complexas
$users = User::where('role', 'admin')
->orWhere('role', 'editor')
->execute();
where($col, $op, $val)
Adiciona cláusula WHERE. O operador é opcional (padrão '=').
orWhere($col, $op, $val)
Adiciona cláusula OR WHERE.
orderBy($col, $dir)
Ordena os resultados (ASC ou DESC).
limit($int)
Limita o número de registros retornados.
groupBy($col)
Agrupa resultados por uma coluna.
execute()
Executa a query e retorna todos os resultados.
first()
Executa a query e retorna apenas o primeiro resultado.
Registro de todas as mudanças, melhorias e correções em cada versão do Slendie.
Legenda: + Nova funcionalidade ~ Melhoria - Remoção ! Correção