phpDocumentor的。我可以从它的getter描述中添加属性链接吗?

时间:2013-10-30 12:04:02

标签: php phpdoc

/**
* @property $Property
*/
class SomeClass {

    public function __get($name){
       return $this->{'get'.$name};
    }

    /**
     * Some description
     * @return bool
     */
    public function getProperty(){
       return true;
    }

}

所以问题是 - 如何通过查看$ Property的文档来查看getProperty()的描述?或者只看到getProperty()文档的链接......

3 个答案:

答案 0 :(得分:4)

问题似乎与标题相反。您想查看该属性并查看获取者的描述,还是想查看获取者并查看该属性的描述?

我假设你想要两个。但是,你实际上也无法获得。一个人的描述最多可以包含链接到另一个,但实际上并没有在其描述中包含其他描述。

此处,属性的描述将包含指向getter文档的链接。

/**
 * @property $Property is controlled by {@link getProperty()}.
 */
class SomeClass {

    public function __get($name){
       return $this->{'get'.$name};
    }

    /**
     * Gets the value of {@link $Property}.
     * @return bool
     */
    public function getProperty(){
       return true;
    }

}

这里有两个复杂因素:关于魔法事物在实际文档中的显示方式(以及IDE如何显示它们);以及{@link}内联标签是否实际执行任何操作。

在phpDocumentor 1.x中,魔术内容仅作为类本身列出的额外信息出现。在phpDocumentor 2.x中,魔术属性和魔法方法都将显示为真正的属性和方法。 2.x行为是一个很大的改进。对于IDE,我只能说Eclipse PDT,我发现它与1.x行为相匹配。

在phpDocumentor 1.x中,内联{@link}标记确实起作用,并且通常成为文档的超链接,指向它所指向的元素(属性,方法)。但是,由于1.x实际上并没有为@property和@method识别的神奇事物创建专用文档,因此“{@link $ Property}”实际上无法指向任何内容。类别docblock中显示“@property $ Property”描述的文本可能正确显示了getProperty()的链接,但这只是因为getProperty()是 true < / em>方法,因此它有自己的doc。如果getProperty()是一个由“@method getProperty()”表示的神奇方法,那么“{@link getProperty()}”就没有任何指向。

在phpDocumentor 2.x中,内联{@link}标记未实现,因此它最终只会显示一个可见文本,就好像它没有标记目的一样。一旦2.x实现了这个内联标记,那么我的上述解决方案应该能够解决您的两个潜在问题。

答案 1 :(得分:0)

我认为您可以管理的最好的是

@property $Property
@see getProperty

答案 2 :(得分:0)

使用类级别的PHPDoc评论

/**
 * @method string getMyFirstProperty()  Return value of the property called first
 * @method float  getMySecondProperty() Return value of the property called second
 */

是的,魔术吸气剂将出现在IDE中,这实际上是有用的