这是我在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
有可能达到这个吗?
对不起,长帖子!谢谢大家!
首先,如果你的select()
方法总是返回return $prepare->fetchAll();
那么你在注释@method User|UserSet select()
中的返回类型提示是错误的,因为PDOStatement::fetchAll()
返回一个数组。
假设您的$this->TABLE
是'User'
则您的 select()
方法返回User
对象的数组。试着这样暗示:@method User[] select()
.