Global och funktion Varierande räckvidd i PHP Förstå Varierande räckvidd i PHP - Del 1 Introduktion Detta är en del 1 av min serie, Förstå Varierande räckvidd i PHP. I denna del av serien, ser vi på global och funktion variabel omfattning i PHP. Allt i denna serie handlar om PHP 5. Obs: Om du inte kan se koden, eller om du tror att något saknas (bruten länk, bild frånvarande), bara att kontakta mig på [email protected]. Det vill säga, kontakta mig för minsta problem du har om vad du läser. Du behöver grundläggande kunskaper i PHP för att förstå denna serie.
Om du inte har det förkunskaper, sedan läsa serien jag skrev i den här bloggen vars första delen heter, Komma igång med PHP. För att nå serien, skriv bara titeln och mitt namn Chrys i sökrutan på den här sidan och klicka på Sök. Vad är en variabel omfattning PHP-specifikationen, säger så här: ". Omfattningen av en variabel är det sammanhang i vilket det definieras" Du kanske inte förstår vad det innebär att om du är ny på datorer. Så jag kommer att göra en del illustration.
Betrakta följande program: function fn () {$ b = 2; echo $ b; } Fn (); ?> Den rörliga, $ b deklareras och används endast i funktionsblocket. Denna variabel kan inte ses utanför funktionen (block). Denna variabel sägs ha lokal funktion Omfattning eller helt enkelt, Lokala Scope. Betrakta nu följande program: $ b = 2; Funktionen fn () {//några uttalanden. . . } Echo $ b; ?> Den rörliga, $ b deklareras och används utanför funktionen. Denna variabel kan inte ses inuti funktionen. Det sägs att ha global räckvidd.
Ser global variabel i lokal Scope Normalt kan du inte se en global variabel i lokal omfattning och du kan inte heller se en lokal variabel i global räckvidd. Emellertid är det möjligt att göra en global variabel visas i lokal omfattning och inte vice versa. Det finns två sätt att göra en global variabel visas i lokal funktion tillämpningsområde enligt följande: Användning av globala Keyword Antag att en global variabel har förklarats utanför funktionen. För att den globala variabeln ses inne i funktionen, måste du åter förklara den inuti funktionen föregås av nyckelordet, global.
Följande program illustrerar detta: $ b = 2; Funktionen fn () {global $ b; echo $ b; } Fn (); ?> Med den globala variabeln åter deklareras inuti funktionen föregås av ordet, global, den globala variabeln kan ses inuti funktionen. Användning av fördefinierade $ GLOBALS Array Det finns en fördefinierad uppsättning som heter $ GLOBALS. Detta är en associativ array med nyckel /värde-par. Alla globala variabler och deras värden i ditt program lagras i denna array som nyckel /värde-par.
För varje global variabel bildar namnet på variabeln nyckeln och värdet av de olika former motsvarande array värde. Hemligheten är att denna samling kan ses inne i en funktion såväl som utanför. Så om du vill ha en global variabel i en funktion, bara tillgång till motsvarande element för den globala variabeln i arrayen. Följande program illustrerar detta: $ b = 2; Funktionen fn () {echo $ GLOBALS ['b']; } Fn (); ?> Lägg märke till att vara avgörande för global variabel i arrayen, behöver du inte $ -tecknet, som föregår namnet på variabeln.
Namnet på variabeln är inom citationstecken som nyckeln i hakparenteser, såsom med "b" ovan. Passerar en global variabel till en funktion Betrakta följande kod som fungerar: $ c = 2; Funktionen fn ($ x) {echo $ x; } Fn ($ c); ?> I ovanstående kod, är $ c en global variabel, och det kan inte ses inuti funktionen. Funktionen har parametern, $ x. I funktionsanrop, är den globala variabeln skickas som argument. Funktionen fungerar. Detta betyder inte att den globala variabeln har setts av funktionen.
Den globala variabeln har inte setts av funktionen eftersom nyckelordet, global eller $ GLOBALS arrayen inte har använts. Här är förklaringen till vad som hänt: När funktionen har just blivit kallad omedelbart som utförandet av funktionen startar, värdet av parametern, $ x blir värdet på den globala variabeln, $ c. Definitionen Funktionsblocket använder $ x och inte $ c. Så värdet av den globala variabeln har gått till funktionen utan funktionen ser den globala variabeln (namn). Det är värdet på den globala variabeln som skickas som argument och inte variabeln (namn).
Superglobals i PHP Det finns några fördefinierade matriser som kan ses i både globala och funktions omfattningar. För att kunna använda någon av dessa matriser i en funktion, behöver du inte föregå den med sökordet, globalt. Du går bara vidare och använda den genom att skriva sitt namn, inklusive en knapp för att få ett värde. Ett exempel på en sådan grupp är $ GLOBALS som vi just har sett. Dessa arrayer kallas Superglobals. I PHP, superglobals är: $ GLOBALS $ _SERVER $ _GET $ _POST $ _FILES $ _COOKIE $ _SESSION $ _REQUEST $ _ENV Jag har just talat om $ GLOBAL, som är den första i listan.
För att veta om de andra, bör du konsultera en del andra dokument. Icke funktionsblock Finns det villkorliga block, såsom if-blocket som lokala omfattningar? Nej det är inte. Lokal räckvidd normalt sysslar med funktioner. Tänk på följande kod: $ c = 2; if ($ c == 2) {$ c = 3; echo $ c; }?>