2014-07-05 33 views
0

我有一个使用调用setFetchMode一个PDO类(PDO :: FETCH_CLASS,get_called_class()),定制PDO获取模式

,但现在我devoloping一类“工厂”,映射通过传递一个表构造函数等,而不是将表字段作为类的成员映射表获取我有一个字段数组匹配!

到目前为止好!我认为!

但我需要适应我的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给我$区域,而不是类实例的数组的数组。

+0

我的目标是让我的框架能够在运行时创建表和各自的地图,并仍然能够使用它的工具! – davidmr

+0

会将公共$映射添加到工厂,并将PDO调用更改为$ sth-> setFetchMode(PDO :: FETCH_CLASS,get_called_class(),$ this-> map);解决这个问题?我现在要试试这个!但是在我真的可以测试这个之前,我已经有好几个课程要适应了!欢迎任何提示!谢谢! – davidmr

回答

0

我想我抓住了解决方案,使用setFetchMode(PDO :: FETCH_ASSOC)并通过$ this-map解析结果并返回解析结果而不是PDO结果!

请评论!我对此解决方案并不十分确定!我相信这会行得通,但我也相信它肯定是一种更好的方式!