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) - 获取驼峰命名值下划线等效值