Méthode d'organisation des constantes d'une application

Eléphanteau du PHP | 35 Messages

14 avr. 2010, 08:31

Bonjour à tous,

Je suis face à une problématique récurrente lors du développement d'une application. En effet je code sous Windows (C'est MAL mais j'ai pas le choix) et le serveur c'est un linux. J'ai donc pour mon application qui tourne avec du Zend Framework un fichier de constante comme-ceci :

Code : Tout sélectionner

<?php // répertoire pour les caches define('TEMP_DIR', 'C:/SourcesLog/temp'); //define('TEMP_DIR', '/var/cache/temp');
Mon application est sous SVN aussi je fait simplement un update sur le serveur de Dev. Mais a chaque fois je dois changer les constantes sur le serveur cela me fait perdre mon temps et comme j'en oublie à chaque fois... Aussi ma question est plutôt une question d'organisation. Comment feriez-vous pour empêcher de faire cette opération mise à part travailler sous linux en local etc...
Je suis persuadé que cette question pourra être utile à pas mal de monde.

Merci d'avance

Eléphant du PHP | 398 Messages

14 avr. 2010, 09:01

Pour l'application que je développe, j'utilise un PC (celui du travail mais chut ^^) sous Windows, mais chez moi, je suis sur Linux, mais je n'ai pas de soucis avec les constantes.

Définie une constante qui sera le chemin du serveur, et normalement ça ne devrais plus poser de soucis. J'ai fais comme ceci :
define("INC", $_SERVER['DOCUMENT_ROOT']);
define("DS", '/'); //séparateur de dossier

/** Definition des repertoires **/	
define("TMP", INC . DS . 'app' . DS . 'tmp'); //dossier temportaire
define("CLASSES", INC . DS . 'app' . DS . 'classes/'); //dossier des classes
define("LIBRARY", INC . DS . 'app' . DS . 'libraries/'); //dossier des librairies externes
define("VIEWS", INC . DS . 'app' . DS . 'views/'); //dossier des vues
define("DIR_IMAGES", INC . DS . 'app' . DS . 'webroot/images'); //dossier contenant les images

//etc...
En espérant que ça résout ton soucis ^^.
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 avr. 2010, 14:08

Il faudrait que tu trouves un test qui permette de définir automatiquement cette constante.
Par exemple, avec $_SERVER['HOSTNAME'], je pense que tu pourras différencier ton poste de dev de ton serveur
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 422 Messages

14 avr. 2010, 17:55

hello

tu subversionne tout sauf le fichier avec les define() que tu fait spécifique pour win et linux et que tu inclue dans tes/ta page(s)

++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Eléphant du PHP | 52 Messages

19 avr. 2010, 15:26

Hello,

En PHP existe depuis longtemps la constante prédéfinie DIRECTORY_SEPARATOR http://fr.php.net/manual/en/reserved.constants.php qui sert justement à ça.
PHP5 Zend certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 avr. 2010, 15:51

Qui sert à déterminer la plateforme ? ;)

Bon, taquinerie passée, cette directive pourrait être utilisé pour savoir si on se trouve sous Win32 ou Unix, mais pas plus.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 4039 Messages

19 avr. 2010, 16:31

Et soit dit en passant, windows à toujours accepté le slash avant comme séparateur...

Si je me souviens bien, c'est IBM qui avait demandé à M$ pour son système dos d'utiliser le slash inversé, pour être compatible (graphiquement) avec une ancienne vieille version de PC DOS (et M$ à soi-disant toujours supporté les deux, n'affichant que le slash inversé). Y'a aussi quelque chose sur les arguments aux applications qui seraient impactées (puisque sous pc dos le slash avant permettait de définir les arguments, mais windows acceptant les deux versions...) , mais franchement, qui s'en inquiète..
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.