viniciuscoutinh0 / minimal-starter
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Language:Hack
Type:project
Requires
- php: ^8.3
- viniciuscoutinh0/minimal-core: 0.2
Requires (Dev)
- pestphp/pest: ^1.23
README
Minimal
Minimal é um framework simples e leve para páginas únicas, ideal para projetos pequenos, dashboards e ferramentas SPA.
Funcionalidades
- View engine própria
- ORM com sintaxe inspirada no Laravel
- Integração com Vite e hot reload
- Suporte a testes com Pest
- TailwindCSS e Alpine.js pré-configurados
Instalação
Para instalar, utilize o comando:
composer create-project viniciuscoutinh0/minimal-starter
Após a instalação, copie o arquivo .env.example
para .env
:
cp .env.example .env
Registrando views
Você pode registrar e renderizar views de forma simples. O caminho padrão onde os arquivos são armazenados é:
resources/views
No arquivo app.php
:
$app->view('path/to/view')->name('name');
Renderizando views
No index.php
, você pode renderizar suas views da seguinte forma:
<?php View::render('welcome'); ?>
Passando dados para views
Existem duas formas de passar dados para as views:
Via array diretamente no método:
$app->view('path/to/view', ['foo' => 'bar'])->name('name');
Ou utilizando o método with
:
$app->view('path/to/view')->with('foo', 'bar')->name('name');
Passando dados globais
Você pode passar dados de forma global para todas as views utilizando o método share
:
View::share('foo', 'bar');
Por padrão, uma variável com a instância de
$app
já está disponível em todas as views.
Utilizando dados na view
As variáveis passadas para a view ficam disponíveis diretamente no arquivo de template. Por exemplo:
<?= $foo; ?>
Exibe "bar"
ORM
Para utilizar o ORM, descomente a linha 11 no app.php
e configure o .env
com as credenciais do banco. Atualmente, o Minimal possui suporte apenas para MS SQL Server.
Exemplo de configuração:
<?php declare(strict_types=1); require __DIR__.'/../vendor/autoload.php'; use Viniciuscoutinh0\Minimal\Application; $app = Application::make(dirname(__DIR__, 1)); $app->registerProvider(new Viniciuscoutinh0\Minimal\Providers\DatabaseProvider); $app->boot(); $app->view('welcome')->name('welcome');
Crie um modelo em app/Models
:
<?php namespace App\Models; use Viniciuscoutinh0\Minimal\Database\Model; final class User extends Model { // Nome da tabela protected string $table = 'users'; // Chave primária da tabela protected string $primaryKey = 'id'; }
Consultas
User::newQuery()->first(); // Retorna o primeiro resultado User::newQuery()->find(1); // Retorna o resultado com ID 1 User::newQuery()->get(); // Retorna um array de resultados
Filtros
User::newQuery()->where('id', 2)->first(); User::newQuery()->where('id', 2)->orWhere('id', 3)->first();
Operadores
Você pode alterar o operador nas cláusulas where
, utilizando o OperatorEnum
.
Exemplo:
use Viniciuscoutinh0\Minimal\Database\Grammar\Enums\OperatorEnum; User::newQuery()->where('foo', '%bar%', OperatorEnum::Like)->get();
Operadores disponíveis:
enum OperatorEnum: string { case Equal = '='; case NotEqual = '<>'; case GreaterThan = '>'; case LessThan = '<'; case GreaterThanOrEqual = '>='; case LessThanOrEqual = '<='; case Like = 'like'; case NotLike = 'not like'; }
Esses operadores permitem construir consultas mais precisas ao banco de dados, mantendo a clareza e segurança do código.
Selecionando colunas específicas
User::newQuery()->select('name')->where('id', 2)->first(); // Alternativas User::newQuery()->first('name'); // SELECT name FROM users User::newQuery()->find(1, columns: 'name'); User::newQuery()->get('name');
Utilizando distinct
User::newQuery()->distinct()->select('id')->get();
QueryString
Você pode obter dados da query string através da instância do $app
:
// Exemplo de URL: ?foo=bar $app->query()->get('foo'); // Retorna: bar
Caso o valor não seja encontrado, o retorno padrão será
null
.
Você pode definir um valor padrão como segundo argumento:
$app->query()->get('foo', 'valor-padrao');