Le
framework Copix est basé sur un développement en 5
couches :
- La "Présentation" (c'est la page HTML
que le client reçoit, gérée par le client WEB)
-
La "Coordination"
- Les "Services"
- Le "Domaine" (c'est l'endroit où le moteur PHP dialogue avec
les Persistents par des requêtes)
- Les "Persistents" (ce sont les BBD, les annuaires LDAP, etc..)
Les deux seuls couches dont est responsable Copix sont les couches de Coordination
et de Service.
Le système de framework Copix
utilise un ensemble de petites briques qui coordonnent la mise en place des éléments
:
- desc (Coordination) : appelle les pages à traiter et les actions à utiliser
dans ces pages.
- pages (Coordination) : contient les fonctions nécessaires au traitement
de la page (récupération de données, affichage d'une template,
appelle d'une zone...). Ces fonctions font souvent appel à des classes
d'Objets Métier afin d'éviter la répétition de
certains traitements.
Les templates et les zones font également partie de la couche de Coordination, mais leur fonctionnement étant plus complexe, il est préférable de leur consacrer un chapitre.
Les zones sont les outils les plus adéquats pour modulariser l'affichage d'une page. En effet, si on veut utiliser régulièrement un menu ou un cadre de login, par exemple, on peut facilement créer une zone qui ira chercher les templates nécessaires à leur affichage. Ainsi la zone permet la création, une fois pour toute, d'une template affichant l'élément désiré (cette zone pourra être rappelée dans n'importe quelle page).
La template est le seul endroit
(à quelques exceptions près) où traiter l'affichage
HTML par un script qui peut être soit en PHP, soit en langage Smarty
car Copix utilise le moteur de templates Smarty.
On peut également y insérer des pages statiques.
Elle est appelée par les fonctions de page ou par les zones.
Les classes encapsulent les Objets
Métier . Elles font partie de la couche des Services.
Dans ces classes, il n'apparait que les fonctionnalités (méthodes
et fonctions) nécessaires à la bonne utilisation d'un Objet Métier.
Il n'y aura (presque) jamais de génération de code HTML dans
ces classes.
Copix distingue deux types d'Objets Métier :
- les standards appelés Objets Techniques qui se trouvent dans le répertoire utils/copix/utils.
Ce sont les objets distribués avec le framework et qui sont indispensables
pour Copix.
- les classes développées pour un projet précis qui se
trouvent dans project/classes. Ces classes
ne seront utilisées que pour le projet. Si on veut que ces classes servent à d'autres
projets, il faut les mettre dans utils/copix/utils afin
de les rendre accessibles à tous les projets (elles pourront ainsi être
suggérées comme nouvel Objet Technique à la distribution
de Copix).
Le module est une entité très
intéressante du framework car ce principe permet d'installer des fonctionnalités
indépendament de Copix.
En effet, dans le répertoire /modules,
il suffit d'installer un dossier correspondant au module qui aura été téléchargé ou
créé. Ce dossier contiendra ses propres fichiers page et de description,
ses propres classes, zones et templates.
Si le module a besoin d'autres objets que les Objets Techniques, le souci d'indépendance par rapport au framework Copix oblige le module à utiliser ses propres Objets Métier et non pas ceux du projet. Le module devient donc portable dans n'importe quel autre projet Copix.
Le plug-in est un système
beaucoup plus léger que le module. Il est représenté sous
la forme d'une classe dérivant de la classe CopixPlugin.
Afin de rendre le plug-in très maniable, ses Objets Métier typiques
- ainsi que tout le traitement nécessaire à son bon fonctionnement
- seront créés dans le plug-in-même et non pas dans le
dossier "classes" du projet.
Cependant rien n'empêche le plug-in de se servir des Objets Techniques.
A noter : le plug-in utilisé doit être déclaré dans
le fichier copix.conf.php du projet.
Les
frameworks étant par essence modulaires, l'effort pour la croissance
de ce dernier se fera surtout sur les modules et les
plug-ins.
Pour se faire une petite idée des capacités de Copix, nous devons
prendre en compte les classes, modules et
plug-ins déjà réalisés ainsi que les
possibilités ultérieures de développement.
- CopixDb (utils/copix/db):
Cette librairie est chargée de gérer les connexions avec les
bases de données (MySQL, PosgreSQL, Oracle, ...) comprenant récupération
de la connexion par défaut, test des erreurs de requête, compte
du nombre de champs, récupération du nom des champs, affichage
direct du résultat d'une requête, gestion des transactions.
Il existe aussi une classe WidgetSQL qui génère et exécute
les requêtes SQL.
Les classes suivantes se trouvent dans utils/copix/utils :
- CopixForms :
Elle gère la création des formulaires et génère
automatiquement les fonctions Javascript controlant la saisie des données
dans les champs.
- CopixBar :
Cette classe est très utile car elle automatise la création
d'une barre de défilement paramétrable afin d'automatiser la
mise en page de l'affichage de résultats très nombreux d'une
recherche.
- CopixDate :
Bibliothèque de formatage, manipulation et calcul sur les dates.
- CopixMailer :
Une classe qui s'occupe de l'envoi des mails. Elle est paramétrable
par le fichier de configuration du framework.
- CopixICalendar :
Cette classe génère un calendrier au format HTML. (nouvelles
fonctionnalités à venir dont notamment l'exportation au format
ICalendar)
- CopixUtils :
Cette classe englobe quelques fonctions diverses permettant surtout
de maitriser un affichage correct (remplacement des caractères accentués
par leur équivalent en anglais, traitement des URL, des e-mails, ..)
Les classes suivantes se situent dans utils/copix/core
- CopixCache :
Cette classe est un gestionnaire de cache qui permet au serveur de
ne pas avoir à regénérer du code HTML si le fichier php
n'a pas été modifié. Cette classe permet d'alléger
le flux des requêtes au serveur en cas de grosse sollicitation.
- CopixFileLocker :
Classe permettant de gérer la lecture/écriture concurente
dans les fichiers à l'aide d'un système de verrouillage. Cette
classe est utilisée dans le système de cache.
Les fonctionnalités développées par Aston actuellement disponibles en ligne sont :
- l'authentification sur 10 niveaux
(cette authentification se fait hiérarchiquement, i.e. un utilisateur
de niveau X a accès à toutes les pages de niveau X, X-1, X-2,
etc...). Cette fonctionnalité est fournie par le module "auth".
- débuggage (plug-in)
La modularité de Copix permet à tout projet d'utiliser sa propre skin et même d'en changer au cours de la navigation. En effet, la génération de la présentation étant concentrée dans les templates, il suffit de changer de template comme de chemise pour modifier l'apparence du site.
Les possibilités
liées au fait que tout le framework est programmé en PHP, permettent
de croire que Copix n'est limité qu'aux limites elles-mêmes
de PHP 4 pour l'instant et au limites de PHP5 quand il sera finalisé.
Ainsi Copix bénéficie de toutes les fonctions de PHP telles que
l'exportation de fichiers de différents formats (XML, PDF, ...) ou encore
l'utilisation d'un système de paiement sécurisé (CyberMut
par exemple).
Bien sûr, même si Copix est portable, la seule façon de
visualiser les applications développées est d'utiliser un client
web.