8710 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je viens vers vous non pas pour un soucis de ligne de code mais plutôt pour de la méthodologie. Je ne sais pas si je suis au bon endroit pour poster ça, n'hésitez pas à me le dire si ce n'est pas le cas.

Je développe actuellement (pour ma propre utilisation) un système de panneau d'administration. L'intérêt est de gagner du temps pour les sites que je réalise. En effet, je compte l'utiliser à chaque fois qu'un client souhaitera modifier quelque chose sur son site (utilisateurs, coupons de réduction, news, etc.).

Etant donné que chaque client n'a pas les mêmes besoins, je me suis dit que j'allais me pencher sur un système de modules (exemple : un module de gestion des utilisateurs, un module de gestion de news, etc.) afin de pouvoir personnaliser le panneau d'administration en fonction des clients.

Cependant, je ne vois pas comment m'y prendre pour réaliser quelque chose qui puisse être évolutif sans que ça soit le "bordel". Je précise que les modules en question seront aussi développé par moi-même.

J'ai bien essayé de me renseigner auprès de mon ami Google mais ça n'a absolument pas été fructueux, à croire que je suis le seul à vouloir faire ça... (ce dont je doute).

Bien évidemment si je vous pose cette question, c'est parce que je n'ai pas envie de passer par les "usines à gaz" telles que Wordpress, Dotclear, etc.

Voilà, si je n'ai pas été clair, n'hésitez pas à me poser des questions, ce que je cherche c'est vraiment à être éclairé sur la méthodologie de programmation.

Merci d'avance ! Smiley cligne
C'est un sujet assez large, et les réponses apportées sont variées.

Le plus évolutif et modulaire est pour moi le HMVC, pour faire ce genre de choses.

MVC : Model - View - Controller // Modèle - Vue - Contrôleur
Il s'agit d'un design pattern qui sépare et organise les fichiers dépendant de leurs fonctionnalités .

Dans sa conception la plus basique :
- Le modèle va extraire les données (requêtes sql) pour les retourner au contrôleur.
- Le contrôleur va manipuler ces données (travail sur une date pour l'afficher dans un format donné, par exemple) pour les envoyer à la vue.
- La vue va afficher les données (html/css.. bref front-end)

Voici un exemple d'arbre :
/
-Model/
-- admin_news_Model.php
-Controller/
-- admin_news.php
-Vue/
-- admin_news_index.php


D'autres "variantes" existent comme remplacer le modèle par un ORM (type Doctrine), ou bien remplacer le contrôleur par un routeur, la vue html par un moteur de template (type Smarty).

Ce design pattern ( patron de conception ) mets un peu d'ordre dans les fichiers, mais il existe un moyen pour permettre une organisation plus avancée : le HMVC.

Le principe reste le même, sauf qu'on regroupe les MVC par module, comme l'arbre suivant :
/
-Module/
--News/
---Model/
----admin_model.php
----frontend_model.php
---Vue/ 
----admin_index.php
----frontend_index.php
---Controller/
----admin.php
----frontend.php


Je ne m'y connais pas beaucoup en CMS, mais :
- Joomla et Typo3 utilise MVC
- Drupal, Wordpress utilise les librairies

Tu peux jeter un coup d'oeil sur les frameworks PHP pour mieux comprendre le principe :
- CodeIgniter avec lequel j'ai commencé le MVC. Il existe un plugin pour le faire passer en HMVC, lorsque je l'utilisais.
- KohanaPHP est un framework orienté HMVC
- FuelPHP propose une architecture HMVC de base
- Yii, CakePHP, etc permettent le HMVC sous le dossier "widgets" ou "plugins"
- Laravel propose le MVC, je n'ai pas encore regardé pour le HMVC
- s'il y a des fanboys de Symfony ou Zend qui peuvent nous éclaircir sur ce point, car je connais pas ces frameworks.

Si le HMVC ne te branche pas, le MVC reste quand même le patron de conception le plus utilisé par les frameworks PHP, preuve de stabilité.
Modifié par rootine (02 Dec 2012 - 14:08)
Merci beaucoup de ta réponse rootine !

J'utilise déjà actuellement le modèle MVC (même si je ne code pas en objet) et il est vrai que niveau organisation, c'est génial.

Si j'ai bien compris ton explication, je rajoute à ma structure un dossier "Modules" dans lequel je vais faire un dossier par module justement qui lui-même sera structuré en MVC, c'est bien ça ?
Bon, je suis parti dans le développement, je liste dynamiquement les modules dans le menu.

Par contre, si chaque module (sous forme de dossier) contient lui-même un modèle MVC, je me demandais comment gérer l'affichage de ceux-ci, tout en gardant le reste du site ?

En gros, j'ai mon header, mon menu, et j'aimerais que lorsque je clique sur le bouton "Gestion des utilisateurs" par exemple, que le module s'affiche dans le corps, sous forme d'include en gros. Sauf que si j'include le "index.php" du module, toutes les fonctionnalités ne seront pas effectives, si...?

Désolé si ma question paraît bête mais j'essaye de faire au mieux...

Merci beaucoup ! Smiley smile