PHP Classes

PHP Expressive: Base class for Object Relational Mapping

Recommend this page to a friend!
  Info   Documentation   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not yet rated by the usersTotal: 85 All time: 10,040 This week: 455Up
Version License PHP version Categories
php-expressive 1.2.8The PHP License7Databases, Design Patterns, PHP 7
Description 

Author

This package provides a base class for Object Relational Mapping.

The base class provide basic ORM operations and should be extended by actual entity classes that define the properties to be saved to a database.

The package also provides a trait to map magic methods to access property values.

Picture of Rafael Becker
Name: Rafael Becker <contact>
Classes: 1 package by
Country: Brazil Brazil

 

Documentation

Expressive

Codacy Badge Codacy Badge Latest Stable Version License Build Status

Expressive é uma biblioteca para mapeamento objeto relacional construída sobre o illuminate/database, com definições de objetos baseada em arquivos de schema.

Install

Esse pacote foi estruturado para ser instalado por meio do composer.

composer require solis/expressive

Usage

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.

Operations

Relação de operações de persistência que podem ser utilizadas por uma instância de ExpressiveAbstract

Count

Retorna um valor inteiro representando a contagem de registros na persistência.

$count = (new Pessoa()) ->count()

//$count = Pessoa::make([])->last($arguments = []);

Create

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

Delete

Deleta um registro na persistência de acordo com as informações atribuidas ao active record.

Pessoa::make([
        'proID' => 1
])->search()->delete();

Last

Retorna o último registro na persistencia de acordo com as informações atribuidas ao active record.

(new Pessoa())->last()

//Pessoa::make([])->last();

Replicate

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

Search

Retorna um registro existente na persistência de acordo com as informações atribuidas ao active record.

$instance = Pessoa::make([
    'proID' => 1
])->search();

Select

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 = []);

Update

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

Change log

Acompanhe o CHANGELOG para informações sobre atualizações recentes.

Testing

$ composer test

License

The MIT License (MIT). Verifique LICENSE para mais informações.


  Files folder image Files (44)  
File Role Description
Files folder imagesrc (1 file, 3 directories)
Files folder imagetests (2 directories)
Accessible without login Plain text file .travis.yml Data Auxiliary data
Accessible without login Plain text file CHANGELOG.md Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file LICENSE.md Lic. License text
Accessible without login Plain text file phpunit.xml Data Auxiliary data
Accessible without login Plain text file README.MD Doc. Documentation

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:85
This week:0
All time:10,040
This week:455Up