在我们的业务代码中操作MySQL查询结果集时,通常使用PDO查询出结果之后都是FETCH_ASSOC关联数组列表,当我们foreach操作结果集时,phpstorm无法代码提示。而且很多情况,这个PDO查询接口都是其他同事封装的方法,直接调用时字段名没提示相当不方便,就不得不去复制mysql的列名到ide中,这个效率低不说,而且很麻烦。由此作者给出一个解决方案
<?php
//以下只是代码示例,无法直接运行
/**
*
* @property int user_id //类成员名必须和mysql的column一致
* @property string nickname
*/
class UserModel {
//类中无需定义任何成员,因为定义了也无法起到作用
//但是可以在注释中添加 @property 标记MySQL表中的column名
//只有添加了 @property标记的colunmn ,代码提示才能显示该列名
//PDO在获取记录之后,将其转换为类对象时,触发该魔术方法赋值,
//此处只是example, 在产品环境中一般需要自己处理。
public function __set($k, $v){
switch($k){
case "user_id":
$this->$k=$v;
break;
case "nickname":
$this->$k = "prefix{$v}";
break;
}
}
}
$pdo = new PDO(...);
$stmt = $pdo->prepare