Vous pourriez faire quelque chose comme ça (non recommandé pour des raisons de sécurité): www.exampe.com/myscript.php?run=getNames
alors:
<?php
if (isset($_GET['run']) && function_exists($_GET['run'])){
echo $_GET['run']();
} else {
echo 'Function not Found';
}
Vous seriez mieux utiliser une classe PHP au lieu d'essayer d'appeler une fonction sur l'espace de noms global car ils pourraient appeler une fonction potentiellement dangereuse ou appeler une fonction dont vous ne voulez pas qu'ils voient le résultat:
<?php
class PublicView {
function get_page(){ echo 'hey'; }
}
if (isset($_GET['run']) && method_exists('PublicView',$_GET['run'])){
$view = new PublicView();
$view->$_GET['run']();
} else {
echo 'Function not found';
}
Cela ne permettrait pas non plus d'appeler les fonctions privées de la classe, etc.
+1 C'est le meilleur moyen. –
Non, non, non, non, non, non, non, non, non! Vous avez juste permis à n'importe quel visiteur d'exécuter n'importe quelle fonction de PHP qu'ils veulent! Et s'ils choisissent d'exécuter votre fonction 'purgeDatabase'? Ou même juste 'phpinfo'? – VoteyDisciple
Voir ci-dessous pour une alternative basée sur la classe qui permettrait d'éviter un grand nombre de ces problèmes de sécurité. – CodeJoust