execution fonction dans ini

devlop78
Invité n'ayant pas de compte PHPfrance

16 sept. 2011, 14:50

Bonjour,

Petite colle,

comment faire dans un fichier ini pour appeler l'execution d'une fonction ?

Ex:

Code : Tout sélectionner

[dev] resources.x.y = md5($machin);
Ca serait dommage de mettre tout le code là dedans et le reste dans du php ...

Merci !

ViPHP
xTG
ViPHP | 7331 Messages

16 sept. 2011, 17:02

Un fichier ini est un fichier texte, rien de plus, rien de dynamique donc.
Or si ce fichier est généré via PHP tu y insères en fait soit des constantes soit des variables.
Le retour d'une fonction est une variable (enfin plutôt constant suivant l'algo et les paramètres on va dire...). ;)

Donc :
$ma_variable_pour_le_ini = maFonction($monParam);
// puis on insère la variable dans le reste du traitement

Mammouth du PHP | 19672 Messages

16 sept. 2011, 17:04

Ce que je mettrais dans le fichier ini, ce serait le nom du fichier PHP où se trouverait ladite fonction et dans le code qui utilise le ini, il suffirait de récupérer le nom de ce fichier selon les paramètres appropriés et de l'inclure ensuite. Ce sera moins casse-tête à mon avis.

il te faudrait donc créer quelque part un fichier qui serait par exemple conf.dev.php, un autre conf.prod.php avec, pourquoi pas, des intermédiaires, conf.recette.php :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

devlop78
Invité n'ayant pas de compte PHPfrance

16 sept. 2011, 20:05

Pas dynamique oui, on peut quand même y mettre des constantes. Je cherche juste à voir jusqu'où aller. Le fichier ini est écrit à la main et je ne peux pas lui indiquer le chemin, n'étant pas tout à fait censé savoir où il est. En fait, je renseigne actuellement le nom de la classe à instancier, et derrière, je renseigne le dossier où se trouvent tous les plugins, mais la déclaration est plus généraliste (sous Zend Framework je précise).

Actuellement j'ai :

application.ini :

Code : Tout sélectionner

resources.frontController.plugins.essai = "Application_Plugins_Essai"
bootstrap.php :
        $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
    'basePath'  => APPLICATION_PATH,
    'namespace' => 'Application',
            'resourceTypes' => array(
                'plugins' => array(
                    'path' => 'plugins/',
                    'namespace' => 'Plugins'
                    
                )
                
            )
));
Ainsi, je change le répertoire de tous les plugins en même temps, voire de toute l'application, à un seul endroit. Là, on est plus dans le ZF, ma question, je vous rassure, était précisemment sur le .ini, à moins d'avoir loupé un truc ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 sept. 2011, 10:48

Je pense que ce que tu as loupé, c'est le propos des fichiers ".ini". Il sont fait pour définir des constantes ou des valeurs par défaut à l'installation de ton application sur le serveur... Il est généralement lié à l'environnement et ne contient donc que des valeurs que tu doit connaître avant même de démarrer ton serveur :)

Donc non, il ne doit pas y avoir d'appel à des variables ou a des fonctions dans ces fichiers. Pour cela tu peux utiliser des fichiers de configuration, de constantes, ou de ce que tu veux qui auront l'extension php (et qui pourront donc exploiter des fonctions, des variables, des données en base ou encore des infos du .ini)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

devlop78
Invité n'ayant pas de compte PHPfrance

17 sept. 2011, 18:36

Oui tout à fait. Je ne sais pas pourquoi j'ai mis cet exemple, en fait l'utilisation est le nom des sessions. J'aime bien leur donner des noms dynamiques. Oui, le .ini est statique en soit, je voulais voir jusqu'où il était extensible.