Gestionnaire de modèles sql

Description

Suite à la discussion que nous avons eue avec destinyfr sur la source http://www.phpcs.com/codes/CMS-MY-GESTION-CMS-100-OPEN-SOURCE_48285.aspx, voici comment je procède sur mes sites pour tout ce qui touche à la base de donnée.

Pour détailler, j'utilise deux classes principales suivit de n classes pour les modèles.
La première classe s'appelle PdoManager, et s'occupe de la création de l'instance de PDO et du chargement des modèles.
La deuxième classe s'appelle PdoModel, et est une classe (que j'aurai dû mettre abstraite) qui va éviter la redondance de code pour les modèles. En fait elle ne contient qu'une variable protected et une fonction, __construct, qui recoit l'instance de PDO et l'enregistre dans la variable protected.

Les classes modeles n'auront qu'à étendre PdoModel et faire mumuse avec $this->_oPdo->* !

Voici un exemple de l'implémentation de telles classes :

Source / Exemple :


<?php
// On défini le repertoire ou se trouvent les modeles
define ('MODELS_DIR', 'classes/Models/');
// Bien sûr, on peux agir différement (le passer en paramètre, etc)

// On inclut PdoManager
require_once ('classes/PdoManager.php');

// On instancie une connection vers PDO au travers de PdoManager
$oPdoInstance = PdoManager::init (array ('dsn' => 'mysql:host=127.0.0.1', 'username' => 'root', 'password' => 'root'));

// Maintenant, l'instance de PDO n'appartient qu'aux classes PdoManager et PdoModel(filles)
// on ne peux pas accéder à pdo depuis l'extérieur de ces classes

// Pour jouer avec la base de donnée, on doit charger un model, par exemple users :
$oUsers = $oPdoInstance->load ('Users');

// Puis on appele une fonction, telle que selectFromId
$aUser = $oUsers->selectFromId (1);

// On affiche son contenu vite fait
echo '<pre>';
var_dump ($aUser);
echo '</pre>';

// On modifie la valeur
$aUser['login'] = 'Alfred';

// On affiche son contenu après modification
echo '<pre>';
var_dump ($aUser);
echo '</pre>';

// Et on met à jour
echo '<pre>';
var_dump ($oUsers->update (1, $aUser));
echo '</pre>';
?>

Conclusion :


Le code présent ci-haut est un code vite fait pour présenter l'usage des classes utilisées pour la gestion de models. (c'est pas très joli joli, mélange du code html/php, etc).

Juste pour vous donner une idée des possibilités que l'on as avec les classes PdoManager/PdoModel telle que je les implémentes.

N'hésitez pas à proposer des améliorations, des conseils, des optimisations et à apporter votre avis sur la chose afin d'améliorer, toujours améliorer, un code :)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.