Rendre global un tableau

Eléphant du PHP | 99 Messages

20 janv. 2007, 21:58

Bonjour,

je voudrais en fait rendre un tableau de langue global, afin qu'il puisse être utilisé à la fois dans le script principal de index.php et dans ses fonctions.
Le tableau est appellé à l'aide d'un include(), et chacune des entrées est créée manuellement.

Exemple de tableau:
<?php
        $lang['administrateur'] = "Administrateur";
        $lang['modérateur']     = "Modérateur";
        $lang['membre']          = "Membre";

        $lang['gestion des catégories']['name_input'] = "Quel doit être le nom de la nouvelle catégorie?";
?>
J'ai essayé en mettant global $lang au début du script, mais ça n'a pas marché. J'ai même essayé de coder un script qui rendrait tout global:
<?php
        foreach($lang as $key => $val) {
                if(is_array($lang[$key])) {
                        foreach($lang[$key] as $key2 => $val2) {
                                global $lang[$key][$key2];
                        }
                } else {
                        global $lang[$key];
                }
        }
?>
(le tableau de langue est à deux dimensions maximum)

Vous ne connaitriez pas un moyen simple de rendre global tout le tableau (sans le faire passer en paramètre, si possible)?

Merci d'avance

Eléphant du PHP | 259 Messages

20 janv. 2007, 22:21

hello,

tu peux utiliser le tableau superglobal $GLOBALS par exemple.

Eléphant du PHP | 99 Messages

20 janv. 2007, 22:26

et il n'existerait pas un moyen qui n'obligerais pas à changer toutes les occurences de $lang en $GLOBAL['lang'] (je sais que c'est rapide avec notepad++, mais quand même...)?

Eléphant du PHP | 259 Messages

20 janv. 2007, 22:28

bah...

$GLOBALS['lang'] = $lang

gné ?

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

20 janv. 2007, 23:27

En réalité c'est un non-problème. Ajoute
global $lang;
...partout où $lang est utilisé, c'est aussi simple que cela.
<?php

$lang = array();
$lang['test'] = 'test';

get_lang();
print_r($lang);

function get_lang()
{
	global $lang;
	$lang['foo'] = 'bar';
}

Eléphant du PHP | 99 Messages

22 janv. 2007, 15:57

Ah d'accord...
Je n'avais pas compris comment s'utilisait la fonction global, en fait.

Merci! :D