Joomla! Platform : Implémenter ma 1ere Joomla! Application autonome
-
Document typeTutoriel PHP
-
NiveauDébutant
-
Version Joomla1.7.x
-
Dernière modification29.11.11
-
Version PHP5.x
-
Créé parGarstud
-
Les tweets commencent a s'agiter autour du fil #jplatform . Ce fil twitter a été créé en vue de communiquer et d'echanger autour des applications et des developpements qui vont naitre grace à la Joomla! Platform. Nous parlons bien d'Applications, pas de composants, modules ou plugins qui sont eux des programmes spécifiquent qui necessitent d'etre installés sur un Joomla! CMS.
Une Joomla! Application est un programme qui tourne donc sans le Joomla! CMS, elle ne nécessite que la Joomla! Platform (le framework) pour tourner, elle est donc autonome (dans le sens ou elle n'a pas besoin du Joomla! CMS).
Nous vous annoncions dernierement la sortie de la J!Platform 11.2.
Voici un tutoriel qui vous présente une 1ere approche minimaliste de ce que l'on peut faire avec la J!Platform.
Cet article introduit le 1er niveau d'utilisation de la J!Platform.
Nous avons choisi de vous présenter les étapes de réalisation d'un script simple mais utilisant les objets du framework.
Commencons par cette 1ere phase qui devrait vous prendre entre 30mn et 1h ... la creation d'un script PHP en ligne de commande.
Les étapes d'initialisation de la J!Platform pour ma J!Application
- Etape 1: Téléchargez la v11.2 de la Joomla! Platform (cliquez sur le gros bouton "Downloads" à droite)
(cet article a été testé avec la v11.2 ! la version 11.1 ne semble pas fonctionnelle pour une application CLI autonome)
- Etape 2: Créez un dossier sur votre ordinateur qui contiendra votre application, par exemple : /appcmd
- Etape 3: Dézippez le ZIP téléchargé et enregistrez le contenu (dossier /libraries notamment) dans votre dossier d'application
- Etape 4 : Récupérez le dossier /includes dans un Joomla 1.7.0 et copiez le aussi dans votre dossier
- Etape 5 : Créez un fichier configuration.php dans votre dossier avec le code :
| configuration.php minimaliste | |
1 2 3 4 5 |
<?php class JConfig { public $sitename = 'Mon AppCmd'; } ?> |
la variable de configuration sitename est volontaire car nous l'utiliserons plus loin dans ce tutoriel.
- Etape 6 : créer un fichier appcmd.php avec le code
| script appcmd.php | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php define( '_JEXEC', 1 ); define('JPATH_BASE', dirname(__FILE__)); // chargements necessaires require_once ( 'libraries/import.php' ); jimport( 'joomla.application.cli' ); class FirstCliApp extends JCli { public function execute( ) { $this->out( "Execution d'une app JCli basée sur la Joomla! Platform !"); } } $cmdli = JCli::getInstance('FirstCliApp'); $cmdli->execute( ); ?> |
Ce script charge dans les 6 premieres lignes tout ce qu'il faut pour cette application Cli :
- la Joomla! Platform en ligne 5
- l'import de la classe mère JCli en ligne 6
Notre Classe FirstAppCli hérite de la classe JCli (classe mère pour toutes les applications en ligne de commande).
La méthode execute() correspond au rendu de l'application. Elle utilise notamment la methode out() pour afficher des données sur le flux STDOUT (ici c'est votre écran !)
Enfin, en dehors de notre classe, notre application est d'abord instanciée par notre classe mère JCli, puis executée.
L'arborescence de votre dossier d'application doit correspondre au resultat ci-dessous :
/appcmd
- /includes
- /libraries
- appcmd.php
- configuration.php
- Etape 7 : pour éxecuter votre application :
- Ouvrez une ligne de commande (un "commande DOS" sous Windows ou un "Terminal" sous Linux)
- Allez vous positionner dans le bon dossier, exemple : cd /home/garstud/Dev/Joomla/appcmd
- Executez l'interpreteur PHP en lui passant en parametre le nom de votre script php en éxecutant : php appcmd.php
![]()
Enrichir notre application en utilisant les objets du Framework
Bravo ! si vous êtes arrivé jusque là, c'est que vous êtes sur la bonne voie ;)
Les étapes suivantes nécessitent de comprendre un peu plus la Programmation Objet du framework Joomla!, mais si vous ne maitrisez pas la Programmation Orientée Objet (POO), vous devriez tout de même arriver au résultat final en suivant rigoureusement les étapes ... bonne chance !
- Etape 8 : nous allons ajouter l'implémentation de plusieurs objets du framework. Ces 6 etapes peuvent etre rajoutées une par une pour vérifier que tout va bien ;)
- en ligne 9 et 10, nous ajoutons le script des constantes et la classe qui fournit la version du Joomla! CMS
- en ligne 18-20, ajout de l'affichage de la version du Joomla! CMS (affichage du code "Check1")
- en ligne 23-25, ajout de l'affichage de la version de la Joomla! Platform (affichage du code "Check2")
- en ligne 28-30, ajout de l'accès à la configuration Joomla (voir fichier configuration.php) (affichage du code "Check3")
- en ligne 33, ajout de l'affichage d'une constante du Joomla! CMS (affichage du code "Check4")
- en ligne 36-37, utilisation de l'objet JFactory (affichage du code "Check5")
| Complément d'Objets du Framework pour appcmd.php | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<?php define( '_JEXEC', 1 ); define('JPATH_BASE', dirname(__FILE__)); // chargements necessaires require_once ( 'libraries/import.php' ); jimport( 'joomla.application.cli' ); // chargement des includes pour des besoins spécifiques require_once ( 'includes/defines.php' ); require_once ( 'includes/version.php' ); class FirstCliApp extends JCli { public function execute( ) { $this->out( "Execution d'une app JCli basée sur la Joomla! Platform !"); //recuperation de la version Joomla! CMS (/includes) $version =& new JVersion; $long_version = $version->getLongVersion(); $this->out( 'Check 1 : '. $long_version); //recuperation de la version Joomla $pltf =& new JPlatform; $pltf_long_version = $pltf->getLongVersion(); $this->out( 'Check 2 : '. $pltf_long_version); // acces a la configuration $this->out( '- Acces a la configuration, aux constantes et a la Fabrique -'); $jconfig = new JConfig(); $this->out( 'Check 3 : param de config : nom de la J!App = '.$jconfig->sitename); // constantes $this->out( 'Check 4 : chemin du dossier JPATH_LIBRARIES = '.JPATH_LIBRARIES ); // manipulation de dates via la Factory $curDate = & JFactory::getDate(); $this->out( 'Check 5 : date = '.$curDate->toFormat().' , date RFC = '.$curDate->toRFC822() ); } } $cmdli = JCli::getInstance('FirstCliApp'); $cmdli->execute( ); ?> |
- Etape 9 : Ré-éxecutez votre application (comme à l'étape 7), pour avoir le rendu ci-dessous :

Exemple d'implémentation : Twitter
Pour aller plus loin, sachez que des développeurs, lors du JoomlaDay de Chicago (les 5 et 6 aout) ont participé à un atelier de développement de plusieurs applications CLI.
Par exemple, lors de cet atelier, il a notamment été créé en 45mn Chrono ... un client Twitter pour récupérer les tweets d'un compte Twitter (en moins de 200 lignes de code PHP)
Lien source script twitter.php : https://gist.github.com/1129717
Astuce : téléchargez le fichier twitter.php et copiez le dans le meme dossier que votre appcmd.php pour profiter de l'environnement J!Plateform déja en place !
Executez l'application avec la commande "php twitter.php". L'application vous demande le nom du compte twitter, puis le nombre de tweet a récupérer :
Et après ...
Et maintenant, que faire ?
A Chicago, quand quelqu'un a posé la question a Louis Landry de ce que l'on pouvait bien faire comme application avec cette J!Platform, celui ci a simplement répondu : "Tout ce qui vous démange !"
Les limites sont donc du coté de l'imagination, ... et on imagine bien que de nombreux scripts techniques nécessitant des accès web et distants peuvent être rapidement, avec fiabilité et sécurité, développés en utilisant la classe d'applications CLI de Joomla! Platform.
Donc allez-y et tenez nous au courant de vos avancées sur ce fil de forum dédié !
-
Lien démo / exemple
-
-
Catégories





2.5
12.x
Commentaires
Merci,
Dave, l'envie !
Merci,
Dave, l'envie !
Maintenant, je m'adresse à Garstud : à part pour bénéficier de toFormat(), est-ce nécessaire d'aller chercher les libraries dans le CMS plutôt que d'utiliser celles de J!Plateform ?
La méthode toFormat est non trouvée alors que ça marche si on met seulement toRFC822() ????
S’abonner au flux RSS pour les commentaires de cet article.
Ajouter un Commentaire