1

私がこの機能を持っているとしましょう:

function load_model($modelName)
{
   $model = new $modelName;
   return $model;
}

それを使用して、私はすることができます:

$userModel = load_model('user');
$forumModel = load_model('forum');

両方とも、異なるクラス、異なる関数などを持つ異なるモデルになります。

ただし、関数の戻り値がわからないため、オートコンプリートは機能しませんload_model()

このようなことをする方法はありますか?

/**
* @return $modelName
*/

これにより、戻り値がユーザーモデルクラスまたはフォーラムモデルクラスであることがIDEに通知されますか?

4

1 に答える 1

1

いいえ...ここで期待できる最善のことは、さまざまな種類のモデルクラスがすべて同じインターフェイスを実装している場合、またはおそらくすべてが同じ抽象親クラスから拡張されている場合、インターフェイスまたは抽象クラス名を戻り型として指定できることです。 。

例:

もしも

class UserModel implements ModelInterface {}

次に、load_model()関数は次のことができます

@return ModelInterface an object that implements a Model

..。

または、

class UserModel extends ModelAbstractParent {}

次に、load_model()関数は次のことができます

@return ModelAbstractParent a concrete Model object

..。

phpDocumentorが実行時に動的な戻り型を解読する方法は他にありません。したがって、IDEのオートコンプリートがそれを理解する方法もありません。

ただし、さまざまな具象モデルクラスがトップレベルのインターフェイスを適切に実装するか、共通の抽象親クラスから拡張する場合、戻り型としてinterface / abstractを使用すると、IDEである程度のオートコンプリートを機能させることができます

編集:リターンタイプを文書化するもう1つの方法がありますが、それを使用してもオートコンプリートが機能するとは思いません-複数のリターンタイプを一覧表示します:

@return UserModel|LoadModel|PlaneModel|TrainModel|AutomobileModel an object of one of the various model classes

于 2011-04-25T16:45:59.547 に答える