Function uit een variabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco

Marco

14/11/2007 16:50:00
Quote Anchor link
Via een mysql database krijg ik namen van functies opgehaald, die vervolgens een variabel ingaan.

Ik kan het variable in een echo zetten, wat netjes de naam van de functie geeft, maar de functie moet uitgevoerd worden. Hoe doet men dat?
 
PHP hulp

PHP hulp

28/04/2024 01:19:11
 
Joren de Wit

Joren de Wit

14/11/2007 16:59:00
Quote Anchor link
Dat kan zeker, door gewoon () achter de variabele, die de functienaam bevat, te plakken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function foo()
{

    echo 'Hello World <br />';
}


// Normaal
foo();

// Uit variabele
$bar = 'foo';
$bar();
?>
 
Bo az

Bo az

14/11/2007 17:16:00
Quote Anchor link
Ik neem aan dat het eigen gedefinieerde functies zijn? Dan lijkt call_user_func() mij een nettere oplossing dan die van Blanche.
 
Frank -

Frank -

14/11/2007 17:17:00
Quote Anchor link
Functies, dus PHP-code, in een database? Dat klinkt als vragen om flinke problemen, vooral bugs en hacks.

Mocht je die echt willen hebben, dan doet eval() wonderen.
 
Marco

Marco

14/11/2007 18:02:00
Quote Anchor link
Waarom mag functies in een database niet?

Overigens is het slechts een klein stukje code, er wordt informatie vastgezet over een bepaalde module. Zo is er een kolom voor de naam, versie, auteur, enz. De kolom mod_func bevat dan ook alleen maar de functie, verder niets.
Gewijzigd op 01/01/1970 01:00:00 door Marco
 
Arian Stolwijk

Arian Stolwijk

14/11/2007 19:18:00
Quote Anchor link
Naja, als je eerst kijkt of de functie wel bestaat, kan er idd niet zoveel fout gaan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (function_exists('imap_open')) {
    echo "IMAP functions are available.<br />\n";
}
else {
    echo "IMAP functions are not available.<br />\n";
}

?>
 
Marco

Marco

14/11/2007 19:24:00
Quote Anchor link
Binnen mijn systeem bestaat een map 'modules'. De main class kijkt eerst wat er in die map zit, daarna of ze al bestaan in de mysql database. Zo niet, dan wordt er een record aangemaakt met de info over de module.

Verderop in een andere method worden alle modules stuk voor stuk geladen, er wordt gecontroleerd of the gebruiker toegang heeft. Daarna wordt de module en dus de functie geladen.

Er kunnen dus helemaal geen functies geladen worden die niet bestaan, want de modules worden vooraf gecontroleerd op de aanwezige variabelen, die info over de module bevatten.

Bedankt voor jullie hulp!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.