viniciuscoutinh0/minimal-starter

Installs: 4

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Language:Hack

Type:project

0.2 2025-06-26 18:50 UTC

This package is auto-updated.

Last update: 2025-06-26 18:50:52 UTC


README

Minimal

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');