PHP 类型 迭代对象时的提示


PHP Type Hinting when iterate into an object

这是我在stackoverflow上的第一篇文章!

我正在开发一个PHP框架,我需要在对象上提供类型提示。

我将列出我正在使用的结构示例:

  • 一个Database类,用作"入口点"。此类使用 PDO 连接到数据库,并且具有 UserSet属性

  • 扩展Set UserSet类(旨在作为用户集合(

  • 具有类似 SQL 方法的Set
  • 一个User类,只有表格道具

Set有一个选择方法,通过 PDO 返回用户数组;

$prepare = $this->database->prepare($this->sql);
$prepare->execute();
$prepare->setFetchMode(PDO::FETCH_CLASS,  $this->TABLE);
return $prepare->fetchAll();

UserSet覆盖通过@method运算符选择,如下所示:

/** @method User|UserSet select() blablabla */

这样,当将选择分配给变量时,我得到类型提示

$result = $database->UserSet->select()

但是$result既是用户类型又是用户集,我在完成代码弹出窗口 (Netbeans( 中有来自用户和用户集的提示,而我希望它是 UserSet 类型,并且仅在迭代时具有User提示。(类似于UserSet,像Java一样思考(

有可能达到这个吗?

对不起,长帖子!谢谢大家!

首先,如果你的select()方法总是返回return $prepare->fetchAll();那么你在注释@method User|UserSet select()中的返回类型提示是错误的,因为PDOStatement::fetchAll()返回一个数组。

假设您的$this->TABLE'User'则您的 select() 方法返回User对象的数组。试着这样暗示:@method User[] select() .