Compte-rendu de la formation Copix

Les principes de base de Copix
  Les briques de Copix
  Les Zones
  Les templates
  Les classes
  Les modules
  Les plug-in
La bibliothèque de base de Copix
  Les fonctionnalités
  Les outils à notre disposition pour le développement
  Les possibilités liées au PHP4

 

Les principes de base de Copix

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.

Les briques de Copix

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.

haut de page

Les Zones

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).

haut de page

Les Templates

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.

haut de page

Les Classes

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).

haut de page

Les Modules

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.

haut de page

Les Plug-in

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.

haut de page

La bibliothèque de base de Copix

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.

Les outils à disposition (les classes)

- 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.

haut de page

Les fonctionnalités déjà existantes (plug-ins et modules)

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)

haut de page

Les possibilités

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.

haut de page