Avatar billede lopolla123 Nybegynder
18. april 2006 - 22:10 Der er 7 kommentarer

Smarty assign variabler

Spørgsmålet er specifikt på smarty (template engine), men måske folk med lidt forstand på klasser kan hjælpe mig alligevel.....

Normalt vil man til nedenstående gøre:
$smarty->assign("$key", $val);

class AAA
{
    function aaa()
    {
        $key = "abc";
        $val = "def";
       
        smarty::assign("$val", $key);
    }
}

Jeg kalder metoden:
$tmp = &New AAA;
$tmp->aaa();

Så meningen er, at jeg gerne vil have den til at køre metoden "assign" på klassen smarty, så jeg kan få variablen "$key" tilgængelig inde i Smarty.

Det ser ikke ud til, at der er errors, men hvad gør jeg galt?
Avatar billede erikjacobsen Ekspert
18. april 2006 - 22:17 #1
$smarty->assign("$key", $val); udfører en funktion i en instans af en klasse, altså et objekt. Jeg kan ikke se nogen mening i at gøre det i en klasse.
Avatar billede lopolla123 Nybegynder
18. april 2006 - 22:19 #2
Meningen er, at jeg gerne vil have en klasse, hvori jeg har metoder til at manipulere med smarty på forskellig vis, bl.a. på denne manér, men det kan måske ikke lade sig gøre?
Avatar billede erikjacobsen Ekspert
18. april 2006 - 22:25 #3
Jo, du kan nedarve fra Smarty-klassen, eller du kan lave en indre smarty-variabel i din klasse.
Avatar billede lopolla123 Nybegynder
18. april 2006 - 22:35 #4
Nu har jeg forsøgt at extende, er der noget galt her? (har osse prøvet med Smarty/smarty som class)

class AAA extends Smarty
{
    var $key;
    var $val;

    function aaaaa()
    {
        #global $smarty;

        #$key = "abc";
        #$val = "def";
        #$smarty->assign("$val", $key);
        parent::assign("$this->val", $this->key);
    }
}

Kalder den med:
$tmp = &New AAA;
$tmp->key = "abc";
$tmp->val = "def";
$tmp->aaaaa();
Avatar billede erikjacobsen Ekspert
18. april 2006 - 22:38 #5
I hvert fald ikke "...." omkring $this->var  :)
Avatar billede lopolla123 Nybegynder
18. april 2006 - 22:49 #6
Hvad mener du med en indre smarty-variabel i klassen?
Avatar billede erikjacobsen Ekspert
18. april 2006 - 22:51 #7
Jeg mener bare en

  var $smarty;    // PHP5: private $smarty;

og så lav en new i constructoren. Derefter $this->smarty->assign(...)
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