Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
developpement_de_phpcompta [2014/03/22 16:05]
dany [Ancienne méthode (non recommandée)]
developpement_de_phpcompta [2017/03/02 09:32] (Version actuelle)
dany [Les tests unitaires]
Ligne 128: Ligne 128:
 J'​utilise Doxygen afin de générer le code ce sont les TAGS brief, param... Cela me permet de générer une documentation;​ cette documentation me permet de développer plus vite et de mieux vérifier la qualité du code. J'​utilise Doxygen afin de générer le code ce sont les TAGS brief, param... Cela me permet de générer une documentation;​ cette documentation me permet de développer plus vite et de mieux vérifier la qualité du code.
  
 +Voir le résultat ici [[http://​www.noalyss.eu/​doc/​]]
 ====PhpCompta==== ====PhpCompta====
  
Ligne 159: Ligne 159:
  
 [[developpement:​base_de_donnée_ancienne_méthode]] [[developpement:​base_de_donnée_ancienne_méthode]]
-====Nouvelle méthode====+ 
 +==== Les mises à jour ==== 
 +Depuis 2005, dans phpcompta, il y a une table VERSION qui contient le numéro du dernier patch appliqué. Quand le fichier do.php est exécuté, il vérifie si le nombre DBVERSION contenu dans constant.php correspond à la version actuelle 
 + 
 +<code php> 
 +/* Ficher do.php */ 
 +if (DBVERSION < dossier::​get_version($cn)) 
 +
 +    echo '<​h2 class="​error"​ style="​font-size:​12px">'​ . 
 +     ​_("​Attention:​ la version de base de donnée est supérieure à la version du programme, vous devriez 
 + ​mettre à jour") . '</​h2>';​ 
 +
 +if (DBVERSION > dossier::​get_version($cn)) 
 +
 +    echo '<​h2 class="​error"​ style="​font-size:​12px">'​ . _("​Votre base de données n'est pas à jour") . ' ​  ';​ 
 +    $a = _("​cliquez ici pour appliquer le patch"​);​ 
 +    $base = dirname($_SERVER['​REQUEST_URI'​]) . '/​admin/​setup.php';​ 
 +    echo '<a hreF="'​ . $base . '">'​ . $a . '</​a></​h2>';​ 
 +
 + 
 + 
 +</​code>​ 
 + 
 +Dans le cas où DBVERSION n'est pas la valeur contenue dans la base de donnée, do.php vous propose d'​appliquer le patch sur vos bases de données. Voici la fonction qui applique les patch SQL pour la base de données 
 +<code php> 
 +/* fichier setup.php */ 
 +//​---------------------------------------------------------------------- 
 +// Upgrade the folders 
 +//​---------------------------------------------------------------------- 
 + 
 +for ($e=0;$e < $MaxDossier;​$e++) { 
 +   ​$db_row=Database::​fetch_array($Resdossier,​$e);​ 
 +  echo "<​h3>​Patching "​.$db_row['​dos_name'​].'</​h3>';​ 
 + 
 +  $name=$cn->​format_name($db_row['​dos_id'​],'​dos'​);​ 
 + 
 +  if ( $cn->​exist_database($name)>​ 0 ) 
 +  { 
 +    $db=new Database($db_row['​dos_id'​],'​dos'​);​ 
 +    $db->​apply_patch($db_row['​dos_name'​]);​ 
 +    Dossier::​synchro_admin($db_row['​dos_id'​]);​ 
 + 
 +  } else 
 +  { 
 +      echo_warning(_("​Dossier inexistant"​)."​ $name"​);​ 
 +  } 
 + } 
 + 
 +</​code>​ 
 + 
 +La fonction qui applique le patch est Database::​apply_patch ​ voir [[http://​www.phpcompta.eu/​doc/​classDatabase.html|la documentation en ligne]] 
 + 
 + 
 +Tous les patchs pour la base de données se trouve dans phpcompta/​html/​admin/​sql/​patch et sont numérotés dans l'​ordre d’exécution. 
 +Chaque patch commence par  
 +<code sql> 
 +begin; 
 +</​code>​ 
 + 
 +et termine par 
 +<code sql> 
 +update version set val=13; 
 + 
 +commit; 
 +</​code>​ 
 + 
 +Ainsi, si le script échoue, la mise à jour s'​arrête et annule toute ce qui a été fait dans le script contenant l'​erreur,​ la base de données reste ainsi dans un état cohérent. Une fois l'​erreur corrigée dans votre base de données, ce script ainsi que ceux qui suivent seront appliqués quand vous appelerez à nouveau phpcompta/​admin/​setup.php 
 + 
 +====Accèder aux données : DAO ====
  
  
  
-Nous avons créér une classe Phpcompta_Sql qui va nous permettre de faire la même chose en très peu de ligne de code. +Nous avons créér une classe ​qui va hériter de [[http://​www.phpcompta.eu/​doc/​classPhpcompta__SQL.html|Phpcompta_Sql]] et qui va nous permettre de faire la même chose en très peu de ligne de code. 
  
  
Ligne 231: Ligne 299:
 </​code>​ </​code>​
 Si on change la structure d'une table, il ne faut presque rien changer : seulement quelques lignes. ​ Si on change la structure d'une table, il ne faut presque rien changer : seulement quelques lignes. ​
 +===== Les tests unitaires =====
 +Avant on utilisait dans chaque class , une fonction nommée [[developpemement::​test_me]] qui pouvait être appelée depuis le fichier test.php.
 +
 +A partir de NOALYSS (version 6.7.2.0), et pour les plugins nous utiliserons PHPUnit.Ces tests sont heureusement appelables directement depuis NetBeans (version 7.4 et supérieure).
  
 +Il faut tout d'​abord un fichier bootstrap qui contient le path correct pour php ainsi que les variables comme $g_user ou $cn, l'​inclusion de [[:​config.inc.php]] et de constant.php
 + 
  
  • developpement_de_phpcompta.1395500701.txt.gz
  • Dernière modification: 2014/03/22 16:05
  • par dany