说服IDE那个变量包含对类的引用?

时间:2012-12-08 03:08:46

标签: php codeigniter autocomplete phpstorm phpdoc

我正在使用CodeIgniter并拥有自己的类,我会反弹。

特别是一个从我的模型中实例化的类,实际上是一个扩展它的类。它开始如下,

/**
 * @var CI_Controller
 */
protected static $ci;
/**
 * @var CI_DB_active_record
 */
protected static $db;
/**
 * @var Module_Model
 */
protected static $model;

protected $dateModified = null;
protected $dateDeleted = null;
protected $dateCreated = null;

/**
 * @param stdClass $data
 */
public function __construct(stdClass $data) {

    self::$ci =& get_instance();
    self::$db = self::$ci->db;
    self::$model = self::$ci->{self::$model};

    $this->{self::$model->primaryKey} = $data->{self::$model->primaryKey};
    $this->dateModified = (self::$model->dateModified === false ? null : $data->{self::$model->dateModified});
    $this->dateDeleted = (self::$model->softDelete === false ? null : $data->{self::$model->softDelete});
    $this->dateCreated = (self::$model->dateCreated === false ? null : $data->{self::$model->dateCreated});
}

哪个工作正常,在扩展它的类中我只需将构造函数设置为:

public function __construct(stdClass $data) {

    parent::$model = 'properties';

    parent::__construct($data);
}

self::$model = self::$ci->{self::$model};所在的位置。

它告诉班级创建的模型是什么,以便它可以访问模型。

这一切都很有效,但我遇到的问题是自动完成。

在调用self::$model->...之前,上面列出的行自动完成功能正常工作,它基于Module_Model类(这是我所有模型延伸的类)的工作原理,因为这个docblock:

/**
 * @var Module_Model
 */

现在显然没有IDE会足够聪明地理解Code Igniter的工作原理,所以我不希望它能够根据我指定的模型自动完成。

但是,我希望它能够基于Module_Model类自动完成。

无论如何(最好是通过docblock)说服IDE self::$model仍然包含对Module_Model的引用?

如果重要,我使用PHPStorm作为我的IDE,它理解PHPdoc。

1 个答案:

答案 0 :(得分:0)

您可以在PHPStorm中设置PHP包含路径,然后按these instructions

然后,您可以调整this answer来帮助您(它适用于NetBeans)。

相关问题