twodudes/simpleorm

简单的PHP ORM。

安装: 5

依赖项: 0

建议者: 0

安全性: 0

星星: 0

关注者: 3

分支: 0

开放问题: 0

类型:php-library

dev-master 2017-01-24 11:27 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:42:01 UTC


README

基于PDO的超级简单的ORM。基于数据映射模式。

安装

使用composer安装

composer require twodudes/simpleorm

快速入门

模型
use Simpleorm\Mapper\Pdo\PdoMapper;

/**
 * @property int    $id
 * @property string $name {"default": "John"}
 *
 * @method static PdoMapper getMapper() {"table": "test"}
 */
class User extends AbstractModel
{
    
}

字段定义为文档属性,因为这样

  • 方便
  • 方便IDE识别
  • 没有不必要的样板代码,无需getter和setter
映射器

映射器再次在文档注释部分定义。在这里我们指定,我们的用户将由PdoMysqlMapper处理

@method static PdoMapper getMapper() {"table": "test"}

要获取映射器,只需使用

User::getMapper();

我们使用混合的Active Record和数据映射方法来管理您的实体,因此您可以这样使用它

$user = User::getMapper()->fetch(1);
$user->name = 'NewName';
$user->save();

如果您需要自定义逻辑和方法,只需扩展所需的映射器即可

class UserMapper extends PdoMysqlMapper 
{
    public function fetchComplicatedReport($someParams)
    {
        $stmt = $this->getConnection()->prepare('...');
        $stmt->execute();
        
        return $stmt->fetchAll();
    }
}

在模型中使用此映射器

/**
 * @property int    $id
 *
 * @method static UserMapper getMapper() {"table": "test"}
 */
class User extends AbstractModel
{
}

并在您的服务/控制器中

$report = User::getMapper()->fetchComplicatedReport();
集合

默认情况下,fetchAll映射器方法将返回一个集合。它比纯数组更方便使用,并且有很多有用的方法。

$users = User::getMapper()->fetchAll(['country' => 'Cyprus']);

更多详细信息,请查看代码

还有其他什么?
编写自己的映射器

您可以为任何存储编写自己的映射器。只需实现MapperInterface

MysqlPdo映射器连接设置
PdoMysqlMapper::setConnectionConfig(array(
    'user' => 'user',
    'password' => 'password',
    'host' => '127.0.0.1',
    'port' => '3306',
    'db'   => 'simpleorm_test'
));
getter和setter

如果您需要setter和getter - 您可以显式定义它们,它们将在magic __get __set之前使用。

映射器装饰器

您可以为映射器添加装饰器,例如用于缓存

模型状态

模型可以是干净的(从存储中获取时未更改)和脏的(有更改)。您始终可以访问模型的cleanData和数据,以查看已更改的内容。

结束语

如您所见,它非常简单,但非常有效。如果您需要ORM,但不想与像Doctrine这样的巨头打交道,我希望Simpleorm能为您服务。