<?php
// ------------------------------------------------------------------------- //
// Chargement de functions perso à la volée //
// ------------------------------------------------------------------------- //
// Auteur: Florent //
// Email: florent@kzar.net //
// Web: http://www.kzar.net //
// ------------------------------------------------------------------------- //
// Plutôt que d'avoir à mettre toutes vos fonctions persos dans un gros fichier
// de bibliothèque à inclure à chaque fois, voici un petit fichier à inclure
// dans vos scripts qui permet de charger dynamiquement vos bibliothèques de
// fonctions.
// Avantages: Maintenance + facile de vos bibliothèques, scripts allégées et
// temps d'exécution plus courts car fonctions chargées uniquement en cas de
// besoin.
//
// Prérequis:
// 1 - créer un répertoir /lib à la racine de votre site (mais c'est paramétrable
// par vos soins bien entendu!)
// 2 - dans ce répertoire, chaque fonction doit être dans un fichier propre qui
// est nommé nomdelafonction.inc
// 3 - dans vos pages PHP, inclure ce script.
//
// Exemple:
// J'ai créé une fonction validEmail($email) qui me renvoie true ou false.
// Je la met dans le fichier /lib/validEmail.inc
//
// Dans ma page PHP, je l'utilise comme suit:
// include("lib/FunctionLoader.inc");
//
// if(NewFct(validEmail,"toto@domain.tld") == true)
// echo "Adresse valide!";
// else
// echo "Adresse invalide!";
// ------------------------------------------------
### Chargement de functions "à la volée"
###
### $mixed_returned_vars = NewFct(string fonction_name [, mixed vars]);
function NewFct($fct)
{
$vars = '';
## a-t-on fourni des arguments ?
if(func_num_args()>1)
{
for($i=1;$i<(func_num_args()-1);$i++)
{
$t[$i] = func_get_arg($i);
$vars.="\$t[$i],";
}
$t[$i] = func_get_arg($i);
$vars.="\$t[$i]";
}
## a-t-on déjà appelé cette fonction?
if(!defined('_FCT_'.strtoupper($fct).'_'))
{
if(@include_once ("lib/$fct.inc"))
define('_FCT_'.strtoupper($fct).'_',true);
else
return false;
}
if($vars!='')
{
//echo "\$ret = $fct_file($vars)<br>";
eval("\$ret = $fct($vars);");
unset ($vars);
unset ($t);
}
else
{
//echo "\$ret = $fct_file()<br>";
eval("\$ret = $fct();");
}
return $ret;
}
?>