Models that are simple to create and use. Light weight but easily extensible.
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'
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.
// User uses DatabaseStorage trait
User::setConnection(new PDO('sqlite::memory:'));
// User uses FileStorage trait
User::setDirectory('./cache/models/');