记录动态成员变量

时间:2012-08-18 14:43:22

标签: php doxygen idiorm

我使用Doxygen记录模型类(在PHP中)。我正在使用Idiorm&巴黎作为ORM,我希望动态成员变量(直接来自数据库)也出现在生成的文档中。

示例:我有一个模型Group,其中有一些方法,例如Doxygen记录的isMember()users()。在数据库中,我有一个表group,其中包含一个字段code。在Idiorm&巴黎我可以从Group实例$group访问它,如下所示:

$group->code

如何在Doxygen中记录code

修改:此问题类似于How to document a variable that isn't really there in Doxygen?,但它与动态成员相关,而与变量无关。

编辑2 :我不确定正确的术语。它是动态成员变量还是动态属性?

2 个答案:

答案 0 :(得分:1)

我在设置我知道它们将包含某些数据位的模型时通常会做的事情是在模型定义中设置变量。这样可以更轻松地查看模型可以获得的数据类型。

我没有Idiorm和Paris的经验,但这是你可以尝试的。记录变量非常容易,因为它存在。

答案 1 :(得分:0)

在Doxygen中记录不存在的类变量是不可能的吗?我试了一个裸体

/** @var User::email string 
  * Email address
  */

在类中没有相应的$email;成员变量,但Doxygen勇敢地忽略了它。我没有找到命令或某些东西来强制记录丢失的工件。

因此,我尝试了 creativedutchmen 的建议,但巴黎并没有很好地处理现有的成员变量,因为 - 我认为 - PHP魔术方法__get()不再被触发。我看到了三种可能的修复方法:

  1. unset()构造函数中记录的成员变量。使用get_class_vars(get_class($this)),可以在父类中完成。因为我的模型类都是从父类继承的,所以这相对简单。
  2. 修改巴黎以忽略已设置的成员变量,但我看不到没有unset()
  3. 将成员变量命名略有不同,例如附加下划线,这样它们就不会与动态变量发生冲突。
  4. 可怕的克拉奇。在运行时做某事或有其他成员来使文档成为可能?不,谢谢。

    我决定保持现状,并仔细记录模型工厂方法。大多数情况下,工厂方法包含作为参数的类变量,以便能够设置它们。即使工厂方法没有设置所有类变量,也可以在散文中记录缺失的变量。课程文档也是一个很好的选择。

    我将赏金奖励给 creativedutchmen 因为开箱即用,即使它最终没有帮助我,也因为我不希望声誉点丢失。< / p>

    <强> TL;博士

    不要破坏。在工厂方法或类概述中记录动态成员变量。