这是我在stackoverflow上的第一篇文章!
我正在开发一个PHP框架,我需要在对象上提供类型提示。
我将列出我正在使用的结构示例:
Database
类,用作“入口点”。这个类使用PDO连接到数据库,并且具有
UserSet
属性
UserSet
类,扩展 Set
(打算作为用户集合)
Set
类User
类,只有Table props 实施例
Set
有一个select方法,它通过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 */
通过这种方式,我可以在选择var
时获得类型提示$result = $database->UserSet->select()
但是$ result都是User和UserSet类型,我在完成代码弹出窗口(Netbeans)中有来自User和UserSet的提示,而我希望它的类型为 UserSet
,并且只有在迭代时才有 User
提示。
(像UserSet< User>,像Java一样思考)
有可能达到这个目标吗?
对不起,很长的帖子!谢谢大家!
答案 0 :(得分:0)
首先,如果您的select()
方法始终返回return $prepare->fetchAll();
,那么评论@method User|UserSet select()
中的返回类型提示是错误的,因为PDOStatement::fetchAll()
会返回一个数组。
假设您的$this->TABLE
为'User'
,那么您的select()
方法会返回User
个对象的数组。尝试这样暗示:@method User[] select()
。