Avatar billede tin-man Nybegynder
19. marts 2004 - 13:08 Der er 3 kommentarer

Classes og interne variabler.

Jeg er rimelig nybegynder når det kommer til classes.
Problemet er at indholdet af min "$this->" variabler pludseligt forsvinder når de bliver brugt i en "if", "while" eller "for" løkke.

En print_r(); af variablen inden en af disse sætninger viser tydeligt at der er indhold af dem, men så snart at man er inde i sætningen, også selv om en debug printout viser at de er opfyldte så er der ikke noget inhold i dem.

Har også prøvet at bruge reset(); på dem.. men så får jeg beskeden: Warning: reset(): Passed variable is not an array or object. Global har heller ikke nogen effect..

Det virker heller ikke til at være server opsætningen der er noget galt med. Da jeg har prøvet på en winxp apache 2.0/php 4.3.4 og en freebsd apache 1.3.27/php 4.3.4

Så jeg er bare helt tabt bag en vogn..
Avatar billede tefcke Nybegynder
19. marts 2004 - 13:59 #1
$this er jo bare en reserveret variabel som indenholder en reference til objektet selv.
Personligt forstår jeg ikke helt problemet du beskriver, det er rimlig abstrakt når der ikke er noget konkret kode at tage udgangspunkt i.
Avatar billede tin-man Nybegynder
19. marts 2004 - 14:18 #2
for($i = 0; $i <= $numLoops; $i++){
    print_r($this->internalVars); // Dette giver output
    // Matching start tags with end tags and process data
   
    $endLoopTag = '<!--)'.substr($internalLoop[$i]['0'], 3, strlen($internalLoop[$i]['0']) - 6 ).'-->';
    if( strlen($internalLoop[$i]['0']) AND strpos($content, $endLoopTag) !== false ){
        print_r($this->internalVars); // Dette giver intet output
        print 'affe'; // debug, dette bliver vist

        $parentLoop = substr($internalLoop[$i]['0'], 3, strlen($internalLoop[$i]['0']) - 6 ).'<br>';
        $partStart = $internalLoop[$i]['1'] + strlen($internalLoop[$i]['0']) + 1;
        $partLength = strpos($content, $endLoopTag) - $internalLoop[$i]['1'] - strlen($endLoopTag);
       
        $internalTmpData['Start'] = substr($content, 0, $partStart - strlen($internalLoop[$i]['0'])-2);
        $internalTmpData['Loop'] = substr($content, $partStart, $partLength);
        $internalTmpData['End'] = substr($content, $partStart+$partLength + strlen($endLoopTag)+1, strlen($content) );
       
        // Process date for each seperate loop
       
        if(count($this->internalVars[$parentLoop]) <= 1){
            $l = 1;
            while(count($parentLoop) >= $l){
               
            $l++;
            }
           
        }
       
    }
   
}
Avatar billede tin-man Nybegynder
19. marts 2004 - 14:21 #3
Det kan godt være andre fejl i koden.. og der er mange ting der ikke kan ses udfra denne kode.. men det er ikke så vigigt... det der er vigigt er at i starten af koden kan "$this->internalVars" godt vises men ikke senere...

hvad kan det være? mangler jeg noget?
minder lidt om den gang jeg startede og ikke kendte global i functioner..
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