minond/model

对象模型

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

This package is not auto-updated.

Last update: 2024-09-23 14:07:54 UTC


README

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

易于创建和使用。轻量级但易于扩展的模型。

使用魔法调用方法模拟获取器和设置器

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';

获取器和设置器方法都可以被覆盖

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;
    // ...
}

当前存储特性包括

  • Efficio\Dataset\Storage\Model\DatabaseStorage - 使用 PDO 存储到数据库。
  • Efficio\Dataset\Storage\Model\FileStorage - 存储到平面文件。
  • Efficio\Dataset\Storage\Model\NullStorage - 无存储。
  • Efficio\Dataset\Storage\Model\SessionStorage - 存储在 $_SESSION 数组中

由于存储信息在模型级别定义,因此可以使用任何自定义存储。

配置存储方法

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