Skip to content
Pierre-Alexis de Solminihac edited this page May 13, 2016 · 25 revisions

Présentation

Clementine est un framework MVC PHP. C'est un logiciel libre sous licence MIT.

Installation

Vous trouverez la liste des modules installables sur le site officiel.

Principes de base

Clementine est un framework MVC PHP dont le code est organisé sous la forme de modules faiblement couplés.

Tout module peut être surchargé par un autre module, selon le principe de l'héritage de la programmation orientée objet. L'ordre dans lequel les modules héritent les uns des autres n'est défini strictement par les modules, c'est le framework qui le décide.

Cela garantit que toute surcharge reste elle-même surchargeable.

Initialisation et routage

Par défaut, toutes les URL sont capturées par le framework grâce au fichier /.htaccess, qui va les analyser selon le schéma suivant :

http://www.monsite.com/{$controleur}/{$action}

La partie /**{$controleur}**/**{$action}** s'appelle REQUEST_URI.

Par convention :

  • le premier mot de cette REQUEST_URI désigne la classe contrôleur du MVC qui sera ouverte. On dit que cette classe est le Contrôleur correspondant à la requête.
  • le deuxième mot de cette REQUEST_URI désigne la fonction à exécuter au sein de cette classe. On dit que cette fonction est l'Action du Contrôleur.

Valeurs par défaut

Si l'URL ne permet pas de déterminer la valeur de {$controleur} ou {$action}, la valeur 'index' sera utilisée par défaut.

URL Rewriting

On peut aussi utiliser des URL réécrites. Voir la page sur l'utilisation de l'objet ClementineRequest à ce sujet

Contrôleurs

À partir ce découpage, le framework va lancer le contrôleur de l'application de la manière suivante :

$controller = new {$Controleur}Controller(...);
$controller->{$action}Action(...);

En savoir plus sur l' arborescence et les conventions concernant les contrôleurs

Vues

Après avoir exécuté le contrôleur de l'application, le framework va automatiquement inclure la vue correspondante en lui transmettant :

  • les données qu'il a stocké dans $this->data
  • l'objet $request qu'il a lui même reçu
$this->getBlock("$controleur/$action", $this->data, $request);

Remarque

Les vues sont généralement constituées plusieurs blocs inclus. On les appelle donc plus souvent "blocks" que "vues".

En savoir plus sur l' arborescence et les conventions concernant les vues

Modèles

Les modèles servent à manipuler des objets métier. Généralement, le contrôleur y fait appel de la manière suivante :

$usersModel = $this->getModel('users');
$usersModel->needPrivilege('can_do_something');

Les modèles peuvent être appelés depuis un contrôleur, une vue, un autre modèle ou un helper.

En savoir plus sur l' arborescence et les conventions concernant les modèles

Helpers

Les helpers sont des ensembles de fonctions réunies par thème. On peut appeler des fonctions issues de helpers ainsi :

$errorsHelper = $this->getHelper('errors');
$errorsHelper->register_err(...);

Les helpers peuvent être appelés depuis un contrôleur, une vue, un modèle ou un autre helper.

En savoir plus sur l' arborescence et les conventions concernant les modèles

Fichiers de configuration

Les modules du site peuvent être configurés au moyen des fichiers etc/config.ini.

Il s'agit de fichiers définissant des [sections] contenant des couples clef=valeur

On peut accéder à la configuration ainsi définie en appelant :

$config = $this->getModuleConfig('nom_du_module');

Exemple

Prenons le fichier config.ini suivant :

[module_users]
send_account_confirmation=0 ; envoyer des emails de confirmation de creation de compte

On peut accéder à la configuration ainsi définie en appelant :

$config = $this->getModuleConfig('users');

/*
$config = array(
    'module_users' => array(
        'send_account_confirmation' => 0
    )
);
*/

Gestion des requêtes HTTP avec ClementineRequest

Les données de $_GET, $_POST, $_SESSION, $_COOKIE, ou $_REQUEST sont mises à disposition au travers d'un objet ClementineRequest.

Vous devriez utiliser cet objet plutôt que ces tableaux pour que votre code soit davantage réutilisable.

Clone this wiki locally