Utilité de "global" en haut d'un fichier PHP

Utilité de "global" en haut d'un fichier PHP - PHP - Programmation

Marsh Posté le 24-06-2008 à 15:34:28    

Bonjour, après quelques recherches à propos du global de PHP dont je connais le fonctionnement.
Au risque de passer pour un neuneu, je vous pose cette question quand meme : je voudrais connaitre s'il y avait une utilité de mettre des  

global $truc, $machin;


tout en haut de fichiers inclus en PHP, qu'ils soient inclus a partir de fonctions, classes ou globalement.
 
Merci à vous !!

Reply

Marsh Posté le 24-06-2008 à 15:34:28   

Reply

Marsh Posté le 24-06-2008 à 15:36:49    

Code :
  1. require_once('config.inc.php');
  2.  
  3. echo " $maVariableGlobale"; // affiche la valeur de la variable
  4.  
  5. function failed(){
  6. echo " $maVariableGlobale";   //n'affiche rien
  7. }
  8.  
  9. function success(){
  10. global $maVariableGlobale;
  11. echo " $maVariableGlobale";   //fonctionne
  12. }


---------------

Reply

Marsh Posté le 24-06-2008 à 15:39:01    

Merci, je connais le principe  :D  
C'est juste que la je bosse sur un gros projet en PHP, avec des global un peu partout, qu'on essaie d'enlever au fur et a mesure, et il semble que dans certains fichiers, ils soit necessaire de declarer des variables "global" au debut du fichier, je voudrais savoir pourquoi, vu qu'on n'est pas dans le scope d'une fonction (ou classe)

Reply

Marsh Posté le 24-06-2008 à 19:05:50    

Bon bah en fait, le fait d'inclure un fichier fait qu'on doit mettre les variables globales avec le mot clé "global" si on veut les utiliser à l'interieur de celui-ci.
Ce qu'on fait maintenant pour eviter les global, on les met dans des classes, en static, normalement c'est plus rapide.

Reply

Marsh Posté le 24-06-2008 à 20:31:15    

Generalement, quand il commence à y avoir beaucoup de données "globales", c'est que l'application a été mal conçue.
Rien de mieux que Wikipedia pour expliquer les erreurs de conception les plus courantes à éviter absolument :
http://fr.wikipedia.org/wiki/Antipattern
(cf partie Action à distance)

Reply

Marsh Posté le 24-06-2008 à 20:40:28    

L'application etait a l'origine basée sur dotProject, s'en est totalement ecarté, mais c'etait a l'époque du PHP4, donc le coté objet etait pas trop sollicité. On tend a rendre l'appli plus propre.  
L'appli est bien conçue, sinon, mais quand je suis arrivé sur le projet, ça m'a limite filé des boutons, tous ces global partout.
Ce qui ya, c'est que c'est un logiciel de gestion de presque tous les aspects de cliniques medicales, en gros. Et changer des choses est assez critique, alors on y va petit a petit, j'ai deja fait enormement de refactoring sur ce projet, en un peu moins de 5 mois, j'ai changé pratiquement 40000 lignes de code, et pour la plupart c'est de l'optimisation du genre virer des global.

Reply

Marsh Posté le 26-06-2008 à 17:19:46    

Je pense qu'il y a un moment où il faut tout refaire, garder du code existant et le modifier à outrance ne donne jamais rien de bon :D

Reply

Marsh Posté le 26-06-2008 à 19:49:53    

Je crois aussi, mais avec 250000 lignes de code à 4 développeurs, faut en vouloir :D

Reply

Marsh Posté le 27-06-2008 à 12:05:54    

Mouarf c'est pas en nombre de lignes qu'il faut compter, mais en fonctionnalités à recoder proprement ;)
si ça se trouve le code refait prend 5fois moins de lignes ;)

Reply

Marsh Posté le 27-06-2008 à 12:10:37    

Ca, c'est possible ! (5 je pense pas, mais 2 fois, peut etre)
Sinon, bah les fonctionnalités ... avec une base de 120 tables (chaque table correspond à un type d'objet métier) les fonctionnalités ... yen a !
Enfin bref, tout ça pour dire qu'un gros refactoring est quand meme prevu, et j'espere qu'on va pas trop le repousser, puisque j'ai hate de m'y mettre

Reply

Marsh Posté le 27-06-2008 à 12:10:37   

Reply

Marsh Posté le 27-06-2008 à 13:56:33    

Je fais une petite application de quizz en ce moment, et elle fait quand meme 20 tables deja :D
Alors 120 finalement, c pas si énorme :whistle:

Reply

Marsh Posté le 27-06-2008 à 14:02:13    

Ha ouais, j'avais oublié les 6 BDD annexes  [:petrus75]
Voici le wiki du projet : http://mediboard.org/public/tiki-index.php ya un svn public et tout, vu que c'est un logiciel libre


Message édité par phenxdesign le 27-06-2008 à 14:06:06
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed