Portabiliser mes requêtes
Bonjour et bonne année 2014!!!
Peut-on plus portabiliser comme séparer la requête de la connexion?
Celui-ci : class Model extends MPDO
<?php
/*
* Project: Nathan MVC
* File: /models/home.php
* Purpose: model for the home controller.
* Author: Nathan Davison
*/
class HomeModel extends BaseModel
{
//data passed to the home index view
public function index()
{
$this->viewModel->set("pageTitle","Le titre de ma page");
return $this->viewModel;
}
}
// appel de la connexion
abstract class Model extends MPDO {
private $_conn;
protected $_pk;
public function __construct() {
$this->_conn = MPDO::pdo_connection();
}
public function getAll() {
$stmt = $this->_conn->prepare("SELECT * FROM ". $this->table);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_OBJ);
}
}
// affichage des artistes via la class Model
class Artiste extends Model {
protected $table='artiste';
public function __construct()
{
parent::__construct();
//$this->_pk = 'id';
}
}
?>
Réponses apportées à cette discussion
Salut et bonne année à toi également.
Pour ce qui est de la portabilité du SQL, c'est possible à condition de veiller à respecter les standards SQL. Et encore, dans certains cas, une même requête ne fonctionnera pas forcément sur tous les SGBDs car certains n'appliquent pas obligatoirement l'intégralité du standard.
Mais justement, PDO peut aider à simplifier les choses en ceci qu'il suffit de changer juste la connexion pour exécuter une même requête sur un autre type de serveur.
Pour des requêtes CRUD (CREATE, READ, UPDATE, DELETE), ça ne posera pas de grandes difficultés. à où ça pourrait devenir plus ardu, ce sera le cas où on voit apparaitre des procédures stockées ou des fonctions utilisateur qu'il pourra être nécessaire de ré-écrire spécialement pour le nouveau SGBD.