flexpress / component-orm
该软件包最新版本(v1.0.2)没有提供许可信息。
WordPress ORM 系统
v1.0.2
2014-09-03 16:29 UTC
This package is not auto-updated.
Last update: 2024-09-24 02:52:34 UTC
README
使用 Pimple 安装
- 此示例创建了一个文档模型,请注意我们传递了全局帖子对象,ORM 系统将复制帖子对象的所有属性,包括 ID,这非常重要。
-
- 请注意,此示例作为一个服务执行,并且对于每次调用都会返回相同的对象,如果您想每次都创建一个新的对象,请在 Pimple 中使用工厂方法。
$pimple["documentModel"] = function () {
return new DocumentModel($GLOBALS['post']);
};
创建一个具体类
- 您必须扩展 AbstractORM 类,该类没有抽象方法需要实现,因此请放心,您不会收到提示。
- ORM 系统的工作方式是属性上的文档注释,例如在这个非常简单的类中
class DocumentModel extends AbstractORM {
/**
* @type acf
*/
protected $type;
}
- 属性必须是私有的,因为 ORM 系统要求您使用通过魔术方法实现的 getters 和 setters 来访问属性。系统还使用延迟加载,因此它只会
- 系统还使用智能更改,因此它只会更新您更改的值。
- 通过将其定义为 acf,ORM 系统将尝试使用 get_field 函数加载值,通常您想在数据库中为属性添加前缀,ORM 系统允许您这样做,有一个属性名为 $prefixes,默认为 fp_,但您可以像这样更改这些
public __construct($post = false) {
parent::__construct($post);
$this->prefixes['acf'] = 'document_'
}
这会让 ORM 系统知道当您加载 $type 的值时,您希望它使用 document_type 的 field_key 通过 get_field 来加载。
属性类型
目前属性可以是以下三种类型之一
- acf(高级自定义字段)
- meta(帖子元数据)
- tax(分类法)
如上图所示,您在属性的文档注释中设置这些,以下是不同类型的示例
/**
* @type acf
*/
protected $type;
/**
* @type meta
*/
protected $lastUpdated;
/**
* @type tax
*/
protected $category;
您会注意到 lastUpdated 属性是大驼峰式命名的,ORM 系统会为您转换它,如果我们设置 prefixes['meta'] = "document_";,那么我们会得到 document_last_updated。
访问数据
如前所述,ORM 系统使用 PHP 魔术方法为您创建与属性交互的方法。有三个方法
- set($value) - 将属性设置为提供的值。
- the() - 这将属性作为字符串输出。
- get() - 这将属性作为字符串返回。
- theFormatted($arg) - 目前仅适用于日期,格式化给定格式的日期并输出返回值。
- getFormatted($arg) - 目前仅适用于日期,格式化给定格式的日期并返回结果。
基本用法
要输出 lastUpdated 属性,您可以调用它如下
$document->theLastUpdated();
然后要设置该属性,您可以这样操作
$document->setLastUpdated("20140808");
然后如果您想获取该属性,请使用 get 而不是 the
$lastUpdated = $document->getLastUpdated();
特殊功能
当使用 the() 方法与分类法时,它返回第一个名称,例如
$document->theCategory();
将返回第一个术语的名称,但如果您想返回所有术语作为对象,则可以在其中传递 true
$categories = $document->theCategory(true);
保存数据
要保存更改,只需在模型上调用 ->persist(),例如在上述示例之后
$document = $pimple["documentModel"];
$document->setLastUpdated("20140808");
$document->persist();
公共方法
- getFeaturedImage($image_size, $attrs = array()) - 根据指定的图像尺寸和数组获取特色图像
- theFeaturedImage($image_size, $attrs = array()) - 输出指定图像尺寸和数组的特色图像
- getOriginalPostObject() - 返回传递给模型的原始帖子对象
- instanceByID($id) - 静态方法,用于获取给定帖子ID的模型实例
- delete($force_delete = true) - 使用wp_delete_post删除模型/帖子
- persist() - 保存模型
受保护的方法
- loadPropertyValue($propertyName, $type, $overrideKey = false) - 用于加载属性值
- getDocblockAttrs($attr) - 用于获取文档块属性
- getUnderscoredEquivalent($value) - 获取驼峰命名值下划线等效值