[php] global in class functie vanuit functie

Pagina: 1
Acties:

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 04-09 13:39
Zo, na weer een lange tijd geen vragen gesteld te hebben op GoT, bij deze weer een :D. Ben bezig met een projectje, nou zit het zo een beetje in elkaar:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
template.php
class: template
  function: loadtemplates
  function: gettemplate, hier de code ervan:
    function gettemplate($name,$globals='') {
    global $plain_template,$config,$database,$styles,$user;
        $split = explode(",",$globals);
        $count = count($split);
        for ($i = 0;$i < $count;$i++) {
            global ${$split[$i]};
        }
        if ($plain_template[$name] == "") {
            error("Template '$name' has not been preloaded!",1);
        }
        $template[$name] = addslashes($plain_template[$name]);
        $template[$name] = str_replace("\\'","'",$template[$name]);
        eval('echo "'.$template[$name].'";');
    } // end f: gettemplate

common.php
function: navigation, code hiervan:
    function navigation($navigation) {
    global $template,$styles,$database;
        $template->gettemplate("navigation","navigation");
    } // end f: navigation

login.php
gedeelte hieruit:
    navigation("<a href=\"main.php\">Main</a> - Login");

Even wat uitleg over code en de functie ervan ;). gettemplate wordt gebruikt om een template te printen, loadtemplates heeft de templates uit de db gehaald en ze in de array $plain_template[] gezet. gettemplate echot ze dus. Nou is de functie navigation gebruikt om de navigatie bar te laten zien (hier zit nog wat meer code bij maar veel nut heeft deze niet bij het oplossen van het probleem =]). Nou, je ziet dus dat de template navigation, op het scherm moet verschijnen. Laten we zeggen dat de template 'navigation' er zo uit ziet: '<h3>$navigation</h3>'. Ook zie je dat de variabele $navigation geglobald moet worden. Dit gebeurt volgens mij wel gewoon, omdat op de 'normale' pagina's dit ook werkt.

Nu eindelijk naar mijn probleem toe. Omdat ik de functie gettemplate uit de classe template aanspreek via de functie navigation (moeilijke zin hè :P) kent/weet hij de variabele $navigation in gettemplate niet. Oftewel mijn vraag is of er toch iets aan m'n code fout zit, of omdat dit gewoon niet kan in PHP.

zeroxcool.net - curity.eu


Verwijderd

Nee, dat gaat op deze manier iig niet lukken (afgezien dat al dat geglobal ontzettend ranzig is). Misschien is het een beter idee alle in de template gebruikte variabelen als hashtable mee te geven (array('navigation' => 'bla bla bla', ...)). Met wat knutselen moet dat wel lukken.

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 04-09 13:39
Op woensdag 12 juni 2002 17:05 schreef Zef het volgende:
Nee, dat gaat op deze manier iig niet lukken (afgezien dat al dat geglobal ontzettend ranzig is). Misschien is het een beter idee alle in de template gebruikte variabelen als hashtable mee te geven (array('navigation' => 'bla bla bla', ...)). Met wat knutselen moet dat wel lukken.
Dus de variabelen in een array meegeven aan de functie? Dan denk ik dat ik toch maar gewoon de eval(''); ga gebruiken in de code zelf. Want dat was eigenlijk het doel van de functie.

zeroxcool.net - curity.eu