- Objectifs
- Un seul point d'entrée
- Des modules
- Forme des URL
- Les 3 composantes essentielles
- Et concrètement, où va t on ?
- module = admin
- group = log
- action = show
- Traitements de l'action
- Affichage
- Redirection
- Voir aussi
Objectifs
Ce document a pour but de vous présenter dans les grandes lignes comment Copix organise votre application.
Un seul point d'entrée
Comme vous l'avez sans doute constaté, Copix utilise un seul point d'entrée pour vos applications: index.php.
Ce fichier est le seul et unique fichier PHP que vous devez laisser accessible à l'utilisateur (dans le répertoire de publication de votre serveur web). Les autres fichiers n'ont pas à être publiés, ils seront automatiquement inclus par Copix.
L'avantage de ce système est que vous n'avez pas à vous soucier de ce qui pourrait bien se passer si un utilisateur malveillant voulait inclure directement un fichier autre, car ils ne sont tout simplement pas accessibles !
Ce point d'entrée inclus un ensemble de fichiers de configuration (notamment copix.inc.php) et instancie le ProjectController qui aura la charge, via sa méthode "process", de lancer l'application.
A partir de ce moment, Copix prend le relais et route la demande vers les objets capables de la prendre en charge.
Des modules
Si on vulgarisait à l'extrême le rôle de Copix, on pourrait dire qu'il tente de faire fonctionner au mieux un ensemble de modules développés sur un modèle commun.
Ce que l'on appelle un module dans Copix, c'est un ensemble de fichiers (classes, templates, actions, ressources) qui ont pour objectif de constituer un ensemble fonctionnel (un forum, un blog, un gestionnaire de brèves, un moteur de recherche, ...).
Forme des URL
Lorsque l'on effectue une demande à Copix, on le fait via un navigateur web, et donc sous la forme d'une URL.
Copix est capable de fonctionner avec plusieurs modes d'url. En standard, copix fonctionne en mode "prepend" pour générer des formes de type index.php/module/groupe/action plutot que index.php?module=module&group=groupe&action=action
Vous découvrirez plus tard qu'il vous est possible de demander à Copix de générer les URL telles que bon vous semble, mais restons sur le cas standard.
Les 3 composantes essentielles
Lorsque vous demandez une URL de la forme "index.php/admin/log/show", voyons ce qui se passe.
Les URL dans Copix sont des demandes d'Action. Elles décrivent via un trigramme les éléments suivants :
- Le module à utiliser
- L'ActionGroup à utiliser
- L'Action à exécuter
Ces paramètres sont simplement indiqués dans l'ordre d'apparition, donc dans notre cas :
- module => admin
- actiongroup => log
- action => show
Si nous avions utilisé le mode "none" dans la gestion des url, elle aurait eu cette apparence : index.php?module=admin&group=log&action=show
Note : Copix dispose de plusieurs librairies pour créer / analyser les URL pour vous, ainsi vous développez des modules compatibles avec tous les modes d'url possibles.
Et concrètement, où va t on ?
Nous avons donc cette url "index.php/admin/log/show" et nous savons à quoi elle correspond.
Maintenant, voyons concrètement ce que Copix va exécuter.
module = admin
Cela veut dire que Copix ira chercher l'ensemble des ressources dans le module "admin". Nous avons dit plus haut que Copix était capable de faire fonctionner des modules. Ici nous choisissons donc de faire fonctionner le module "admin".
Ce module est livré dans project/modules/stable/standard/admin
Note : Il est possible de configurer plusieurs répertoires où Copix ira chercher les modules, c'est une option de configuration (arModules) paramétrable dans copix.conf.php.
group = log
Cela demande à Copix d'utiliser un objet "groupe d'actions" nommé ActionGroupLog. On fait référence à ces objets via la désignation "les ActionGroups"
Cet ActionGroupLog devra être situé dans le module "admin" (car la demande concerne le module admin).
Le fichier de cet ActionGroup sera situé au chemin admin/actiongroups/log.actiongroup.php.
Dans ce fichier, il existera une classe nommée ActionGroupLog qui devra déclarer un ensemble d'Actions prises en charge par ce objet.
Exemple de déclaration de ce fichier :
/**
* Cet objet prend en charge les demandes de type module=admin&group=log ou index.php/admin/log
*/
class ActionGroupLog extends CopixActionGroup {
//...Contenu de l'objet
}
action = show
Le dernier paramètre "action" indique à Copix l'action à exécuter dans le groupe d'action log.
Les méthodes qui correspondent à des Actions dans les ActionGroup commencent par "process".
Ici, comme l'action demandée est "show" alors la méthode exécutée sera "processShow"
En résumé :
/**
* Cet objet prend en charge les demandes de type module=admin&group=log ou index.php/admin/log
*/
class ActionGroupLog extends CopixActionGroup {
//Cette méthode intercepte index.php/admin/log/show
public function processShow (){
//contenu
}
}
Traitements de l'action
Pour réaliser les traitements à faire dans votre action, vous avez complètement la main et faites en gros tout ce que vous voulez en PHP.
La seule contrainte sera, à la fin de vos traitements, d'indiquer à Copix la suite des opérations, à savoir pour 99% des cas : Affichage ou Redirection.
Affichage
Une demande d'affichage est effectuée via un code retour nommé PPO. PPO signifie "Plain PHP Object", donc un objet PHP tout ce qu'il y a de plus simple qui contiendra des données "prêtes" à être affichées.
Voyons un exemple où nous préparons des données prêtes à être affichées.
class ActionGroupLog extends CopixActionGroup {
public function processShow (){
//ici on peut effectuer tout un tas de traitements
$ppo = new CopixPPO ();//création d'un objet PPO vide
$ppo->monNom = 'Copix';//ajoute une donnée monNom destinée à être affichée
return _arPpo ($ppo, 'template_interieur.tpl');//indique le code retour PPO
}
}
et le template (situé dans templates/template_interieur.tpl)
<p>{$ppo->monNom} c'est trop bien !!</p>
Redirection
class ActionGroupLog extends CopixActionGroup {
public function processShow (){
//ici on peut effectuer tout un tas de traitements
return _arRedirect ('http://www.copix.org');//ici on demande à rediriger sur copix.org
}
}


