Expressive é uma biblioteca para mapeamento objeto relacional construída sobre o illuminate/database, com definições de objetos baseada em arquivos de schema.
Esse pacote foi estruturado para ser instalado por meio do composer.
composer require solis/expressive
Defina a estrutura de um objeto de acordo com as especificações do phpschema.
{
"database": {
"repository": "pessoa",
"keys": "ID"
},
"properties": [
{
"alias": "proID",
"property": "ID",
"type": "int",
"behavior": {
"required": "false",
"autoIncrement": "true"
}
},
{
"alias": "proNome",
"property": "nome",
"type": "string"
},
{
"alias": "proInscricaoFederal",
"property": "inscricaoFederal",
"type": "string"
},
{
"alias": "proTipo",
"property": "tipo",
"type": "int"
},
{
"alias": "proSituacao",
"property": "situacao",
"type": "int",
"behavior": {
"required":"false"
}
}
]
}
Uma Classe que utiliza a funcionalidade ORM fornecida pela biblioteca deve extender a class abstrata Expressive e ter em si declaradas as propriedades especificadas no schema json.
use Solis\Expressive\Classes\Illuminate\Expressive;
use Solis\Expressive\Magic\Concerns\HasMagic;
class Pessoa extends Expressive
{
use HasMagic;
protected $ID;
protected $nome;
protected $inscricaoFederal;
protected $tipo;
protected $situacao;
/**
* Pessoa constructor.
*/
public function __construct()
{
parent::__construct();
$this->start(dirname(__FILE__) . '/Pessoa.json');
}
}
O método start é responsável por construir um objeto Schema a partir do caminho fornecido e atribuir a respectiva classe.
Uma classe extendo Expressive deve utilizar a trait HasMagic de modo ater acesso a funcionalidade de atribuição dinâmica por meio do método make.
$Pessoa = Pessoa::make([
"proNome" => 'Fulano - ' . uniqid(rand()),
"proInscricaoFederal" => '' . rand(11111111111111, 99999999999999) . '',
"proTipo" => 1
]);
O método make retorna uma instância de ExpressiveAbstract com acesso as operações de persistência disponibilizadas pela biblioteca.
Relação de operações de persistência que podem ser utilizadas por uma instância de ExpressiveAbstract
Retorna um valor inteiro representando a contagem de registros na persistência.
$count = (new Pessoa()) ->count()
//$count = Pessoa::make([])->last($arguments = []);
Cria um novo registro na persistência de acordo com os valores fornecidos para construção do objeto por meio do make.
Pessoa::make([
"proNome" => 'Fulano - ' . uniqid(rand()),
"proInscricaoFederal" => '' . rand(11111111111111, 99999999999999) . '',
"proTipo" => 1
])->create();
Deleta um registro na persistência de acordo com as informações atribuidas ao active record.
Pessoa::make([
'proID' => 1
])->search()->delete();
Retorna o último registro na persistencia de acordo com as informações atribuidas ao active record.
(new Pessoa())->last()
//Pessoa::make([])->last();
Replica um registro existente na persistência de acordo com as informações atribuidas ao active record.
$instance = Pessoa::make([
'proID' => 1,
])->last();
$instance->replicate();
Retorna um registro existente na persistência de acordo com as informações atribuidas ao active record.
$instance = Pessoa::make([
'proID' => 1
])->search();
Retorna uma relação de registros existentes na persistência de acordo a relação de argumentos e opções fornecidas.
$result = (new Pessoa())->select();
//$result = Pessoa::make([])->select($arguments = [], $options = []);
Atualiza um registro existente na persistência de acordo com as informações atribuidas ao active record.
$instance = Pessoa::make(
[
'proID' => 1,
]
)->search();
$instance->proNome = 'UPDATE TEST [ ' . Date('Y-m-d H:m:s') . ']';
$instance->update();
Acompanhe o CHANGELOG para informações sobre atualizações recentes.
$ composer test
The MIT License (MIT). Verifique LICENSE para mais informações.