【问题标题】:PHPDOC @property associating to a getterPHPDOC @property 关联到 getter
【发布时间】:2013-08-09 14:56:18
【问题描述】:

我正在使用 YII,并为我的所有模型设置了 @property phpdoc 语句。

在我的 IDE (phpstorm) 中,我可以控制 + 单击方法和字段以将其带到它们的实现中,但是当我为魔术方法这样做时,它会将我带到类定义的顶部,这是不正确的。

如何设置它,以便将我带到相关的 getter 方法?

【问题讨论】:

  • 嗯,你是说你已经明确定义了 get 方法,但属性本身是未定义的魔法?我需要一个例子来确保我正确理解布局:-)
  • 这是 Yii 的魔法,所以它与 phpdoc 无关。当你使用某个属性时,Yii 在当前对象中查找它,如果没有找到,Yii 查找'get'.$propertyName 方法,如果存在,Yii 调用它。
  • 具体来说,Yii 使用 getter 和 setter 来允许在访问属性时执行动态代码。但似乎 phpdoc 没有指定实现属性的方法的机制。

标签: yii phpstorm phpdoc


【解决方案1】:

我的理解是这样的

@property@method 方法标签只允许在类级别的 docblock 中使用。这两个标签都向开发人员提供了有关通过神奇方法 __call($method,$params)__get($var) 和 @987654326 实现的方法/属性的可用性的提示@。

在 yii 中,您不需要为类属性显式定义 getter/setter 方法。所以一个属性是通过'get'.$attributeName e.g访问的

 /**
 * Class User
 *
 * @method string getFirstName()
 * @method void setFirstName(string $firstName)
 *
 */
class User extends CModel{
    var $firstName;
}

$u= new User();
$username=$u->getFirstName();
$u->setFirstName('Testuser');

在 Yii 的上下文中,上面的代码是真正的 bcz 魔术方法 'get'.$attributeName 用于调用属性。

由于@property@method 是班级级别的@tags,您唯一的选择是将它们添加到班级,然后按Ctrl+单击将焦点发送到相应班级docblock

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 2011-04-09
    • 2019-03-27
    • 1970-01-01
    相关资源
    最近更新 更多