Migration PHP4 -> PHP5 (déclaration de variables)

Eléphant du PHP | 254 Messages

15 sept. 2008, 23:23

Salut a tous :)

Bon alors après pas mal de temps passé sur PHP4, me voila plongé dans la migration vers le 5, rien d'insoluble apparemment mais quelques questions de "propreté" de code ...

Pour vous donner un idée, je migre un site de gestion de base de donnée assez conséquent puisque représentant près de deux ans de travail, je me considère comme un développeur moyen en php4 et pour le coup novice en php5

En PHP4, le traitement d'une variable genre $_SESSION['tartempion'] se faisait, et ce même si cette variable n'était pas définie, alors qu'en PHP5, cette variable doit être initialisée avant de pouvoir être utilisée ... Bon c'est pas bloquant ca met juste des messages "notice" fort désagréables ...

- Pour éviter de coller un isset autour de chacune de mes variables, dois-je initialiser toutes mes variables a l'ouverture de chaque page ?

- Une option du php.ini existe t'elle pour empêcher l'affichage de ces message de notice ? (sale j'en conviens mais a effet immédiat pour le moment)

bout de code :
menu = isset($_REQUEST["code"])==TRUE ? $_REQUEST["code"]:$_SESSION["code"]
Si par exemple, a un moment de la navigation dans le site, ni $_SESSION["code"], ni $_REQUEST["code"] ne sont renseignée (ce qui arrive rarement, mais peut arriver sans que ce ne soit anormal) j'aurais un message "notice" en PHP5 et pas en PHP4

- Initialiser toutes les variables POST, GET ou SESSION a chaque rechargement de mon index signifierais les avoir toute en mémoire tout le temps, ce qui n'est peut être pas adéquat non ?

J'espère avoir été clair :)

Petit nouveau ! | 4 Messages

17 sept. 2008, 18:44

Oui tu dois tout initialiser ou arrêter d'utiliser aussi rapidement des variables de sessions :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

17 sept. 2008, 22:52

Exemple :
menu = isset($_REQUEST["code"]) ? $_REQUEST["code"] : (isset($_SESSION["code"]) ? $_SESSION["code"] : "") ;
/!\ Attention à la bonne lecture de cette instruction:
Il ne s'agit pas d'initialiser quoi que ce soit dans la session ou le request, l'objectif ici est d'initialiser la variable locale $menu. La valeur de cette variable $menu est affectée à partir du request en priorité ou à partir de la session si l'un ou l'autre contient un champ code. Sinon la valeur de $menu est vide.

Il est déconseillé d'initialiser les variables de session, il faut simplement les créer quand elles existent et les utiliser si elle existent, exactement comme celles du request.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 254 Messages

18 sept. 2008, 16:47

Il est déconseillé d'initialiser les variables de session, il faut simplement les créer quand elles existent et les utiliser si elle existent, exactement comme celles du request.
Oui je voyais bien les choses de cette façon ... Ça représente donc un gros travail de fond pour tester les variables de sessions ou les variables de formulaires a chaque fois qu'on les utilise, comme tu l'as fait sur mon exemple sadeq ...

Mais si il n'y a pas plus simple ma foi, c'est partit ^^