【发布时间】:2012-09-08 06:34:45
【问题描述】:
我试图弄清楚是否可以使用 PHPdoc 来定义由函数或对象方法返回的对象属性。
假设我有以下课程:
class SomeClass {
public function staffDetails($id){
$object = new stdClass();
$object->type = "person";
$object->name = "dave";
$object->age = "46";
return $object;
}
}
现在,定义输入参数很容易。
/**
* Get Staff Member Details
*
* @param string $id staff id number
*
* @return object
*/
class SomeClass {
public function staffDetails($id){
$object = new stdClass();
$object->type = "person";
$object->name = "dave";
$object->age = "46";
return $object;
}
}
问题是定义相关方法返回的输出对象(stdClass)的属性是否有类似的东西。这样其他程序员就不必打开这个类并手动查看方法来查看返回对象返回的内容是什么?
【问题讨论】:
-
你为什么不拥有一个带有 type、name 和 age 属性的 StaffDetails 类呢?然后你可以使用@param StaffDetails
-
如果您不想为 stdClass 创建具体类型,您仍然可以编写
@return \stdClass holding type, name and age或在 Doc Block 的详细说明中进行解释。至少它当时被记录在案。不过,这不会让您的 IDE 神奇地知道属性。 -
否 - 我不希望 IDE 知道属性。我只是希望他们有很好的记录。我实际使用的对象中有大约 40 个变量,所以我真的很想知道这是否是一种在表格中很好地布置它们的方法,就像输入参数出现一样。否则,如果只是使用冗长的描述,它会变得混乱且难以阅读。
-
@l_t 好吧,您总是可以在 DocBlock 的长描述中记录它们。但是一个有 40 个变量的对象对于一个知道太多的对象来说是一个很好的指标。您可以将该对象拆分为 4 到 10 个单独的对象。寻找可以分组的属性。将它们提取到自己的类中。然后将主类与该类关联,这样您最终会得到一个很好的专用对象图。
-
@Gordon 谢谢- 有问题的方法是许多不同类的分组。我这样做是为了让前端开发人员只需调用一个类方法并返回一个对象,其中包含该页面所需的所有已清理/预处理的数据(在本例中为产品数据)。这通常不是一个好主意吗?
标签: php phpdoc code-documentation