Változók és függvények - html, css, javascript, perl, php, mysql
Amikor a 2. fejezetben a változók használatát vitattuk meg, nem értünk hozzá hatókörük fogalmához. Térjünk vissza a változók témájához, és beszéljük meg, hogyan működnek együtt a változók és a funkciók.
Változó hatókör és globális változók
A fejezet második részében a funkcióhoz továbbított paraméterekre hivatkozva megjegyeztük, hogy változók küldhetők függvényként funkcióként. Azonban használhat egy változót egy függvényből, ha globális változó. A változó a globális kifejezés használatával válik ilyenvé. Tekintsük a változó hatókörét vagy hatókörét. Egy változó köre a program azon része, amelyben a változó létezik. Alapértelmezés szerint a parancsfájlban létrehozott változók elérhetőek a parancsfájl futása közben. Ezzel szemben a kiszolgálón léteznek környezeti változók (például SOSTYPE) az indítástól a leállításig.
A funkciók azonban új hatókört teremtenek. A függvényfüggvény függvény-argumentum, és minden függvényben definiált változó csak ebben a függvényben létezik, és kívülről nem érhető el. Más szavakkal, ezek helyi változók, amelyek helyi hatáskörbe tartoznak. Hasonlóképpen, egy külső változó csak úgy érhető el, ha egy függvényt argumentumként vagy a globális kifejezés használatával adja hozzá. Ez utóbbi megközelítőleg azt jelenti: "Azt akarom, hogy a függvényben lévő változó ugyanaz legyen, mint a függvényen kívül". Más szóval, a globális kijelentés egy függvényben egy helyi változót egy globális változóra konvertál, amelynek hatóköre a teljes programon belül van. A függvényben lévő globális változó bármely változása automatikusan átkerül egy azonos nevű változóhoz, amikor a funkción kívül (a funkcióhívás után természetesen) a visszatérési parancs segítségével kerül felhasználásra.
A globális nyilatkozat szintaxisa:
függvény FunctionName (SArgument) globális $ Változó;
nyilatkozat (ok);
Gondoljunk részletesebben arra, hogy mit jelent a globalizáció tanítása. Egy szabályos változó, még akkor is, ha egy funkción belüli neve pontosan ugyanaz a név a program fő részében, egy teljesen más struktúrát képvisel (talán más értelemben, mint a függvényen kívüli változó). Hagyja, hogy a függvényhívási vonal megjelenjen a FunctionName ($ Valuel) függvényében. és a függvény FunctionName ($ Argumentl). Amikor a PHP hozzáfér a függvényhez, $ Argumentl értéket állít be $ Valuel értékkel, majd az elsőt a függvény testében használják. Ha megváltoztatja a $ Argumentl értékét egy függvényen belül, akkor ez nem befolyásolja a $ Valuel értékét. Ha a változók nevei egybeesnek, ez nem változtat semmit: még mindig két különböző változó. Az egyik a funkción belül, a másik a funkción kívül. Ezért az összetévesztés elkerülése érdekében, a funkciók írása során körültekintően használtunk különböző változók nevét a függvény definíciósorában és a hívás sorában.
Megérintettük ezt a témát, mert valójában nem szükséges különböző neveket alkalmazni. A kényelem érdekében ugyanazt a nevet használhatja a függvénysorban és a hívásláncban (akkor könnyű megjegyezni az átadott érveket), de ne felejtsük el, hogy ezek különböző változók. A függvényben egy változó értéke egy függvényben marad. Ezzel szemben a függvényen kívüli változó módosításai nem befolyásolják a függvényen belüli azonos nevű változót. De ha globális változót hoztál létre a globális kimutatás használatával, ugyanabból a változóból kerül ki és be. A globális nyilatkozat használata
A $ Price és a $ TaxRate változókat a globális kimutatás használatakor a $ Cost és a $ Tax függvénybe írja be, ezért nem kell ezeket argumentumként használni.
globális $ adó;
A "Megrendelés" funkciókat a $ Cost és $ Tah változók használatára használják, amelyek már léteznek.
$ TotalCost
($ Cost * $ HowMany);
ha (($ TotalCost <50) AND ($Savings) ) print ("Your $$Savings will not apply because
- az értékesítés teljes értéke alatt van! \ n
„);
> if ($ TotalCost> = 50) $ TotalCost = $ TotalCost $ Megtakarítás;
>.
$ TotalCost = $ TotalCost * $ adó;
visszatérés $ TotalCost;
Mivel a függvény most különböző változóneveket használ, a számításokat ennek megfelelően módosítani kell. A változó terjedelmének jobb megértéséhez a $ TheCost változót is $ TotalCost-ra változtattuk. Ne feledje, hogy egy függvényben $ TotalCost nem olyan változó, mint egy azonos nevű változó, de a függvényen kívül
„);
Annak megmutatásához, hogy a globális utasítás egy függvénybe beír egy változót, és hogy a függvényben végrehajtott bármilyen változást globálisan alkalmazzák, nyomtassa ki a $ Tah értéket a függvényhívás előtt és után.
$ TotalCost = CalculateTotal ($ Mennyiség, $ Kedvezmény);
Mivel a függvény csak két argumentumot tartalmaz, a négy argumentum átadása hibát okoz.
most $$ Tax. \ n
„);
Ha nem volt globális nyilatkozat, akkor az itt és felül nyomtatott értékek ugyanazok lennének. De mivel a $ Tax globális változója módosult a függvényben, a nyomtatott értékek eltérőek lesznek.
Listázás 9.7 Mivel a CalculateTotal függvények megkövetelik a $ Cost és $ Tah változók értékeit, könnyen beilleszthetők a globális kimutatásba. Ne feledje, hogy a változók többé nem adhatók meg argumentumokként, ez megzavarhatja a programozót, és bizonyos hibákat okozhat az alkalmazás működésében.
Állítsa be az alapértelmezett argumentum értékeket
Funkciók írása esetén beállíthatja az argumentumokat az alapértelmezett értékekhez. A funkció csak akkor használja ezt az értéket, ha nem kap olyan érvet, amely az alapértelmezett értéket az aktuális értékével helyettesítheti. Más szavakkal, az argumentum alapértelmezett értékre állítása esetén ez az argumentum opcionális, opcionális, ha a függvény hívott.
Például tegyük a CalculatePayments () függvényt (lásd a 9.7. A havi fizetések számához alapértelmezés szerint 12-re állíthatja az értéket, létrehozva egy függvényt és a következő szintaxist használhatja:
függvény CalculatePayments ($ összeg, $ NumberPayments = "12")
Egy függvény hívása a CalculatePayments kóddal ($ Amounts); ne okozzon problémát, hanem a CalculatePayments sor ($ Amounts, "2 4"); a $ NumberPayments változó értékét a 12 alapértelmezett értékről a 24 tényleges értékre cseréli.
Az alapértelmezett argumentumérték akkor használható, ha a program logikája bizonyos értéket tartalmaz, amelyet még mindig megváltoztathat. Azonban ne feledje, hogy az alapértelmezett argumentumokat mindig meg kell adni a többi standard argumentum után (azaz nincs alapértelmezett értéke). Ez azért van, mert a PHP argumentumainak értékei közvetlenül a hívószövegbõl érkezõ átvétel sorrendjében kerülnek hozzárendelésre. Ezért nem hagyhatja el az első argumentum értékét, és állítsa be az értéket a második értékre (ez azt jelzi, hogy egy értéket küldött, amelyet automatikusan az első argumentumhoz rendeltek, nem pedig a másodikhoz). Tekintsen egy példát arról, hogy nem kell hívnia a funkciót. Tegyük fel, hogy a függvény a következőképpen van meghatározva:
függvény CalculateTotal ($ HowMany, $ Price = "20.00", $ TaxRate = "0.06")
Ezt a vonalat hívjuk:
CalculateTotal (3, "0.07");
Ugyanakkor a $ HowMany értékét $ 3-ra szeretnénk beállítani, és szeretnénk elhagyni a $ Price-ot 20.00-kor, és reméljük, hogy a $ TaxRate értéke 0.07-re változik. Sajnos, semmi sem fog jönni. A $ HowMany $ változó megkapja az értéket 3, $ Ár 0.07 és $ TaxRate 0.06 marad. Emlékszem, kicsit más eredményre akarunk jutni. A kívánt eredményt a következőképpen érheti el:
CalculateTotal (3, "20.00", "0.07");
Most, tekintettel arra, amit alapértelmezés szerint az argumentumok értékének megadásáról tudtunk meg, megváltoztatjuk a numbers.php oldalt (lásd a 9.7.
Alapértelmezett értékeket használó funkció írása
Ha két argumentumot küld a CalculatePayments függvénybe (az alapértelmezett érték helyett, a $ NumberPayments argumentum megkapja a második értéket.
A "CalculatePayments" funkció hívása most csak a $ TotalCost értékét adja át argumentumként, mivel a $ NumberPayments alapértelmezett érték. Itt át tudnád adni a $ NumberPayments értékét, ha úgy döntöttél, hogy más összegű havi kifizetéseket használsz.
Listázás 9.8 t Frissített számok.php. Az alapértelmezett érték beállítása a függvényben az argumentumot opcionálisvá teszi.
Az ebben a fejezetben található összes példában az argumentumokat függvényekre küldjük. Ebből következik, hogy a változó értéke egy másolatot küld a függvénynek, nem maga a változónak. Az argumentumokat referenciaként is átviheti, amely lehetővé teszi egy változó módosítását egy függvényben anélkül, hogy globálisvá tenné, de ez túl bonyolult téma, amelyre ez a könyv nem vonatkozik. Néhány további információt a C. függelék tartalmaz.
A különböző iskolák különböző konvenciókat használnak a funkciós érvek nevére. Egyrészt egy olyan függvény használata, amely ugyanazt a nevet viseli, mint a függvényen kívüli változó neve, könnyebb megjegyezni, hogy a változók hogyan kapcsolódnak egymáshoz. Másrészről ugyanazok az argumentumnevek használata a függvényekben szükségtelenné teheti azokat a többi scripthez. Elismerjük a hibrid módszert is, amelyben a kisbetűs betű egyszerűen hozzáadódik a függvénynevek kezdetéhez, például $ fHowMany és SfTaxRate. Néhány programozó a globális változókra utal, mint $ gVariable. Nevek hozzárendelése esetén fontos, hogy maradjon következetes és ne térjen el a korábban elfogadott logikától.