Copix
1152821
27404373
2008-03-16T00:03:16Z
81.192.250.173
/* CopixI18N */
{{Infobox Logiciel
| nom = Copix
| image =
| description =
| développeur = [http://www.copix.org/index.php/wiki/Copix_Team CopixTeam]
| dernière version = 3.0.2
| date de dernière version = {{Date|26|décembre|2007}}
| environnement = Multiplate-forme
| type = [[framework|Framework (cadre d'applications)]]
| licence = [[Licence publique générale limitée GNU|GNU LGPL]]
| site web = [http://www.copix.org/ www.copix.org]
}}
'''Copix''' est un [[framework]] pour le langage [[PHP: Hypertext Preprocessor|PHP]]. Il est construit en cinq couches, repose entièrement sur la [[programmation orientée objet]] et vise à prendre en charge le développement de tous types d'applications, des plus simples aux plus complexes. Il est distribué sous la licence [[GNU LGPL]]. Le [[système de gestion de contenu]] ''CopixCMS'' a été écrit avec Copix.
==Les cinq couches de Copix==
# '''coordination''' : analyse des requêtes, lancement des processus généraux et exécution des actions (via les ''services'') ;
# '''services''' : appel aux objets spécialisés ''domaines'', récupération et formatage des données ;
# '''domaines''' : ce sont les objets et fabriques métiers qui accèdent aux données en utilisant la couche persistance ;
# '''persistance''' : cette couche dialogue directement avec le système pour accèder aux bases de données, fichiers, annuaires LDAP, réseaux, ... ;
# '''présentation''' : traitements de présentation ([[template]]s, génération du code HTML).
==Installation==
Les prérequis :
* Depuis la version 3.0 alpha 1 : '''PHP 5'''
* Versions antérieures à la 3.0 alpha 1 '''PHP 4''' : il est conseillé d'utiliser une version supérieure à PHP 4.3 pour profiter de toutes les fonctionnalités de Copix, PHP doit avoir été compilé avec l'option ''libxml'' activée ;
* une '''base de donnée''' : Copix peut fonctionner sans, mais l'installation par défaut en demande une ; les bases de données reconnues sont (depuis Copix 2.2) : [[MySQL]], [[Oracle (base de données)|Oracle]], [[ODBC]], [[PostgreSQL]], [[SQLite]], [[Microsoft SQL Server]] ;
* un serveur web : [[Apache HTTP Server|Apache]] ou [[Internet Information Services|Microsoft IIS]].
* [[PHPUnit]] pour effectuer les test unitaires ainsi que [[Xdebug]] pour faire du code coverage.
===Configuration de PHP===
Les options suivantes du fichier ''php.ini'' sont conseillées, mais Copix marchera quelles que soient leurs valeurs. L'option la plus importante étant ''magic_quotes_gpc'' qui doit être de préférence ''off'' : si ce n'est pas possible (par exemple, accès impossible au fichier ''php.ini''), le plugin Copix ''MagicQuotes'' annulera l'échappement des chaînes d'entrée.
magic_quote_gpc = off
# ces 3 paramètres sont utiles si vous utilisez la session
Session.use_cookies = 1
Session_autostart = 0
Session.save_handler = files
# pour des raisons de sécurité
register_globals = Off
# pour plus de sécurité
display_errors = Off
file_uploads = Off # si vous ne faites pas d'upload de fichier
allow_url_fopen = Off
session.save_path = répertoire accessible uniquement par PHP (écriture et lecture)
===Configuration de Copix===
[[image:Copix_2_3_5_installation.png|thumb|250px|right|Page d'installation de Copix 2.3.5]]
* Dupliquer les répertoires de l'archive de Copix dans le répertoire web : ''project/'', ''temp/'', ''utils/'', ''var/'' et ''www/'' pour Copix 2.3.5 ;
* donner les droits de lecture au serveur web pour tous ces répertoires et leur contenu ;
* donner les droits d'écriture pour le répertoire ''temp/''.
Si tout a été configuré correctement, une page de Copix s'affiche, proposant la configuration d'une base de donnée.
===Configuration du serveur web===
Le serveur web doit pointer sur le répertoire Copix ''www/'', qui contient ''index.php''.
==Fonctionnement d'une application==
Un object Copix peut se trouver à deux niveaux distincts :
* au niveau du '''projet''', dans le répertoire ''project/'' ;
* dans un '''module''', répertoire ''project/modules/NomDuModule/'' : un module est en général autonome et peut être copié directement dans un autre projet pour être utilisé immédiatement.
Un objet Copix, qu'il soit au niveau du projet ou dans un module, nécessite trois éléments pour fonctionner :
* des '''objets''' '''''CopixActionGroup''''' qui implémentent les actions sous forme de méthodes d'une classe héritant de ''CopixActionGroup'', chaque action correspond généralement à une URL ;
* des '''fichiers de description''' d'actions ou fichiers ''desc'' qui listent les actions possibles ou autorisées, sous forme de déclarations de variables instanciant chacune un objet ''CopixAction'' : le nom de la variable correspond au nom de l'action ; Depuis la version 3, ces fichiers ne sont plus nécessaire.
* des '''templates''' pour afficher les pages.
==Exemple==
Cet exemple minimal utilise le template par défaut ''project/templates/main.tpl'' spécifié par le code retour ''COPIX_AR_DISPLAY''.
===Création d'un module===
Un module minimal nécessite la création de deux fichiers :
* une classe qui hérite de l'objet ''ActionGroup'' :
<pre>
<?php
class ActionGroupTutorial extends CopixActionGroup
{
function getSimpleHelloYou ()
{
$tpl = new CopixTpl();
$tpl->assign('MAIN', 'Hello You !');
return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
}
}
?>
</pre>
ce fichier, appelé ''tutorial.actiongroup.php'' est à mettre dans le répertoire ''actiongroup/'' d'un module : ''project/modules/tutorial/actiongroup/''.
* un fichier de description :
<pre>
<?php
$hello = & new CopixAction ('Tutorial', 'getSimpleHelloYou');
?>
</pre>
ce fichier, appelé ''default.desc.php'' est à mettre dans le répertoire ''desc/'' du module : ''project/modules/tutorial/desc/''.
L'appel de la page qui affichera le message ''Hello You !'' sera alors :
'''index.php?action=hello&module=tutorial'''
===Création au niveau du projet===
Le même objet peut être installé au niveau du projet :
* le fichier ''tutorial.actiongroup.php'' sera dans le répertoire ''project/actiongroup'' ;
* le contenu du fichier ''default.desc.php'' ajouté à celui qui existe : ''project/desc/default.desc.php'' ;
* l'URL de la page sera simplement :
'''index.php?action=hello'''
==Les principaux objets Copix==
===CopixCoordination===
===CopixAction===
===CopixZone===
Une ''Zone'' Copix représente une portion du contenu qui sera affichée dans un écran. Les zones sont appelées par les ''Actions'' Copix qui leur délèguent une partie du travail. L'utilisation de zones n'est pas obligatoire mais simplifie le développement en séparant clairement les parties d'affichage dynamique. De plus, les zones Copix gèrent nativement un cache de contenu.
===CopixDB===
===CopixDAO===
CopixDAO est une couche d'abstraction des bases de données utilisant comme définition un fichier XML. Ce fichier contient les données de connexion, la description des tables et de leurs champs, et optionnellement :
* des méthodes d'accès supplémentaires (en plus des méthodes standard qui sont : ''get'', ''insert'', ''update'', ''delete'', findAll'' et ''findBy'') ;
* des méthodes écrites en PHP qui feront partie de l'objet concret CopixDAO correspondant.
La version 3 de Copix, vous permet egalement d'utiliser des DAO Automatiques. Ces DAO automatiques sont automatiquement généré depuis les champs de la table demandé a la DAO.
Le nom « DAO » vient du motif de conception utilisé : ''Data Access Object'', un motif courant pour les accès aux bases de données. CopixDAO prend en charge la construction des requêtes SQL (sauf les plus complexes) ainsi que les problèmes de sécurité (e.g. les [[injection SQL|injections SQL]]).
===CopixI18N===
ce module permet l'internalisation des mnémonics du framework selon le language du site à utiliser
==Histoire==
Copix est né des applications réalisées par la [[SSII]] ''Aston'' absorbée en 2005 par la société ''SQLI''. Le nom « Copix » ne signifie rien en particulier.
Aujourd'hui Copix est un framework dynamique, car il intègre une équipe de plusieurs développeurs d'univers professionnels différents avec des attentes différentes.
==Voir aussi==
* [http://www.copix.org/ Site du framework Copix]
* [http://wiki.copix.org/ Le Wiki Copix]
* [http://svn.copix.org/ Site de suivi du projet Copix]
[[Catégorie:PHP]]
[[Catégorie:Logiciel libre pour Internet]]
{{Portail logiciels libres}}