minond/model

Object models

v1.2.0 2014-03-28 01:45 UTC

This package is not auto-updated.

Last update: 2024-04-22 12:10:35 UTC


README

Build Status Coverage Status Latest Stable Version Dependencies Status Scrutinizer Quality Score SensioLabsInsight

Models that are simple to create and use. Light weight but easily extensible.

Getters and setters will be simulated using the magic call method:

use Efficio\Dataset\Model;

class User extends Model
{
    protected $first_name;
    protected $last_name;
    protected $full_name;
}
$me = new User;

// methods
$me->setFirstName('Marcos');
$me->setLastName('Minond');

// or properties
$me->first_name = 'Marcos';
$me->last_name = 'Marcos';

Both getter and setter methods may be overwritten:

use Efficio\Dataset\Model;

class User extends Model
{
    protected $first_name;
    protected $last_name;
    protected $full_name;

    public function getFullName()
    {
        return implode(' ', [ $this->first_name, $this->last_name ]);
    }
}
$me = new User;
$me->first_name = 'Marcos';
$me->last_name = 'Marcos';

echo $me->full_name; // outputs 'Marcos Minond'

Traits are used to specify how models are stored:

use Efficio\Dataset\Model;
use Efficio\Dataset\Storage\Model\DatabaseStorage;

class User extends Model
{
    use DatabaseStorage;

    protected $first_name;
    // ...
}

Current storage traits are:

  • Efficio\Dataset\Storage\Model\DatabaseStorage - store in a database using PDO.
  • Efficio\Dataset\Storage\Model\FileStorage - store in flat files.
  • Efficio\Dataset\Storage\Model\NullStorage - no storage.
  • Efficio\Dataset\Storage\Model\SessionStorage - stored in the $_SESSION array

Since storage information is defined in the model level any sort of custom storage may be used.

Configuring storage methods

DatabaseStorage
// User uses DatabaseStorage trait
User::setConnection(new PDO('sqlite::memory:'));
FileStorage
// User uses FileStorage trait
User::setDirectory('./cache/models/');