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

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

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

}

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

4

3 回答 3

7

这个问题似乎与标题相反。您是想查看属性并查看 getter 的描述,还是查看 getter 并查看属性的描述?

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

在这里,属性的描述将包含一个指向 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}”实际上不能指向任何东西。显示“@property $Property”描述的类文档块中的文本可能会正确显示指向 getProperty() 的链接,但这只是因为 getProperty() 是一个真正的方法,因此它有自己的文档。如果 getProperty() 是一种由“@method getProperty()”表示的神奇方法,那么“{@link getProperty()}”将无处可指。

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

于 2013-11-01T16:15:47.943 回答
0

我认为你能做到的最好的就是

@property $Property
@see getProperty
于 2013-10-30T12:14:14.423 回答
0

使用类级别的 PHPDoc 注释

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

是的,神奇的 getter 将出现在 IDE 中,这正是它有用的原因

于 2013-10-30T12:19:18.967 回答