Model

Model

Models no Blumiga são funções em namespace, não classes. Cada arquivo em app/models/ contém funções que operam sobre uma entidade.

Resolução

O helper model('nome') localiza o arquivo e retorna o namespace:

// app/models/exemploModel.php
namespace Blumiga\models\exemploModel;

function getData(): array {
    return ['item 1', 'item 2', 'item 3'];
}

// No controller
$ns = model('exemplo');
// $ns = '\Blumiga\models\exemploModel\'

$dados = ($ns . 'getData')();
// Executa: \Blumiga\models\exemploModel\getData()

Regras de Resolução

A função model('nome') segue esta ordem:

  1. Procura app/models/{nome}Model.php (raiz)
  2. Se não encontrar, procura app/models/{nome}/{nome}Model.php (subpasta)
  3. O sufixo Model é adicionado automaticamente
  4. Retorna o namespace \Blumiga\models\{nomeModel}\

Exemplo com Banco

// app/models/usuarioModel.php
namespace Blumiga\models\usuarioModel;

use Blumiga\database\Select;

function getAll(): array {
    $db = new Select();
    $data = $db->table('usuarios')->fetchAll();
    $db->close();
    return $data ?: [];
}

// No controller
$ns = model('usuario');
$usuarios = ($ns . 'getAll')();

Subpastas

// app/models/admin/usuarioModel.php
namespace Blumiga\models\admin\usuarioModel;

// Resolução mantém o namespace da subpasta
$ns = model('admin/usuario');
// $ns = '\Blumiga\models\admin\usuarioModel\'