Forklarign af kode

Tags:    php

Hejsa drenge og piger.

Er der et klogt hoved der kan forklare mig hvad der sker i følgende kode?
Fold kodeboks ind/udPHP kode 


Jeg ønsker at vide det da den gør det jeg gerne vil have. Skal bare have det formateret så det passer til mit design




4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 20 karma
Sorter efter stemmer Sorter efter dato
Hej Daniel,

Den kode du har postet, tager den originale PHPInfo, og ændrer på en række forskellige parametre. Jeg løber dem igennem linje for linje.

Linje 1: Vi starter en buffer, som holder al indhold foruden headers. Dvs. at al information vi vil have udskrevet, gemmes i denne buffer. I dette tilfælde, er det phpinfo.

Linje 2: Vi sætter time-zone til UTC

Linje 3: Vi henter phpinfo. De 3 forskellige konstanters betydning kan du finde her: http://php.net/manual/en/function.phpinfo.php. Her er ligeledes lidt information om phpinfo-funktionen

Linje 4: Vi tilskriver vores buffer til en variabel. Al info, som ellers var skrevet ud på skærmen, gemmes i $phpinfo variablen.

Linje 5: Vi deaktiverer og sletter vores output-buffer. Den er ikke længere nødvendig, da vi har det tilskrevet i en variabel allerede.

Linje 6: Vi fanger al information i vores $phpinfo variabel, og fanger alt mellem vores <body>-tags. Vi tilskriver denne værdi til variablen $output.

Linje 7: Vi erstatter alle <table*>-tags med <table>-tags med de givne klasser.

Linje 8: Jeg er ikke helt sikker, men den fanger ihvertfald alle bogstaver, a-z, A-Z, 0-9 samt underscore. Ikke helt med på, hvorfor der laves subexpressions.

Linje 9: Vi erstatter <hr>-tagget med ingenting.

Linje 10: Vi erstatter <div class="center"> med ingenting.

Linje 11: Vi erstatter table-rows der har klassen "h" med table heads, table-row og slutningen på table body.

Linje 12: Vi erstatter </table> med slutningen af table body samt slutningen af selve tabellen.

Linje 13: Vi erstatter </div>-tags med ingenting.

Linje 14: Vi tilskriver $output variablen, som har været gennem alle disse ændring til $phpinfo variablen.

Linje 15: Vi udskriver $phpinfo variablen.


Eftersom det du har skrevet ikke er et objekt, tog jeg mig friheden at fjerne objekt-navigatoren ($this). Koden jeg tog udgangspunkt i ligger nedenfor - det er den samme som den du postede, blot ændret til rent faktisk at kunne udskrive noget - udover en fejl.:

Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 23.10.2013 00:56 af Bruger #16122
Linje 8: Jeg er ikke helt sikker, men den fanger ihvertfald alle bogstaver, a-z, A-Z, 0-9 samt underscore. Ikke helt med på, hvorfor der laves subexpressions.


Nånå.. Jeg troede du var smuttet væk fra programmering, men der ser man! Du kommer rimelig godt rundt, men det jeg vil fokusere på med dette indlæg, er at forklare hvad du mangler, samt et ending point. Here we go!

Fold kodeboks ind/udPHP kode 


Er lige præcis hvad det ser ud til
Den erstatter følgende

Fold kodeboks ind/udKode 


ergo

Fold kodeboks ind/udKode 


\w er metacharacter for word characters, ergo kunne det lige så godt være en character class af [a-zA-Z0-9] (for dem der er lidt ude og sejle)

Du har dog nogle små "nitter" hist og pist, men intet der ødelægger beskrivelsen på nogen måde; man forstår den :)

Så til sidst har jeg en anmodning om at Daniel måske er i et lokalt scope - man kan aldrig vide. Men ja, afhængig af hvor hans kode befinder sig, så skal der også tages hensyn til scopes.



Nikolaj. Super fed forklaring. Den gjorde det meget nemmere at tilpasse det så det passer ind i mit design.

Grunden til echo $this->php_info; er såre simpelt at jeg skal bruge det i CI. Derfor dette. Det er ikke andet end en test.

Nicklas hvad mener du med et lokalt scope?



Nikolaj. Super fed forklaring. Den gjorde det meget nemmere at tilpasse det så det passer ind i mit design.

Grunden til echo $this->php_info; er såre simpelt at jeg skal bruge det i CI. Derfor dette. Det er ikke andet end en test.

Nicklas hvad mener du med et lokalt scope?


At variablen kun er tilgængelig i den pågældende funktion (lidt modsat global scope, hvor den er tilgængelig i hele applikationen)

Ikke noget du just behøver at bekymre dig om som sådan :) Det handlede blot om brugen af $this, og da den er korrekt er det også lokalt scope.. :)



t