webForumDet fria alternativet

Ladda plugin

PHPur PHP

1 svar · 212 visningar · startad av Qimen

QimenMedlem sedan juni 20015 009 inlägg
#1

Hej

Har en klass som börjar bli rätt stor som jag velat dela upp på något sätt. Visst man kan dela upp i flera klasser men vill helst undvika det.
Har sett flera större system gjort något slags pluginsystem där funktioner ligger i seperata filer och sedan inkluderas på något sätt. Hade velat testa det men vet inte hur jag ska gå till väga. Man kan ju inte inkludera filer direkt i klassen.

Någon som har lite tips? :)

QimenMedlem sedan juni 20015 009 inlägg
#2

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).

132 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)