global og funksjon Variable Scope i PHP Forstå Variable omfang i PHP - Del 1 Innledning Dette er del 1 av min serie, Forstå Variable Scope i PHP. I denne delen av serien ser vi på global og fungere variable siktet i PHP. Alt i denne serien handler om PHP 5. Merk: Hvis du ikke kan se koden, eller hvis du tror noe mangler (ødelagt kobling, bilde fraværende), bare kontakte meg på [email protected]. Det er, kontakt meg for den minste problemet du har om hva du leser. Du trenger grunnleggende kunnskaper i PHP for å forstå denne serien.
Hvis du ikke har den forutsetning kunnskap, så les den serien jeg skrev i denne bloggen som første del er tittelen, Komme i gang med PHP. For å komme til serien, bare skriv tittelen og navnet mitt Chrys i søkeboksen på denne siden og klikk Søk. Hva er en Variable Scope PHP-spesifikasjonen, sier dette: ". Omfanget av en variabel er den konteksten som den er definert" Du kan ikke forstå hva det betyr hvis du er ny på databehandling. Så jeg vil gjøre noen illustrasjon.
Tenk på følgende program: function fn () {$ b = 2; echo $ b; } Fn (); ?> Den variable, $ b er erklært og brukes kun i funksjonsblokken. Denne variabelen kan ikke ses utenfor funksjonen (blokk). Denne variabelen sies å ha lokal funksjon Scope eller rett og slett, Lokalt Scope. Tenk nå følgende program: $ b = 2; funksjonen fn () {//noen uttalelser. . . } Echo $ b; ?> Den variable, $ b er erklært og brukes utenfor funksjonen. Denne variabelen kan ikke sees inne funksjonen. Det sies å ha globalt omfang.
Seeing global variabel i Local Scope Vanligvis kan du ikke se en global variabel i lokale omfang, og du kan heller ikke se en lokal variabel i globalt omfang. Men det er mulig å lage en global variabel vises i lokal omfang og ikke omvendt. Det er to måter å gjøre en global variabel vises i lokal funksjon omfang som følger: Bruk av global Keyword Anta at en global variabel er deklarert utenfor funksjonen. For at global variabel å bli sett inne i funksjonen, må du re-erklære den inne i funksjon etter nøkkelordet, global.
Følgende program illustrerer dette: $ b = 2; funksjonen fn () {global $ b; echo $ b; } Fn (); ?> Med den globale variabelen re-deklarert inne funksjonen innledes med ordet, global, global variabel kan sees inne i funksjon. Bruk av forhåndsdefinerte $ Globals Array Det er et forhåndsdefinert utvalg kalt $ Globals. Dette er en assosiativ array med nøkkel /verdi-par. Alle globale variabler og deres verdier i programmet er lagret i denne matrisen som nøkkel /verdi-par. For hver global variabel, navnet på variabelen utgjør nøkkelen og verdien av de variable former tilsvarende matrise verdi.
Hemmeligheten er at denne matrisen kan sees inne i en funksjon så vel som utenfor. Så hvis du vil ha en global variabel inne i en funksjon, bare få tilgang til tilsvarende element for den globale variabelen i rekken. Følgende program illustrerer dette: $ b = 2; funksjonen fn () {echo $ Globals ['b']; } Fn (); ?> Legg merke til at som sentrale for den globale variabelen i rekken, har du ikke den $ tegn, før navnet på variabelen. Navnet på variabelen er i anførselstegn som sentrale i hakeparentes, for eksempel med "b" ovenfor.
Passerer en global variabel til en funksjon Vurder følgende kode som fungerer: $ c = 2; funksjonen fn ($ x) {echo $ x; } Fn ($ c); ?> I koden ovenfor, er $ c en global variabel, og det kan ikke ses inne i funksjon. Funksjonen har parameteren, $ x. I funksjonskallet, er den globale variabelen sendes som argument. Funksjonen fungerer. Dette betyr ikke at den globale variabelen har blitt sett av funksjonen. Den globale variabelen har ikke blitt sett av funksjonen fordi søkeordet, global eller $ Globals matrisen ikke har vært brukt.
Her er forklaringen på hva som har skjedd: Etter at funksjonen har nettopp blitt kalt, umiddelbart som utførelsen av funksjonen starter, verdien av den parameteren, blir $ x verdien av den globale variabelen, $ c. Funksjonsdefinisjonen blokken bruker $ x og ikke $ c. Slik at verdien av den globale variable er blitt sendes til funksjonen uten at funksjonen se den globale variable (navn). Det er verdien av den globale variable som er sendt som argument, og ikke den variable (navn). Superglobals i PHP Det er noen forhåndsdefinerte arrays som kan sees i både globale og funksjonsomfang.
For å kunne bruke noen av disse arrays i en funksjon, trenger du ikke å gå foran den med søkeord, global. Du bare gå videre og bruke det ved å skrive navnet sitt, inkludert en nøkkel for å få en verdi. Et eksempel på et slikt utvalg er $ Globals at vi bare har sett. Disse matriser kalles Superglobals. I PHP, superglobals er: $ Globals $ _SERVER $ _GET $ _POST $ _files $ _COOKIE $ _SESSION $ _REQUEST $ _ENV Jeg har nettopp snakket om $ GLOBAL, som er den første i listen. Å vite om de andre, bør du konsultere noen andre dokumenter.
Ikkefunksjonsblokker Er det betingede blokker, slik som if-blokken som lokale scopes? Nei det er ikke. Lokal omfanget er normalt opptatt av funksjoner. Vurdere følgende kode: $ c = 2; if ($ c == 2) {$ c = 3; echo $ c; }?>