2014-07-05 3 views
0

가져 오기하는 PDO 내가 (get_called_class을() PDO :: FETCH_CLASS)는 setFetchMode를 사용하는 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

은 public $ map을 팩토리에 추가하고 PDO 호출을 $ sth-> setFetchMode (PDO :: FETCH_CLASS, get_called_class(), $ this-> map)로 변경합니다. 문제를 풀다? 나는 이것을 지금 시험해 볼 것이다! 하지만 실제로 테스트 할 수 있기 전에 적응할 여러 클래스가 있습니다! 어떤 힌트라도 환영합니다! 고마워요! – davidmr

답변

0

나는 해결책을 얻었고 setFetchMode (PDO :: FETCH_ASSOC)를 사용하여 $ this-map을 통해 결과를 구문 분석하고 PDO 결과 대신 구문 분석 된 결과를 반환하는 함수를 작성한다고 생각합니다!

의견을주세요! 나는이 해결책에 대해 100 % 확실하지 않다. 나는 이것이 효과가있을 것이라고 믿지만, 나는 그것이 더 좋은 방법이어야한다고 믿는다!