特质函数的PHPDoc返回类型

时间:2019-03-13 17:24:46

标签: phpdoc php-7.2

我的代码中具有类似以下的函数,这些函数返回对象(用于链接):

    /**
     * Set properties
     *
     * @param $name
     * @param $value
     *
     * @return \Boka10\Page\MenuItemConfig
     */
    public function __set($name, $value)
    {

        $this->$name = $value;

        return $this;
    }

我想将此功能转换为特征,因为基本上可以一直重复使用它。

我的问题是,return $this行在文档部分出现了问题。在我的PHPDoc中,它说(在此示例中)@return \Boka10\Page\MenuItemConfig

如何创建一个“全局”特征方法,其返回文档包含正确的类型转换?可以这样做吗?还是应该在每个类中添加__set函数?

我不确定是否可以解释我在这里遇到的问题;)如果所有这些对象都返回各自的实例,那么@return标记在全局使用的特征中的内容究竟是什么? >

1 个答案:

答案 0 :(得分:1)

经过一番挖掘和“黑客攻击”之后,我检查了Psalm中的测试,发现以下似乎是评论这些情况的最佳方法:

/**
 * @method string somefunction($name, $value)
 * @property string $name
 */
class ImplementTrait {

    use MagicTrait;

}

属性和方法记录在实现类上。

注意:我正在使用Psalm来检查代码质量,这是psalms接受的方式: