J'ai un config.php
qui est inclus pour chaque page. Dans la configuration, j'ai créer un tableau qui ressemble à quelque chose comme:
$config = array();
$config['site_name'] = 'Site Name';
$config['base_path'] = '/home/docs/public_html/';
$config['libraries_path'] = $config['base_path'] . '/libraries';
//etc...
Ensuite, je dois function.php
, qui est également inclus à presque chaque page, où je dois utiliser global $config
pour obtenir l'accès à l'il - et c' est ce que j'aimerais me débarrasser de nous!
Comment puis-je accéder $config
dans les autres parties de mon code sans l'aide d' global
?
Quelqu'un pourrait-il expliquer, POURQUOI je ne devrais pas utiliser global
dans mon exemple? Certains disent que c'est un mauvais ton, d'autres disent qu'il n'est pas sécurisé?
EDIT 1:
Exemple de où et comment je l'utilise:
function conversion($Exec, $Param = array(), $Log = '') {
global $config;
$cmd = $config['phppath'] . ' ' . $config['base_path'] . '/' . $Exec;
foreach ($Param as $s)
{
$cmd .= ' ' . $s;
}
}
EDIT 2:
Mettre tout cela dans la classe, comme suggéré par Vilx, ce serait cool, mais dans ce cas, comment pourrais-je l'attacher avec la boucle suivante, qui est de l'extraction de config key
et value
de la base de données.
J'ai simplifié à l'extrême l'idée de l'attribution d' $config
tableau, voici un exemple:
$sql = "SELECT * from settings";
$rsc = $db->Execute($sql);
if ( $rsc ) {
while(!$rsc->EOF) {
$field = $rsc->fields['setting_options'];
$config[$field] = $rsc->fields['setting_values'];
@$rsc->MoveNext();
}
}
EDIT 3:
D'ailleurs, j'ai accès à d'autres vars
de fonctions qui sont définies dans le fichier config et quelques-uns d'entre eux, par exemple:$db
, $language
et etc.
Si je les ai mis dans la classe va vraiment résoudre quoi que ce soit? Si j'utilise global
que faut-il vraiment changer?
EDIT 4:
J'ai lu PHP mondial dans les fonctions où Gordon explique dans la très belle façon pourquoi vous ne devriez pas utiliser global
. Je suis d'accord sur tout, mais je ne l'utilise global
dans mon cas, de réaffecter les variables, ce qui aura pour résultat, comme il l'a dit, <-- WTF!!
, ;)) ouais d'accord, c'est fou. Mais si j'ai juste besoin de base de données access à partir d'une fonction en utilisant global $db
où est le problème dans ce cas? Comment faire autrement, sans l'aide d' global
?
EDIT 5:
Dans le même PHP mondial dans les fonctions deceze dit: "L'une des raisons pour laquelle mondiale contre, c'est qu'il signifie que la fonction est dépendante d'une autre portée. Cela va dégénérer très rapidement."
Mais je parle ici de base de la "INIT". En gros, j'ai mis define
mais utiliser vars
- et bien c'est faux dans la technique. Mais votre fonction n'est pas dépendait de rien, mais le nom d'un var $db
que vous pouvez garder à l'esprit? C'est vraiment besoin d'utiliser $db
,, où est la DÉPENDANCE d'ici et comment l'utiliser autrement?
P. S. je viens d'avoir une pensée, que nous sommes face à ce conflit de deux esprits différents, par exemple: le mien (mais PAS bien comprendre la programmation orientée objet) et ceux qui pourraient être appelés des gourous (de mon point de vue actuel), en programmation orientée objet - ce qui semble évident pour eux que pour moi se pose de nouvelles questions. Je pense que c'est pourquoi cette question est posée maintes et maintes fois. Personnellement, pour moi, il est devenu plus clair après tout, mais il ya encore des choses à clarifier.