Avatar billede baileys Nybegynder
24. oktober 2003 - 19:25 Der er 6 kommentarer

Eksekvering af "dynamisk"-loaded funktion

Jeg har et system, opbygget af moduler, så de bliver tilføjet i noget a'la

include($mod_navn."/mod.php");

I den mod.php ligger så funktioner relateret til det modul.
Når systemet loades skal der køres en funktion i samtlige moduler jeg har included, som hedder f.eks. mailmod_init() og adminmod_init() osv, altså har relation til $mod_navn.

men hvordan kan jeg eksekvere en række funktioner ud fra de navne på modulerne (som ligger i et array)? Altså noget i stil med

$mod_list[$int]_init()
Avatar billede erikjacobsen Ekspert
24. oktober 2003 - 19:27 #1
Du kan ikke have flere funktioner, der hedder det samme.

Du kan i hver include fil putte funktionen i et array (men funktionerne skal
hedde forskelligt!), og så, når tid er, udføre dem allesammen. Rimeligt simpel PHP.
Avatar billede baileys Nybegynder
24. oktober 2003 - 19:35 #2
ideen er jo også, at alle har prefix modul-navn, og derefter "_init()"
Men hvordan lagrer jeg funktionerne i et array, samt eksekverer dem derfra igen
Avatar billede baileys Nybegynder
24. oktober 2003 - 20:01 #3
Need some help...
hvis jeg har

function modul01_init() {
  // Hanky wanky..
}

hvordan får jeg den så smidt ind i et array? Jeg regnede med at smide den i et imidlertidigt array og merge den med mit $modlist-array
Avatar billede amix Nybegynder
24. oktober 2003 - 21:17 #4
uhm aner ikke hvad du spørger om, men du smider i en array ved at sige
$abe[] = "noget tekst";
$abe[] = "mmuuuh";

Så har du 2 arrays der hedder $abe[0] og $abe[1]
Avatar billede erikjacobsen Ekspert
24. oktober 2003 - 21:26 #5
Lidt inspiration:

<?

  $fs = Array();

  function f1() {
    print "Fra f1<br>\n";
  }

  function f2() {
    print "Fra f2<br>\n";
  }

  function f3() {
    print "Fra f3<br>\n";
  }

  function f4() {
    print "Fra f4<br>\n";
  }

  $fs[]="f1";
  $fs[]="f2";
  $fs[]="f3";
  $fs[]="f4";

print_r($fs);
  reset($fs);

  foreach ($fs as $f) {
    eval("$f();");
  }

?>
Avatar billede swaxi Nybegynder
27. oktober 2003 - 16:17 #6
hvorfor laver du ikke hvert modul som en klasse og registrerer dit modul i en global variabel i constructoren? jeg har selv bygget et system, der fungerer på den måde.

eks :

class mod_foo
{
    function mod_foo()
    {
        array_push($GLOBALS['modules'], &$this);
        // ...
    }
}
new mod_foo();
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester