Ecriture dynamique d'un define
Bonjour,
Je veux écrire de façon dynamique quelque chose comme ceci: define('AVAILABLE_LANGUAGES', ['fr', 'de', 'en', ]);.
Je pars de $_SESSION['s3']['lang'] qui vaut ['fr', 'de', 'en']J'ai le code suivant qui me provoque une erreur Array to string conversion:
Code:
1 2 3
| $languages = isset($_SESSION['s1']['multiling']) ?
"define('AVAILABLE_LANGUAGES',\t".$_SESSION['s3']['lang'].");":
''; |
EDIT: J'ai essayé ceci qui fonctionne mais sans les guillemets autour des valeurs:
Code:
1 2 3
| $languages = isset($_SESSION['s1']['multiling']) ?
"define('AVAILABLE_LANGUAGES',\t[".implode(', ', $_SESSION['s3']['lang'])."]);":
''; |
qui donne: define('AVAILABLE_LANGUAGES', [fr, de, en]); au lieu de define('AVAILABLE_LANGUAGES', ['fr', 'de', 'en']);. C'est cette dernière écriture que je veux obtenir.
Nouvelle erreur similaire
Bonjour,
Toujours en générant du PHP, j'ai un cas similaire au précédent que je ne sais pas traiter.
A partir du code suivant, je voudrais générer le code en dernière ligne: $req['userLang'] = isset($_SESSION['s1']['multiling']) ? "require_once '{$_SESSION['s3']['dirlang']}/{$language}.php';": ''; mais cette écriture provoque une erreur
Citation:
Undefined variable $language
En m'inspirant de ton conseil (@Séb.), j'ai écrit ceci:
Code:
1 2 3
| $language = 'fr'; // default value added, dont je n'ai pas l'utilité.
$varExport2 = var_export($language, return: true);
$req['userLang'] = isset($_SESSION['s1']['multiling']) ? "require_once '{$_SESSION['s3']['dirlang']}/{$varExport2}.php';": ''; |
qui donne le résultat suivant: require_once 'DIR_ROOT.'lang'/'fr'.php'; au lieu de la ligne de code voulue: require_once 'DIR_ROOT.'lang/{$language}.php';.
NOTE : La variable $language est définie dans un fichier inclus précédemment.