Je me demande s'il y a un moyen d'appeler des fonctions variables avec des espaces de noms. Fondamentalement, j'essaie d'analyser les étiquettes et j'envoie des fonctions de modèle afin qu'ils puissent rendre html`
voici un exemple: (J'utilise PHP 5.3) P>
// Main php file require_once 'template.php'; foreach (array("javascript","script","css") as $tag) { echo template\$tag(); } // template.php namespace template; function javascript() { return "Hello from javascript"; } function css() { return "Hello from css"; } function script() { return "Hello from script"; }
4 Réponses :
Essayez avec vous avez des informations ICI P> P>
:: code>? Vraiment ... Quelqu'un n'a pas fait ses devoirs ou n'a tout simplement pas compris la différence entre un espace de noms et un membre statique d'une classe.
Merci! Seulement légèrement éteint! J'apprécie l'aide cependant.
@Andrew tu avais raison. Je suis gêné quand on est collé le code. Merci
Bien sûr, vous pouvez, mais malheureusement, vous devez utiliser call_user_func () code>
pour atteindre cet objectif:
require_once 'template.php'; foreach (array("javascript","script","css") as $tag) { echo call_user_func('template\\'.$tag); }
Besoin d'un paramètre. Voici comment faire ça. echo call_user_funcunch ('modèle \\'. $ tag, $ params);
Ceci fonctionnera également, pas besoin de call_user_funcunc code>, utilisez simplement le fonctions variables em> docs em> sup> fonctionnalité:
require_once 'template.php';
$ns = 'template';
foreach (array('javascript', 'script', 'css') as $tag) {
$ns_func = $ns . '\\' . $tag;
echo $ns_func();
}
Essayez ceci
Vous utilisez le Fonctions variables i> mal, il doit être une variable, pas une chaîne et une variable.