JeuWeb - Crée ton jeu par navigateur
structure d'un fichier .ini - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : structure d'un fichier .ini (/showthread.php?tid=5579)



structure d'un fichier .ini - php_addict - 22-07-2011

Bonsoir

j'ai un petit soucis avec mon fichier de configuration .ini et j'en viens à vous pour solliciter votre aide.

exemple idiot de mon fichier .ini


NOM_DE_DOMAINE = 'monsite.fr'
DELAIS = 32

DATA[1] = "bla bla"
DATA[2] = "burp"
DATA[3] = "gloups"

grosso modo ma function Get_My_Configuration() parse mon fichier .ini comme ceci:

- si la valeur est un int,string ou float alors on initialise une variable constante (define)
- si c'est un array la function renvoie un array (car une constante ne peut être un array)

expl:


$conf = function Get_My_Configuration();

echo NOM_DE_DOMAINE;
echo $conf['DATA'][2];

// ca affiche ceci:
//
// monsite.fr
// burp

jusqu'à là je pense que c'est correct, mais ce que je souhaiterais:

si la variable de session $_SESSION['activated'] est initialisée (isset) alors certaines données de configuration soient differentes, par exemple:

si $_SESSION['activated'] initialisée ---> DELAIS = 32
si $_SESSION['activated'] non initialisée ---> DELAIS = 68743198

je ne sais pas si c'est très clair. En fait selon si $_SESSION['activated'] est initialisée que certaines données de configuration soir différentes.

Auriez-vous une idée de comment procéder svp ?

bonne fin de soirée


RE: structure d'un fichier .ini - Ter Rowan - 23-07-2011


DELAIS[0]=68743198
DELAIS[1]=32


if ($SESSIO['activated'])
$delais = $conf['DELAIS'][1];
else
$delais = $conf['DELAIS'][0];

mais j ai peut être mal compris


RE: structure d'un fichier .ini - Wells - 23-07-2011

pk pas faire un config.php??????


RE: structure d'un fichier .ini - Slavick - 23-07-2011

De ce que j'en comprends, c'est qu'après avoir chargé ton fichier INI, tu souhaiterais modifier la valeur de ta constante DELAIS si $_SESSION['activated'] n'est pas définie. Sauf que c'est impossible de modifier une constante une fois qu'elle est déclarée...

La documentation PHP a écrit :Une constante est un identifiant (un nom) qui représente une valeur simple. Comme son nom le suggère, cette valeur ne peut jamais être modifiée durant l'exécution du script (sauf les constantes magiques).
(Source)

Il faudrait peut-être essayer de d'abord charger ton fichier INI dans une variable simple PHP, puis d'effectuer tes changements de valeurs et enfin de faire ton traitement (si variable simple, définition en constante, etc.).


RE: structure d'un fichier .ini - php_addict - 23-07-2011

(23-07-2011, 01:23 AM)Wells a écrit : pk pas faire un config.php??????

c'est à dire?

sinon je pense faire ceci:



[normal_section]

NOM_DE_DOMAINE = 'monsite.fr'
DELAIS = 32

[array_section]

DATA[1] = "bla bla"
DATA[2] = "burp"
DATA[3] = "gloups"


[special_section]

VALEUR["activated"] = "bla"
VALEUR["non_activated"] = "bla bla"

TEXTE["activated"] = "gloups"
TEXTE["non_activated"] = "gloups gloups"


- les données de [normal_section] seront des constantes php
- les données de [array_section] seront des array php
- les données de [special_section] seront des constantes php en fonction de si $_SESSION['activated'] est initialisée ou non

pourri ou pas ? désolé si ce n'est pas très clair



RE: structure d'un fichier .ini - Ter Rowan - 23-07-2011

(23-07-2011, 10:24 AM)php_addict a écrit :
(23-07-2011, 01:23 AM)Wells a écrit : pk pas faire un config.php??????

c'est à dire?


Define('NOM_DE_DOMAINE', 'monsite.fr');
Define ('DELAIS', 32);

$conf['DATA'][1] = "bla bla";


grosso modo, comme si tu faisais un cache d'un point ini directement en php


si ton .ini n'est pas utilisé par d'autres technologies, autant taper directement en php


A noter, perso, je suis cette méthode mais avec des classes abstraites :

class paramSystem
{
// module par défaut
static $_defaultModule = 'moduleRoot';

// tableau des modules
static $_PHPModule = array
(
'Core' => 'moduleCore'
);

// tableau des stratégies par défaut
static $_defaultStrategy = array
(
/****************/
/* */
/* SYSTEM */
/* */
/****************/

'test1' => 'strategyDefaut1',
'test2' => 'strategyDefaut2',
'test3' => 'strategyDefaut2',
'environnement moduleRoot' => 'strategyDefaut2',


/****************/
/* */
/* ACTION */
/* */
/****************/
'modTestCondition' => 'strTestCondition1',
'modTestCondition2' => 'strTestCondition0',

/****************/
/* */
/* REEL */
/* */
/****************/
'moduleRoot' => 'strategyRoot',
'Core' => 'strategyCore'
);
}






RE: structure d'un fichier .ini - php_addict - 23-07-2011

ah ok merci, j'étais partit dans cette optique là au départ, mais c'est un peu moins lisible qu'un fichier.ini non ?

dernière petite question, les define sont assez lents (bien que je n'en ai pas enormement), donc est t il judicieux de passer comme paramètres à la fonction Get_My_Configuration() les valeurs qui doivent être charger (au lieu de tout charger en valeurs constantes), exemple:


//
// initialise que les constante de configuration suivante : 'NOM_DE_DOMAINE' et 'MA_VALEUR'
//
Get_My_Configuration(array(1 => 'NOM_DE_DOMAINE' , 2 => 'MA_VALEUR' ))



RE: structure d'un fichier .ini - Ter Rowan - 23-07-2011

(23-07-2011, 10:47 AM)php_addict a écrit : ah ok merci, j'étais partit dans cette optique là au départ, mais c'est un peu moins lisible qu'un fichier.ini non ?

je trouve ça juste un peu plus verbeux, mais ça me permet d'être super à l'aise dans le code (pas la peine de déclarer globals $zz, ..., assurance de n'avoir qu'une seule déclaration de mes paramètres, etc..)


De plus la version "linéaire" (celle avec tes données exemples) qui produit exactement les mêmes variables que toi (si j'ai bien compris) est tout aussi lisible (faut juste rajouter define)

après pour la lenteur de tes define, je ne sais pas te répondre


RE: structure d'un fichier .ini - zeppelin - 23-07-2011

Perso toutes mes configs sont en .json, car tu as des fonctions natifs de PHP qui les gèrent (écriture / lecture).

Je reprends le principe de "model" comme dans un MVC normal pour mes fichiers de configs. Les fichiers de configs sont la BDD, et j'ai des models pour y accéder. Comme ça je ne charge que les configs don't j'ai réellement besoin. J'utilise un singleton pour ne pas charger les configs plusieurs fois. Avec l’héritage tout reste vraiment propre, avec des méthodes communes etc.
ceinte
Par exemple, pour connaitre le prix d'un mur d'enniveau 8, je balance un WallConfig::getInstance()->getPrice(8); qui charge le fichier wall.config.json, et qui me retourne un objet avec les différents prix (pierres, bois etc.).

Si tu as beaucoup de configs, je te conseil vivement cette méthode.

De plus, le json est formidable pour l'ajax (avec jQuery et co.).


RE: structure d'un fichier .ini - php_addict - 23-07-2011

merci pour vos avis, il y a tellement de facon de faire !