Tar upp tråden igen då det blivit aktuellt igen, och är lite mer brottom nu.
Iaf, har försökt lösa det på ett sätt vilket fungerar men jag vet inte hur det blir med prestandan osv.
index.php
<?php
class test {
function load_plugins($File, $Params) {
$plugin = $File . ".php";
$Params = stripslashes($Params);
if (!function_exists($File)) {
include_once $plugin;
}
if (!is_callable($File)) {
echo "Plugin function " . $File . "() not found in " . $File . ".php.\n";
} else {
return eval("return " . $File . "(" . $Params . ");");
}
}
}
$klass = new test;
$klass->load_plugins("bar", "1, 2, 3");
?>
bar.php
<?php
function bar($a, $b, $c) {
echo $a;
echo $b;
echo $c;
}
?>
Detta fungerar som det ska, dvs den skriver ut 123. Men hur påverkas prestandan av det hela? Jag har inte tänkt använda det till de större metoderna utan mer mindre som bara används på vissa undersidor osv. Går det göra på något annat sätt som ev. är bättre?
Eval är ju ingen funktion som är särskillt snygg av använda. Har tittat en del på hur de gjort i templatemotorn Smarty men förstår inte hur de har löst det. De har krånglat till det rätt rejält (antagligen med vilje).
