Accueil » Articles » Comment et pourquoi j'ai bâti mon framework PHP?

Comment et pourquoi j'ai bâti mon framework PHP?

Le pourquoi et le comment

Framework : Un framework est un ensemble de bibliothèques permettant le développement rapide d'applications. Il fournit suffisamment de briques logicielles pour pouvoir produire une application aboutie. Ces composants sont organisés pour être utilisés en interaction les uns avec les autres. Ils sont en principe spécialisés pour un type d'application.

Tout d'abord, j'ai commencé à me monter un framework sans m'en compte.

J'étais tanné de devoir me taper des tableaux HTML à tout bout de champ. J'ai alors commencé à me faire une classe en PHP 5 pour faire exactement cela. Puis, je voulais pouvoir trier les colonnes, j'ai donc modifié ma classe pour ajouter cette fonction.

Ensuite, je devais souvent faire des classes pour l'authentification. J'ai donc monté une classe (toujours en PHP 5) pour gérer les connexions et les authentification. J'ai ensuite utilisé celle-ci dans différentes applications web.

Par la suite, je me suis tapé une migration de code d'ODBC (odbc_connect(), etc) à MySQL (mysql_connect(), etc) et je me suis dit que je ne voulais JAMAIS devoir à refaire ça. J'ai donc fait une classe pour agir comme wrapper entre mon code PHP et mes bases de données. Je n'ai plus alors qu'à utiliser mes méthodes définies dans ma classe et d'indiquer seulement dans le constructeur quel BD utiliser. Comme ça, si je change de BD, je ne dois pas modifier tout mon code, mais juste l'appel du constructeur.

Exemple, au lieu de faire :

 odbc_connect('host', 'username', 'password');

je fais :

  $db = DBWrapper('host', 'username', 'password', ODBC);

Apprenez en plus plus sur la classes DBWrapper et télécharger celle-ci.

Encore plus de classes

Je devais souvent faire des interfaces web. J'ai donc fais des classes qui me permettent de générer des pages web à partir de classe en PHP 5.

J'ai donc monter de toute pièce des classes pour :

  • générer des pages;
  • générer des menus;
  • générer des éléments de navigations;
  • générer des gabarits;
  • etc.

Exemple d'utilisation de ces classes :

require_once('htmlwebpage.php');

$page = new CWebPage;

$page->LoadSkeleton();

$page->SetPageTitle("Test de login");

$page->AddPrimaryNavItem("Bouton de test", "http://www.google.ca/", "images/bon.gif", "images/boff.gif");
$page->AddPrimaryNavItem("Bouton de test", "http://www.google.ca/", "images/bon.gif", "images/boff.gif");
$page->AddPrimaryNavItem("Bouton de test", "http://www.google.ca/", "images/bon.gif", "images/boff.gif");

$page->AddSecondaryNavItem("Produits et services", "", "images/nav_off.gif", "images/nav_on.gif");
$page->AddSecondaryNavItem("Financement", "", "images/nav_on.gif", "images/nav_off.gif");

$page->AddHeaderNavItem("Français", "http://www.monsite.com");
$page->AddHeaderNavItem("Conctatez-nous", "http://www.monsite.com");

$page->SetMenuTitle("Navigation");
$page->AddMenuItem("Login", "", 1);
$page->SetMenuActif(0);

$page->m_HtmlBody->FormLogin();

echo $page->Render();

J'ai même créer des classes qui génère pour moi le code PHP nécessaire à la création de page, me retrouvant ainsi donc avec un CMS.

Après un an, je me retrouve avec 25 classes formant un ensemble assez intéressant et qui répond parfaitement à mes besoins.

  • calAgenda
  • calEvent
  • calEventsCollection
  • dbFileSystems
  • dbFileSystemsInterface
  • dbFileSystemsWebInterface
  • dbWrapper
  • genAuthentificator
  • htmlBody
  • htmlHook
  • htmlItem
  • htmlItemsCollection
  • htmlLigne
  • htmlMenu
  • htmlPrimaryNav
  • htmlSecondaryNav
  • htmlTableau
  • htmlWebPage
  • htmlWebPageInterface
  • etc

Je fais vous présenter certaines de ces classes dans un prochain article.

PEAR

On peut se demander pourquoi je n'utilise pas les classes PEAR existantes pour faire ça. Il existe déjà des classes PEAR pour l'authentification, pourquoi réinventer la roue? Par paresse. Paresse de devoir apprendre à me servir du code de quelqu'un d'autre. Paresse de ne pas connaître intrinsèquement comme fonctionne le tout. De plus, quand je programme quelque chose moi-même, j'ai une meilleure connaissance des limites et capacités de mes outils.

De plus, comme j'utilise un hébergeur partagé, je ne peux pas installer PEAR.

Et surtout, je ne m'étais pas rendu compte que je commencais un framework :-)

Cet article vous a plu? Lisez mes autres articles pour découvrir d'autres trucs.

Sébastien Brodeur

Il est strictement interdit de reproduire ce texte sans la permission écrite de l'auteur.


Commentaire(s)

Ajouter un commentaire

Les gens qui ont consulter cet article, ont aussi consultez ceux-ci :


Valid XHTML 1.0 Transitional

Valid CSS!