Sponsor du Joomladay 2014

Créer un PDF Recommander Imprimer

Joomla! Platform : Implémenter ma 1ere Joomla! Application autonome

(9 votes)
  • Document type
    Tutoriel PHP
  • Niveau
    Débutant
  • Version Joomla
    1.7.x
  • Dernière modification
    29.11.11
  • Version PHP
    5.x
  • Créé par
    Garstud

cli-appcmd_logoLes 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 :
    1. Ouvrez une ligne de commande (un "commande DOS" sous Windows ou un "Terminal" sous Linux)
    2. Allez vous positionner dans le bon dossier, exemple  : cd /home/garstud/Dev/Joomla/appcmd
    3. Executez l'interpreteur PHP en lui passant en parametre le nom de votre script php en éxecutant : php appcmd.php

       

      cli-appcmd1

      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 :

      cli-appcmd2

       

      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 :
      cli-twitter 

      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é !

      Commentaires  

       
      #7 25-04-2012 19:09
      Slt, c'est cool pour le CLI mais c'est le mode ligne de commande, si on pouvait avoir une version en mode web dans un navigateur ça serait cool, j'ai concoter un truc... mais ça bug encore, quelqu'un a-t-il une idée ?

      Merci,
      Dave, l'envie !
      Citer
       
       
      #6 25-04-2012 18:38
      Slt, c'est cool pour le CLI mais c'est le mode ligne de commande, si on pouvait avoir une version en mode web dans un navigateur ça serait cool, j'ai concoter un truc... mais ça bug encore, quelqu'un a-t-il une idée ?

      Merci,
      Dave, l'envie !
      Citer
       
       
      #5 21-02-2012 12:40
      rien à commenter seulement télécharger ce tutorial
      Citer
       
       
      #4 17-02-2012 00:29
      Enfin (ce sera mon dernier commentaire), j'ai trouvé pourquoi cette erreur nous est retournée : JDate::toFormat () est dépréciée depuis la version 1.6 (http://docs.joomla.org/What%27s_new_in_Joomla_1.6). Il faut utiliser JDate::format () à la place (passer le format en paramètre).
      Citer
       
       
      #3 16-02-2012 23:59
      Correction suite à mon message précédent : il fallait lire "et pas celui du CMS" (dommage de ne pas pouvoir éditer les commentaires dont on est l'auteur).
      Citer
       
       
      #2 16-02-2012 23:57
      Pour répondre à Frédéric, et parce que j'ai rencontré le même problème : la méthode JDate::toFormat n'est pas trouvée parce que tu as copié le dossier libraries issu de Joomla! Platform, et celui du CMS.
      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 ?
      Citer
       
       
      #1 29-01-2012 19:55
      Fatal error: Call to undefined method JDate::toFormat () in /Users/fred/Desktop/appcmd/appcmd.php on line 38

      La méthode toFormat est non trouvée alors que ça marche si on met seulement toRFC822() ????
      Citer
       

      Ajouter un Commentaire


      Code de sécurité
      Rafraîchir

      Recherche

      Télécharger Joomla

       
      Dernière version : 2.5
      Pour les développeurs : 12.x
      Nouvelle version en développement : 3.2

      Connexion

      Espace contributeurs