Bonjour,
Je viens vous demander de l'aide car j'ai un sacré problème. Je me suis peut être attaqué à un trop gros poisson, mais j'ai quand même bien envie de le ferrer !
J'essaye de mettre en place une classe Active Record depuis plusieurs jour mais j'ai un problème persistant.
Voici le constructeur de ma classe Active Record
Jusqu'ici tout va bien...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 abstract class ActiveRecord { public function __construct( $iId = '' ) { if ( $iId != '' or $iId != 0) { /* Mémorisation de la clé. */ $this -> key = $iId; /* Ecriture de la requête. */ $sFields = implode( ', ', array_keys( $this -> fields)); $sQuery = "SELECT {$sFields} FROM {$this -> table} WHERE {$this -> index} = '{$this -> key}' "; /* Exécution de la requête. */ $oStatement = Factory::get( $this -> driver) -> query( $sQuery); /* Mémorisation des champs dans l'instance. */ $this -> fields = $oStatement -> fetch( PDO::FETCH_ASSOC ); } }
Mon problème se trouve là.
Lorsque la requête renvoie quelque chose, il n'y a pas de problème. Cependant lorsque le retour est vide. Je me retrouve avec $this -> fields de vide et donc la suite plante inévitablement avec les méthodes magiques :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 /* Mémorisation des champs dans l'instance. */ $this -> fields = $oStatement -> fetch( PDO::FETCH_ASSOC );
Une âme charitable serait-elle à même de m'aider dans cette situation très délicate ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public function __get( $sField) { if ( ! array_key_exists( $sField, $this -> fields)) { throw new ActiveRecordException( 'Dommage...' ); } return $this -> fields[$sField]; } public function __set( $sField, $mValue) { if ( ! array_key_exists( $sField, $this -> fields)) { throw new ActiveRecordException( 'Le champ n\'est pas valide !'); } //var_dump($this -> fields); $this -> fields[$sField] = $mValue; }
Merci par avance !
Partager