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_field
是 differential:bugzilla-bug-id
,定义在我的 DifferentialCommitMessageCustomField
延期。 如果您要添加一个 CustomField
任何类型的任何 Phabication 应用程序,您都可以使用相同的方法。
当缺乏文档并且继承级别有十几个级别时,社区成员可以互相帮助是很棒的——这对项目来说很重要。