11
votes

Fonctions variables avec des espaces de noms dans PHP

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"; }


1 commentaires

Vous utilisez le Fonctions variables mal, il doit être une variable, pas une chaîne et une variable.


4 Réponses :


1
votes

Essayez avec xxx

vous avez des informations ICI


3 commentaires

:: ? 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



5
votes

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);
}


1 commentaires

Besoin d'un paramètre. Voici comment faire ça. echo call_user_funcunch ('modèle \\'. $ tag, $ params);



7
votes

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();
}


0 commentaires

0
votes

Essayez ceci xxx


0 commentaires