Module hello world

De Cms Made Simple France
Aller à : navigation, rechercher

Hello world

Première chose que tout développeur va tenter de faire après avoir lu un tutorial : tester celui ci pour s'assurer que ça marche chez lui  et quoi de mieux que de faire un hello world pour cela ? :)

Voici quelques exemples de code que vous pouvez facilement placer chez vous pour vous assurer que votre module démarre correctement.

Nous appelons notre projet CmsModuleCleaner


Hello World depuis l'administration

Créer un panneau d'administration réservé à son module ne nécessite pas beaucoup de code.

Modifier le fichier ./modules/CmsModuleCleaner/CmsModuleCleaner.module.php précédemment créé. Remplacez y les deux fonctions

function HasAdmin()
 {
 return false;
 }
[..]

function VisibleToAdminUser()

 {
 return false;
 }

par ce nouveau code :

function HasAdmin()
 {
 return true;
 }
[..] 

function VisibleToAdminUser()

 {
 return true;
 }

Sans gestion du gabarit

Créez dans le répertoire de votre module le fichier ./modules/CmsModuleCleaner/action.defaultadmin.php et écrivez dedans :

<?php echo "hello world"; ?>

Enregistrez votre fichier et allez sur l'admin de votre site constater qu'un nouveau menu apparait dans la section "Extension"

Erreur lors de la création de la miniature : Fichier manquant
Je n'ai pas fini de remplir cette page, je reprends plus tard
>bess.

Avec gestion du gabarit

La gestion d'un "hello world" avec les templates est un peu plus longue.

Modifiez votre fichier ./modules/CmsModuleCleaner/action.defaultadmin.php pour y écrire dedans

<?php 
cmsms()->getSmarty()->assign("variable","hello world"); 
$this->processTemplate('montemplate.tpl')
?>

Créez le fichier ./modules/CmsModuleCleaner/templates/montemplate.tpl et écrivez dedans

<p>Ceci est du code <b>HTML</b> avec des variables php insérées dedans, par exemple : <i>$variable</i></p>

Retourner sur l'administration de votre module et vous constaterez que toute la chaine est interprétée

Erreur lors de la création de la miniature : Fichier manquant
Je n'ai pas fini de remplir cette page, je reprends plus tard
>bess.

Les Best-Practices

Nous venons de voir deux solutions pour afficher du texte dans l'administration de votre module. Faisons le point

la méthode echo ""; est

  • + plus rapide a écrire
  • + moins consommatrice de code
  • - ne permet pas d'écrire de l'HTML sans devoir le parser correctement ce qui induit des erreurs plus fréquentes
  • - peut devenir difficilement maintenable lorsqu'un module atteint une taille moyenne
Sys Info.png
Pour information, voici un exemple de parsing : echo 'voici l\'histoire de paf le chien \\o/' qui donne en sortie voici l'histoire de paf le chien \o/. On comprend rapidement les soucis de maintenance d'un code composé uniquement de echo


la méthode des templates (utilisation de smarty)

  • - est plus couteuse en temps initial de développement
  • - prend plus de place
  • + écarte tout les soucis relatif au parsing du code dans php
  • + permet de différencier le métier de la présentation dans un module, ce qui réduit le champs de travail lors d'une maintenance
  • + permet de profiter de la gestion de la mise en cache de smarty, ce qui réduit sensiblement le temps d'exécution de vos gros programmes

En résumé il parait évident qu'il faut adopter la seconde solution pour la création de vos modules !

Ne surtout pas faire

Il existes d'autres façon de (mal) faire pour un même résultat. Ainsi certains contournent le soucis de parsing en écrivant le code ainsi dans le fichier ./modules/CmsModuleCleaner/action.defaultadmin.php :

<?php 
$variable = "hello world";
<<<EOT 
     <p>Ceci est du code <b>HTML</b> avec des variables php insérées dedans, par exemple : <i>$variable</i></p>
EOT;
?>

Cette méthode, appelée syntaxe heredoc, a au moins le mérite de supprimer le soucis du parsing de l'HTML. Mais par contre elle va continuer de mélanger la partie métier et la partie présentation de votre module (et donc augmente le temps pour un développeur pour revenir sur son code 6 mois après sa création). De plus la syntaxe heredoc est relativement peu connue par les novices en php et lourde en contrainte ce qui en fait une barrière lors de la reprise d'un code par un Tiers.

Ce n'est donc pas une bonne méthode

Allez une dernière ? figurez vous que d'autres développeurs ont encore trouvé pire...

<?php 
$variable = "hello world";
?>
     <p>Ceci est du code <b>HTML</b> avec des variables php insérées dedans, par exemple : <i>
<?php
echo $variable;
?>
</i></p> 
<?php 
 //suite du code
?>

magique hein... Inutile de dire que ce code est une catastrophe...

Hello World depuis la partie public du site

Erreur lors de la création de la miniature : Fichier manquant
Je n'ai pas fini de remplir cette page, je reprends plus tard
>bess.

Déjà finit...

Voilà pour cette partie, vous savez maintenant comment fonctionne concrètement un module très simplifié

Retourner sur la liste des tutoriaux