1

私は CodeIgniter を使用しており、私がバウンスする独自のクラスを持っています。

特に 1 つは、モデルからインスタンス化されるクラスです。実際には、これを拡張するクラスです。以下のように始まります。

/**
 * @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};が入ります。

モデルにアクセスできるように、どのモデルが作成されたかをクラスに伝えます。

これはすべてうまく機能しますが、私が抱えている問題はオートコンプリートにあります。

上記の行のオートコンプリートが機能するまで、この docblock により、クラス (すべてのモデルが拡張されたクラス) にself::$model->...基づいて機能します。Module_Model

/**
 * @var Module_Model
 */

明らかに、Code Igniter がどのように機能するかを理解できるほど賢い IDE はありません。そのため、指定したモデルに基づいてオートコンプリートできるとは考えていません。

Module_Modelしかし、クラスに基づいてオートコンプリートできるようにしたいと思います。

self::$modelへの参照がまだ含まれているIDEを納得させる方法はありModule_Modelますか?

問題があれば、PHPdoc を理解する IDE として PHPStorm を使用しています。

4

1 に答える 1

0

PHPStorm で PHP インクルード パスを設定し、次の手順に従います。

次に、この回答を適応させて役立つ場合があります (NetBeans 用です)。

于 2012-12-09T18:46:09.117 に答える