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 的自动完成功能也无法解决。

但是,如果您的各种具体模型类确实正确地实现了顶级接口或从公共抽象父类扩展,那么使用接口/抽象作为返回类型允许某种程度的自动完成在 IDE 中工作。

编辑:还有另一种记录返回类型的方法,但我仍然认为自动完成不会通过使用它来工作——列出多种返回类型:

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

于 2011-04-25T16:45:59.547 回答