twodudes / simpleorm
简单的PHP ORM。
dev-master
2017-01-24 11:27 UTC
Requires
- php: >=5.3.3
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能为您服务。