如何设置动态函数的@return值



假设我有这样一个函数:

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

使用它,我可以做:

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

等。两者都将是不同的模型,具有不同的类,不同的功能等。

然而,我的自动完成不工作,因为它不知道load_model()函数的返回值将是什么。

有什么办法可以这样做吗?

/**
* @return $modelName
*/

这将告诉IDE返回值是用户模型类,还是论坛模型类?

不…在这里,您所能期望的最好情况是,如果您的各种模型类都实现了相同的接口,或者可能都从相同的抽象父类扩展,那么您可以将接口或抽象类名作为返回类型。

例子:

如果

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

相关内容

  • 没有找到相关文章

最新更新