wscore / datamapper
数据映射器。
Requires
- wscore/dbaccess: dev-master
- wscore/dicontainer: dev-master
- wscore/html: dev-master
- wscore/validation: dev-master
This package is auto-updated.
Last update: 2024-08-28 16:42:09 UTC
README
一个简单的数据映射组件。
实体
实体是一个类,大致代表数据库表的记录。
该类不是纯的;需要扩展EntityAbstract并设置modelName才能在此组件中使用。例如
namespace Tasks\Entity; class Task extends EntityAbstract { const STATUS_ACTIVE = '1'; const STATUS_DONE = '9'; public static $_modelName = '\App\Tasks\Model\Tasks'; public $task_id = null; public $memo = ''; public $status = self::STATUS_ACTIVE; }
属性应该定义为public,以便PDO填充值。
公共静态变量$_modelName应引用处理此实体的模型类。
模型
模型类(们)决定实体对象如何
- 保存到数据库中,
- 在html表单中表示,
- 验证其值。
模型由几个类组成
- WScore\DataMapper\Model是所有其他模型的master控制器模型。
- WScore\DataMapper\Model\Persistence管理如何访问数据库层。
- WScore\DataMapper\Model\Presentation管理html表单表示以及验证。
- WScore\DataMapper\Model\Property是一个隐藏对象,用于控制持久化和表示模型中每个属性的属性。
class Tasks extends Model { /** @var string name of database table */ protected $table = 'task'; /** @var string name of primary key */ protected $id_name = 'task_id'; public function __construct() { parent::__construct(); $csv = file_get_contents( __DIR__ . '/tasks.csv' ); $this->property->prepare( $csv ); } }
所有模型都是PHP代码。
可以重写/篡改/重写任何模型以适应需求。
实体属性的属性由CSV定义。
待办事项:表示模型简单地返回有关html表单和验证的信息。也许模型应该负责构建表单并执行验证。
角色
为实体提供使用特定方法(称为交互)的简单包装。
以下示例展示了如何将post数据加载到实体中,验证值并将其保存到数据库中。
$task = $this->em->fetch( 'Tasks\Entity\Task' ); $role = $this->role->applyDataIO( $task ); $role->load( $_POST ); if( $role->validate() ) { $active = $this->role->applyActive( $role ); $active->save(); }
关系
定义实体如何与其他实体相关。
可用的关系有:HasOne、Joined和JoinBy。
某些关系,如isJoined,需要定义模型。
属性注解
在PHP或CSV中写下以下注解。
-
列
数据库列名。
-
标题
列的可读名称。
-
类型
列的类型;字符串、数字、char(即仅ascii代码)、datetime、date、time、created_at(即datetime)、updated_at(即datetime)等。
-
dbDef
数据库定义。实际上没有使用。
-
notNull
是否为null。实际上没有使用。
-
默认
指定用于验证的默认值。也许用于表示html作为默认值。
-
required
用于验证。在表示html表单时将用于标记为必需。
-
protected
表示该列不会进行批量分配。
-
presentedAs
覆盖表示html的类型。指定如textarea、radio、check等类型。
-
样式
表单/标签样式。
-
validateAs
覆盖验证规则类型的覆盖。指定如tel、mail等类型。
-
模式
正则表达式