我有一个使用 setFetchMode(PDO::FETCH_CLASS, get_used_class() ) 的 PDO 类,
但现在我正在开发一个类“工厂”,它映射通过构造函数传递的表,因此,我没有将表字段作为映射要获取的表的类的成员,而是有一个字段数组匹配!
到目前为止一切顺利!我想!
但是我需要调整我的 PDO 类,并且我不知道如何告诉它映射到关联数组而不是类成员!
有人可以给我提示吗?
在我的班级工厂中,我有以下内容:
class factory extends Database
{
public $fields = array();
public $fieldnames = array();
public $fieldvalues = array();
// Nomes das colunas com datas de criação e alteração do registo
static protected $insert_timestamp = 'datacriado';
static protected $update_timestamp = 'dataalterado';
// Array com defaults que são aplicados ao objecto antes de gravação na BD
static protected $defaults = array();
// Nome da tabela na base de dados
public $TABLENAME = "";
/*********************************************************************
/ Construtor.
*********************************************************************/
public function __construct($map)
{
parent::__construct();
$fp=fopen($map,"r");
$map=fgets($fp);
fclose($fp);
$mapArr=explode(":",$map);
$this->TABLENAME=$mapArr[0];
$map=$map[1];
$mapArr=explode(";",$map);
foreach($mapArr as $v)
{
array_push($fieldnames,$v);
array_push($fieldvalues,":".$v);
array_push($fields[$v],'');
}
// definir DEFAULTS se houver
}
}
我希望 PDO 给我一个 $fields 数组,而不是一个类实例数组。
我想我抓住了解决方案,使用 setFetchMode(PDO::FETCH_ASSOC) 并创建一个函数通过 $this-map 解析结果并返回解析的结果而不是 PDO 结果本身!
请评论!我对这个解决方案不是 100% 确定!我相信这会起作用,但我也相信这一定是更好的方法!