说我有这个功能:
function load_model($modelName)
{
$model = new $modelName;
return $model;
}
使用它,我可以做到:
$userModel = load_model('user');
$forumModel = load_model('forum');
等。两者都是不同类型,不同功能等的不同模型。
但是,我的自动填充功能不起作用,因为它不知道load_model()
函数的返回值是什么。
有没有办法做这样的事情?
/**
* @return $modelName
*/
这会告诉IDE返回值是用户模型类还是论坛模型类?
答案 0 :(得分: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的自动完成也无法找到它。
但是,如果您的各种具体模型类正确实现顶级接口或从公共抽象父类扩展,那么使用接口/ abstract作为返回类型将允许某种级别自动完成功能在IDE中工作。
编辑:还有另一种方法可以记录返回类型,但我仍然认为自动完成不会起作用 - 列出多种返回类型:
@return UserModel|LoadModel|PlaneModel|TrainModel|AutomobileModel an object of one of the various model classes