dsn = 'mysql:dbname=fpcmanager;host=localhost'; $this->user = 'root'; $this->password = 'root'; $this->dbh = new PDO( $this->dsn, $this->user, $this->password); // Mapping Objet Relationnel $this->map = array( "SocieteVo" => "Societe_VO", "StagiaireVo" => "Stagiaire_VO", "FormateurVo" => "Formateur_VO", "StageVo" => "Stage_VO", "SessionVo" => "Session_VO", "ResponsableVo" => "Responsable_VO", "JunctionSessionFormateurVo" => "Junction_Session_Formateur_VO", "JunctionStagiaireSessionVo" => "Junction_Stagiaire_Session_VO", "JunctionSocieteStagiaireVo" => "Junction_Societe_Stagiaire_VO", "JunctionSocieteResponsableVo" => "Junction_Societe_Responsable_VO" ); } public function findAll( $pVO ) { $reflectObj = new ReflectionObject( $pVO ); $reflectObjName = $reflectObj->getName(); $tableSQL = $this->map[ $reflectObjName ]; $query = "SELECT * FROM $tableSQL"; $res = $this->dbh->query( $query ); $typedVOArr = array(); while ($obj = $res->fetch(PDO::FETCH_OBJ)) { $reflect = new ReflectionClass( $reflectObjName ); $dynamicObject = $reflect->newInstance(); foreach( $obj as $property => $value ){ $dynamicObject->$property = $value; } array_push( $typedVOArr, $dynamicObject ); } return $typedVOArr; } public function findById( $pVO ) { $reflectObj = new ReflectionObject( $pVO ); $reflectObjName = $reflectObj->getName(); $tableSQL = $this->map[ $reflectObjName ]; $query = "SELECT * FROM $tableSQL WHERE id =" . $pVO->id; $res = $this->dbh->query( $query ); $typedVOArr = array(); while ($obj = $res->fetch(PDO::FETCH_OBJ)) { $reflect = new ReflectionClass( $reflectObjName ); $dynamicObject = $reflect->newInstance(); foreach( $obj as $property => $value ){ $dynamicObject->$property = $value; } array_push( $typedVOArr, $dynamicObject ); } return $typedVOArr; } /** * Exécute une requête d'insertion de l'objet $pObject dans MySQL */ public function insert( $pVO ) { $reflectObj = new ReflectionObject( $pVO ); $reflectObjName = $reflectObj->getName(); $tableSQL = $this->map[ $reflectObjName ]; $columns = ""; $values = ""; $query = "INSERT INTO $tableSQL ( " ; foreach( $pVO as $property => $value ){ if ( $property == "id" || $property == "_explicitType" ) {} else { $columns .= $property . ","; if ( is_int( $value ) ) $values .= $value . ","; else { $value = addslashes( utf8_decode( $value ) ); $values .= "'$value',"; } } } // Supprime le ',' final $columns = substr( $columns, 0, strlen( $columns ) - 1 ); $values = substr( $values, 0, strlen( $values ) - 1 ); $query .= $columns . " ) VALUES ( " . $values . " ) "; $this->dbh->query( $query ); return $this->dbh->lastInsertId(); } /** * Delete l'objet $pObject dans MySQL */ public function remove( $pVO ) { $reflectObj = new ReflectionObject( $pVO ); $reflectObjName = $reflectObj->getName(); $tableSQL = $this->map[ $reflectObjName ]; return $this->dbh->query( "DELETE FROM $tableSQL WHERE id=" . $pVO->id ); } /** * DŽfinit le VO ˆ uiliser dans les transactions SQL */ public function setVO( $pVO ) { $this->vo = $pVO; } /** * Update l'objet $pObject dans MySQL */ public function update( $pVO ) { $reflectObj = new ReflectionObject( $pVO ); $reflectObjName = $reflectObj->getName(); $tableSQL = $this->map[ $reflectObjName ]; $query = "UPDATE $tableSQL SET " ; $updates = ""; foreach( $pVO as $property => $value ){ if ( $property == "id" || $property == "_explicitType" ) {} else { $updates .= $property . " = "; if ( is_int( $value ) ) $updates .= $value . ","; else { $value = addslashes( utf8_decode( $value ) ); $updates .= "'$value',"; } } } // Supprime le ',' final $updates = substr( $updates, 0, strlen( $updates ) - 1 ); $query .= $updates . " WHERE id = " . $pVO->id ; return $this->dbh->query( $query ); } } ?>