开放的编程资料库

当前位置:我爱分享网 > PHP教程 > 正文

检索 Phabricator 对象的自定义字段值

Phabricator 是一个编码非常完善的 PHP 应用程序,但在文档方面有所欠缺。话又说回来,什么开源项目不是?在过去的几个月里,我一直在慢慢地将一种新的审查工具 Phabricator 与一种更老的工具 Bugzilla 集成在一起。在最近的步骤中,我需要向修订添加自定义字段(DifferentialCommitMessageCustomField 类扩展):

创建 DifferentialCommitMessageCustomField 扩展非常简单,但由于 DifferentialRevision 和其他 Phabricator 类的结构,检索该字段值并不像人们希望的那么容易.在尝试了多种方法并梳理了类链源代码之后,Aviv Eyal 提供了一个很好的实用函数来检索给定 Phabricator 对象类型的自定义字段数据:

function get_custom_field_value($object, $key_field) {
  $field = PhabricatorCustomField::getObjectField(
    $object,
    PhabricatorCustomField::ROLE_DEFAULT,
    $key_field
  );

  id(new PhabricatorCustomFieldStorageQuery())
  ->addField($field)
  ->execute();

  $value = $field->getValueForStorage();

  return $value;
}

在我的例子中,$object 是一个 DifferentialRevision$key_fielddifferential:bugzilla-bug-id,在我的 DifferentialCommitMessageCustomField 扩展中定义。如果您要将任何类型的 CustomField 添加到任何 Phabrication 应用程序,您可以使用相同的方法。

当缺少文档且继承级别深达十几级时,社区成员可以互相帮助是件好事——这对项目来说意义重大。

未经允许不得转载:我爱分享网 » 检索 Phabricator 对象的自定义字段值

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏