Index: phpdoc/hu/language/constants.xml diff -u phpdoc/hu/language/constants.xml:1.11 phpdoc/hu/language/constants.xml:1.12 --- phpdoc/hu/language/constants.xml:1.11 Thu Dec 27 19:45:25 2001 +++ phpdoc/hu/language/constants.xml Sat Dec 29 18:57:12 2001 @@ -1,13 +1,13 @@ - + Konstansok A konstans egy egyszerű érték azonosítója (neve). Mint ahogy - az elnevezése is mutatja, a program futása során nem változtatható + az elnevezése is mutatja, a program futása során nem változik meg az értéke (a mágikus __FILE__ és __LINE__ konstansok az egyedüli kivételek ez alól). A konstansok alapesetben érzékenyek a kis- és nagybetűs @@ -25,9 +25,9 @@ - Ebben az esetben egy betű lehet angol betű karakter - a-z-ig és A-Z-ig, valamint az ASCII karakterek - 127-es kódtól 255-ös kódig (0x7f-0xff). + Ebben az esetben egy betű lehet az angol abc egy betűje + a-z-ig és A-Z-ig, valamint a 127-től 255-ig terjedő + (0x7f-0xff) ASCII kódú karakterek. @@ -38,8 +38,8 @@ Szintakszis Konstanst a define függvénnyel - tudsz létrehozni. Miután definiáltad, később nem - tudod megváltoztatni az értékét, vagy törölni. + lehet létrehozni. Definiálása után később nem + lehet törölni vagy megváltoztatni az értékét. Csak skaláris adat (boolean, integer, @@ -47,13 +47,13 @@ egy konstans tartalma. - A konstans értékét a nevének megadásával kaphatod meg. + A konstans értékére a nevének megadásával lehet hivatkozni. A változókkal ellentétben nem szabad $ jelet tenned a konstand neve elé. - Használhatod még a constant függvényt is, + Használható még a constant függvényt is, ha például a konstans nevét egy változó adja. A get_defined_constants függvénnyel - tudod a definiált konstansok listáját megkapni. + lehet a definiált konstansok listáját megkapni. @@ -64,35 +64,35 @@ Ha egy definiálatlan konstanst próbálsz meg használni, a PHP - úgy veszi, hogy a konstans nevét veszi karaktersorozatként. - Egy + a konstans nevét veszi karaktersorozatként értékül. + Ilyen esetekben egy notice szintű hiba - keletkezik, ha ez történik. A defined - függvényt használhatod, ha konstans létezését szeretnéd vizsgálni. + keletkezik. A defined + függvény segítségével vizsgálható a konstans létezése. A következők a fontosabb különbségek a változókhoz képest: - A konstansok nevét nem kell dollár jellel $ kezdeni + A konstansok nevét nem kell dollár jellel $ kezdeni. - A konstansokat akárhol definiálhatod, és akárhol elérheted, a - változók környezeti korlátozásaitól függetlenül + A konstansokat akárhol definiálhatók, és akárhonnan elérhetők, a + változók környezeti korlátozásaitól függetlenül. - A konstansokat nem módosíthatóak, és nem törölhetőek, miután - egyszer beállítod az értéküket + A konstansok nem módosíthatóak, és nem törölhetőek, miután + egyszer létrehozták azokat. - A konstansok csak skaláris értékeket tartalmazhatnak + A konstansok csak skaláris értékeket tartalmazhatnak. @@ -118,7 +118,7 @@ Előre definiált konstansok - Az mindig elérhető előre definiált konstansok: + A mindig elérhető, előre definiált konstansok: @@ -137,9 +137,9 @@ __LINE__ (független a kis- vagy nagybetűs irásmódtól) - Az aktuális szkripten belüli sor száma. Ha includdal, - vagy require-ral behívott fájlra alkalmazzuk, az - include-olt fájlon belüli pozíciót kapjuk. + Az aktuális szkripten belüli sor száma. Ha include-dal, + vagy require-ral behívott fájlra alkalmazzuk, akkor azon a + fájlon belüli pozíciót kapjuk. @@ -229,11 +229,9 @@ Valami történt, ami lehet, hogy hiba, de lehet, - hogy nem :) A végrehajtás folytatódik. [lehet, - hogy formázza a vinyódat, lehet, hogy nem :)] - Ilyenre példa egy idézőjelek nélküli string, - mint tömbindex, vagy egy változó elérése, - amelynek még nem adtunk értéket. + hogy nem :) A végrehajtás folytatódik. Ilyenre + példa egy idézőjelek nélküli sztring, mint tömbindex, + vagy egy változó elérése, amelynek még nem adtunk értéket. Index: phpdoc/hu/language/expressions.xml diff -u phpdoc/hu/language/expressions.xml:1.12 phpdoc/hu/language/expressions.xml:1.13 --- phpdoc/hu/language/expressions.xml:1.12 Thu Dec 27 19:59:26 2001 +++ phpdoc/hu/language/expressions.xml Sat Dec 29 18:57:12 2001 @@ -1,31 +1,29 @@ - - + + Kifejezések - A kifejezések a PHP legfontosabb építőkövei. A PHP-ban minden, - amit leírsz, egy kifejezés. A lehető legegyszerűbb és még - pontos definíciója a kifejezésnek: "valami, aminek - értéke van". + A kifejezések a PHP legfontosabb építőkövei. A PHP-ban majdnem minden, + amit leírsz, egy kifejezés. A lehető legegyszerűbb és mégis + pontos definíciója a kifejezésnek: "mindaz, amelynek értéke van". - A kifejezések legalapvetőbb formái a konstansok és változók. - Amikor beírod, hogy "$a = 5", az '5'-öt az $a változóhoz - rendeled. Az '5'-nek nyilván 5 az értéke, vagy más szavakkal - az '5' egy olyan kifejezés, melynek értéke 5 (itt az '5' - egy egész konstans). + A kifejezések legalapvetőbb formái az állandók és a változók. + Az "$a = 5" az '5'-öt az $a változóhoz rendeli. + Az '5'-nek nyilván 5 az értéke, vagyis más szavakkal + az '5' olyan kifejezés, melynek értéke 5 (itt az '5' + egy egész típusú állandó). - Ez után a hozzárendelés után azt várod, hogy $a értéke 5 legyen, - sőt, ha azt írod, hogy $b = $a, azt várod, hogy az eredmény - legyen azonos azzal, mintha $b = 5-öt írtál volna. Más - szavakkal az $a egy kifejezés, melynek értéke 5. Ha - minden jól megy, pontosan ez fog történni. + Ez után a hozzárendelés után $a értéke 5 kell legyen, + sőt, $b = $a esetén az eredménynek azonosnak kell lennie azzal, + mint $b = 5 esetén. Másképp megfogalmazva az $a olyan kifejezés, amelynek értéke 5. + Ha minden jól megy, pontosan ez fog történni. @@ -44,68 +42,67 @@ - Feltéve, hogy nem idegen tőled a függvények koncepciója - (ha nem, akkor olvasd el a függvényekről szóló fejezetet), - azt várnád, hogy $c = foo() lényegében - azonos $c = 5 beírásával és igazad is van. - A függvények olyan kifejezések, amiknek az értéke a + Megelőlegezzük ,hogy nem idegen Tőled a függvények koncepciója - + ha nem így lenne, akkor olvasd el a függvényekről szóló fejezetet. + Amint az elvárható, a $c = foo() lényegében + azonos $c = 5 beírásával. + A függvények olyan kifejezések, amelyeknek az értéke a visszatérési értékük. Mivel foo() 5-tel tér vissza, a - 'foo()' kifejezés értéke 5. Általában a függvényeket - nem arra használjuk, hogy egy bedrótozott számmal - térjenek vissza, hanem azért, hogy valamit kiszámoljanak. + 'foo()' kifejezés értéke 5. Általában a függvények nem arra + használatosak, hogy egy bedrótozott számmal térjenek vissza, + hanem valamilyen számolt származtatott értékkel. Természetesen a változóknak a PHP-ben nem kell egésznek lenniük, és nagyon gyakran nem is azok. A PHP három féle - skalártípust támogat: egész, lebegőpontos és string + skalártípust támogat: egész, lebegőpontos és sztring értékeket (skalárnak az számít, amit nem lehet kisebb - darabokra bontani, nem úgy, mint a tömböket, például). + darabokra bontani, eltérően - például - a tömböktől). A PHP két nem skalár típust is támogat: a tömb és objektum típust. Mindegyikükhöz lehet értéket rendelni, és mindegyikük lehet egy függvény visszatérési értéke. - Eddig, a PHP/FI 2 használói nem találkoztak semmi különössel. - Mindamellett a PHP továbbviszi a kifejezéseket, úgy mint + Eddig a PHP/FI 2 használói nem találkoztak semmi különössel. + Mindamellett a PHP továbbfejleszti a kifejezés fogalmát, ahogy azt sok hasonló nyelv teszi. A PHP egy kifejezés-orientált - nyelv, olyan szempontból, hogy majdnem minden kifejezés. - Tekintsük a példát, amivel foglalkoztunk, '$a = 5'. Látható, - hogy két értéket hívtunk meg, az egész konstans '5'-öt, - és $a értékét, amit az 5 értékkel frissítettünk. De az az - igazság, hogy még egy érték is van a kifejezésben, a - hozzárendelés maga. A hozzárendelés maga kiértékeli az - átadandó értéket, ebben az esetben az 5-öt. Gyakorlatilag - ez azt jelenti, hogy '$a=5', eltekintve attól, hogy - mit csinál, egy kifejezés, aminek az értéke 5. Ezért ha - olyasmit írunk, hogy '$b=($a=5)', az olyasmi, mintha azt - írtuk volna, hogy '$a=5; $b=5;' (a pontosvessző jelöli az - állítás végét). Mivel a hozzárendelés jobbról balra történik, - ez ír6ó zárójelek nélkül is: '$b=$a=5'. + nyelv, abból a szempontból, hogy majdnem minden kifejezés. + Tekintsük a példát, amivel eddig foglalkoztunk: '$a = 5'. Látható, + hogy két értéket szerepel benne: az egész konstans '5' + és $a értéke, amelyet az 5 értékkel frissítettünk. Az + igazság azonban az, hogy még egy érték is van a kifejezésben, a + magáé a hozzárendelésé. A hozzárendelés maga kiértékeli az + átadandó értéket, ebben az esetben az 5-öt. Ez azt jelenti + gyakorlatilag, hogy a '$a=5', a hatásától eltekintve egy kifejezés, + amelynek az értéke 5. Ha ezért olyasmit írunk, hogy '$b=($a=5)', akkor + az olyasmi, mintha '$a=5; $b=5;'-t írtunk volna (a pontosvessző jelöli + az állítás végét). Mivel a hozzárendelés jobbról balra történik, + ez írható zárójelek nélkül is: '$b=$a=5'. - A kifejezés-orientáltság másik jó példája a pre- és - postinkrementáció. A PHP/FI 2 használóinak és sok más + A kifejezés-orientáltság másik jó példája az elő- és + utónövekményes operátor. A PHP/FI 2 használóinak és sok más nyelvet használónak ismerős lehet a változó++ és - változó-- jelölés. Ezek az inkrementáló és dekrementáló + változó-- jelölés. Ezek az növelő és csökkentő operátorok. A PHP/FI 2-ben a '$a++'-nek nincs értéke (mert nem kifejezés), és ezért nem is lehet semmihez hozzárendelni, vagy valamire használni. A PHP kiterjesztette az inkrementálás/dekrementálás lehetőségeit azzal, hogy ezeket is kifejezésekké alakította, mint ahogyan a C nyelvben is megtették. - A PHP-ben a C nyelvhez hasonlóan kétféle inkrementáció - van: pre- és post. Mindkettő megnöveli a változó értékét, + A PHP-ben a C nyelvhez hasonlóan kétféle növekményes operátor + van: elő- és utó(növekményes). Mindkettő megnöveli a változó értékét, tehát a változó szempontjából nézve nincs különbség, - a kifejezés értékében annál inkább. A pre-inkrementáció, - amit '++$változó'-ként írunk, a növelt értéket adja (A - PHP először növeli a változót, majd kiértékeli, innen - a 'pre-'). A post-inkrementáció '$változó++' az eredeti - értéket adja (A PHP először kiértékeli, aztán növeli - a változót, innen a 'post-'). [a dekrementációval ugyanez - a helyzet, értelemszerűen] + a kifejezés értékében annál inkább. A '++$változó' formájú + előnövekményes a megnövelt értéket adja vissza. (A + PHP először növeli a változót, majd kiértékeli, innen jön az + 'elő'). A '$változó++' alakú utónövekményes a változó eredeti + értéket adja. (A PHP először kiértékeli, aztán növeli + a változót, innen jön az 'utó'). + [A csökkentő operátorokkal értelemszerűen ugyanez a helyzet.] @@ -121,27 +118,22 @@ Az utolsó példa, amivel itt foglalkozunk, a kombinált - hozzárendelés-operátor kifejezés. [eredeti: combined - operator-assignment fordícccsa le, aki akarja (tugggya)]. - Lehet, hogy már tudod, hogy ha $a-t eggyel szeretnéd + hozzárendelés-operátor kifejezés. + Már tudhatod, hogy ha $a-t eggyel szeretnéd megnövelni, akkor egyszerűen írhatod, hogy '$a++' vagy - '++$a'. [ha nem, akkor büntiből olvasd el ezt a fejezetet - 10-szer eddig a pontig]. De mi van akkor, hogy ha - nem eggyel, hanem 3-mal akarod megnövelni? Írhatod - háromszor, hogy '$a++', de ez nem valami hatékony és - üdvözítő megoldás. Egy sokkal jobb gyakorlat az - '$a=$a+3'. Ez kiértékeli az $a plusz 3-at, és - hozzárendeli az $a-hoz, aminek az lesz az eredménye, - hogy $a megnő hárommal. De a PHP-ben, mint több más - C-szerű nyelven egy rövidebb formában is írhatod - [és mivel a programozó egyik fő tulajdonsága a - lustaság, a türelmetlenség és az akaratosság - mellett]: '$a+=3'. Ez pont azt jelenti, hogy - "vedd $a értékét, és adjál hozzá hármat, és írd + '++$a'. Mi van akkor, hogy ha nem eggyel, hanem 3-mal kell + megnövelni? Lehet háromszor egymás után írni, hogy '$a++', + de ez nem valami hatékony és üdvözítő megoldás. + Sokkal jobb gyakorlat az '$a=$a+3' használata. + Ez kiértékeli az $a + 3-at, és hozzárendeli az $a-hoz, amelynek + az lesz a végső eredménye, hogy $a értéke megnő hárommal. + A PHP-ben - több más C-szerű nyelvhaz hasonlóan - ennél + rövidebb formában is megadható: '$a+=3'. Ez pontosan azt + jelenti, hogy "vedd $a értékét, és adjál hozzá hármat, és írd vissza az eredményt $a-ba". Amellett, hogy rövidebb és érthetőbb, még gyorsabb is. '$a+=3' értéke, mint egy normál értékadásé a hozzárendelt érték. Ez - persze NEM 3, hanem $a plusz 3 (hiszen ezt az + persze NEM 3, hanem $a + 3 (hiszen ezt az értéket rendeltük $a-hoz). Az összes többi kétoperandusú operátort lehet ilyenformán hozzárendelő-operátorként használni, például '$a-=5' (kivon 5-öt $a-ból), @@ -149,8 +141,8 @@ - Van még egy kifejezés, ami elég különösnek tűnhet, - hacsak nem láttad más nyelvekben, a háromoperandusú + Létezik még egy kifejezés, amely elég különösnek tűnhet, + hacsak nem láttad már más nyelvekben: a háromoperandusú feltételes operátor: @@ -161,21 +153,21 @@ - Értéke: ha az első kifejezés értéke igaz (nem nulla), + Értéke: ha az első kifejezés értéke &true;(nem nulla), akkor a második részkifejezés, egyébként a harmadik részkifejezés. Egy segítő példa: - + +]]> - + Ez megegyezik az alábbi kóddal: - + - [Vigyázat!] Az alábbi példa segíthet a pre- és - posztinkrementálás, és a kifejezések jobb megértésében: + Az alábbi példa segíthet az elő- és utónövekményes illetve + csökkentő operátorok és kifejezéseik jobb megértésében: @@ -196,12 +188,13 @@ { return $i*2; } + $b = $a = 5; /*ötöt rendelünk $a és $b változókhoz */ -$c = $a++; /* post-inkrementálás, $c 5 lesz, mert +$c = $a++; /* utónövekményes, $c 5 lesz, mert először $a kiértékelődik, csak aztán nő */ -$e = $d = ++$b; /* pre-inkrementálás, $b növelt értéke (6) +$e = $d = ++$b; /* előnövekményes, $b növelt értéke (6) adódik tovább $d-nek és $e-nek */ /* itt $d és $e hat */ @@ -221,13 +214,12 @@ A fejezet elején azt ígértük, hogy leírjuk a különböző - utasítás-típusokat, és ahogy reméljük, a kifejezések - lehetnek állítások. De nem minden utasítás állítás. - Így utasítás, ami 'kif' ';', vagyis egy kifejezés, - amit pontosvessző követ. A '$b=$a=5;'-ben $a=5 + utasítás-típusokat, és ígéretnek megfelelően a kifejezések + lehetnek állítások. Nem minden kifejezés állítás azonban, mert + utasítás, amely illeszkedik 'kif' ';' mintára, vagyis a + pontosvesszővel folytatodó kifejezés. A '$b=$a=5;'-ben $a=5 érvényes kifejezés, de nem érvényes utasítás önmagában. - A teljes '$b=$a=5;' már igen. [Gábor elmondta nekem, hogy: - A lényeg, hogy az $a=5 nem utasítás, mivel nem követi ;] + A teljes '$b=$a=5;' már igen. @@ -238,7 +230,7 @@ A &true; és &false; konstansok (nevük nem függ a kis- és nagybetűs írásmódtól) a PHP két lehetséges logikai értékei. Amikor szükséges, a kifejezések automatikusan - logikai értékké alakulnak. Lásd a + logikai értékké alakulnak. Lásd a típuskonverziókról szóló fejezetet további részletekért. @@ -246,14 +238,13 @@ A PHP a kifejezések egy teljes és hatékony megvalósítását biztosítja, és teljes dokumentációja meghaladja e kézikönyv - kereteit. A fenti példák rávilágítanak, hogy milyen állatfaj - a kifejezés és hogyan kell létrehozni hasznos kifejezéseket. - A kézikönyv hátralevő részében ahol azt írjuk, hogy - expr akkor egy érvényes - PHP kifejezést értünk. + kereteit. A fenti példák rávilágítanak, hogy mi is az a + kifejezés, és hogyan kell létrehozni hasznos kifejezéseket. + A kézikönyv hátralevő részében az expr + alatt egy érvényes PHP kifejezést értünk. - + - + Függvények @@ -29,19 +29,21 @@ definíciók is. - PHP 3-ban a függvényeket definiálnod kell használatuk előtt. - Nincs ilyen megkötés PHP 4-ben. + PHP 3-ban a függvényeket definiálni kell, mielőtt hivatkozás történik rájuk + (függvényhívás előtt). + PHP 4-ben nincs ez a megkötés. - A PHP nem támogatja a függvények polimorfizmusát, a függvényeket - nem tudod undefiniálni vagy újradefiniálni a már definiált függvényeket. + A PHP nem támogatja a függvények polimorfizmusát (többalakúságát), a + függvényekdefiníciókat nem lehet megszüntetni vagy újradefiniálni egy + már definiált függvényeket. A PHP 3 nem támogatja a változó számú függvényargumentumokat, bár az argumentumok kezdőértéke támogatott. Lásd az Argumentumok kezdőértéke című részt bővebb információért. - A PHP 4 mindkettőt támogatja. Lásd + A PHP 4 mindkettő lehetőséget támogatja. Lásd a Változó számú függvényargumentumok című részt és a func_num_args, func_get_arg és a func_get_args függvényeket részletesebb leírásért. @@ -57,16 +59,16 @@ ami egy vesszővel határolt változó és/vagy konstanslista. - A PHP támogatja az érték szerinti (ez az alapértelmezett), - cím szerinti - paraméterátadást, és az referenciakénti + paraméterátadást is, és az argumentumok kezdőértékét. A változó hosszúságú argumentumlisták csak a PHP 4-ben jelentek meg. Lásd a változó hosszúságú argumentumlistákat és a func_num_args, func_get_arg és a func_get_args - függvényeket részletesebb leírásért. Hasonló hatás érhető el PHP 3-ban - a függvénynek tömbargumentum átadásával: + függvényeket részletesebb leírásért. PHP 3-ban hasonló hatás érhető el + a függvénynek tömb típusú változó paraméterként történő átadásával: - Argumentumok cím szerinti átadása + Referencia szerinti argumentumfeltöltés - Alapértelmezésben a függvényargumentumok érték szerint adódnak át + Alapértelmezésben a függvény paraméterei érték szerint adódnak át (vagyis ha megváltoztatod a változót a függvényen belül, annak a függvényen kívülre nincs hatása). Ha szeretnéd megengedni, hogy - a függvény módosítsa az argumentumát, cím szerint kell átadnod. + a függvény módosítsa az átadott paramétereket, referencia szerint + kell átadni azokat. - Ha azt szeretnéd, hogy egy függvényargumentum mindig cím szerint - adódjon át, a függvénydefinícióban az argumentum neve elé tegyél - egy & jelet. + Ha egy függvényargumentum mindig referencia szerint kell átadni, + akkor a függvénydefinícióban az argumentum neve elé egy & + jelet kell írni. - Ha egy olyan függvénynél szeretnél paramétert cím szerint átadni, - amely ezt nem teszi meg alapból, akkor a függvényhívásban az argumentum - neve elé kell tenned egy & jelet: - + Ha egy olyan függvénynél kell a paramétert referencia szerint átadni, + amely ezt nem teszi meg alapból, akkor a függvény hívásakor kell a + paraméterlistában a neve elé kell tenni az & jelet: - Figyelj rá, hogy amikor kezdőértékeket definiálsz, a kezdőértékkel - rendelkező paraméterek más argumentumoktól jobbra helyezkedjenek el; - különben a dolgok nem úgy mennek majd, ahogy várnád [hanem úgy, ahogy írtad :)]. - Nézd meg a következő kódot: + Figyelj arra, hogy a kezdőértékkel rendelkező argumentumok más argumentumoktól + jobbra helyezkedjenek el; különben a dolgok nem úgy mennek majd, ahogy azt várnád + [hanem úgy, ahogy írtad :)]. Lásd a következő kódot: @@ -237,7 +238,7 @@ A PHP 4 támogatja a változó hosszúságú argumentumlistát a felhasználók által definiált függvényekben. Valóban nagyon - egyszerű, a func_num_args, + egyszerű kezelni ezt a func_num_args, func_get_arg és a func_get_args függvényekkel. @@ -255,7 +256,7 @@ Visszatérési értékek - Az opcionális return állítást használva adhatnak vissza értéket + Az elhagyható return állítást használva adhatnak vissza értéket a függvények. Bármely típus visszaadható, beleértve a listákat és az objektumokat is. @@ -269,16 +270,16 @@ ]]> - - - - Több értéket nem tud visszaadni a függvény, de hasonló - hatás érhető el úgy, ha listát adsz vissza. [Ha nincs return, az utolsó kifejezés értékével tér viszsza a függvény] + + + + Több értéket nem tud visszaadni a függvény, de hasonló + hatás érhető el ezen többszörös értékek listába szervezésével. - Ha referenciát szeretnél függvény visszatérési - értékeként adni, a & referencia operátort kell alkalmaznod - a függvény deklarálásakor és a a visszatérési érték - megadásakor is. + Ha a függvénynek referenciával kell visszatérnie, akkor az & referencia + operátort kell alkalmaznod a függvény deklarásákor és a a visszatérési érték + megadásakor is. - Ez egy helytelenített függvény, és csak a PHP/FI2->PHP 3 konverter - használhatja. + Ez egy ellenjavallt tulajdonság, és csak a PHP/FI2->PHP 3 konverter + használhatja. Az old_function segítségével deklarált függvényeket - nem hívhatod a PHP belső részéből. Más dolgok mellett ez azt jelenti, hogy + nem hívhatod a PHP belső részéből. Több minden mellett ez azt jelenti, hogy nem használhatod olyan függvényekben, mint az usort, array_walk, és a register_shutdown_function. - Meg tudod kerülni ezt a korlátozást úgy, hogy írsz egy keretfüggvényt, - (normál PHP 3 formában) ami meghívja az old_function-t. + Ez a korlátozás megkerülhető egy olyan keretfüggvény megírásával (normál PHP 3 formában), + amely meghívja az old_function-t. @@ -343,10 +343,10 @@ A PHP lehetővé teszi a függvényváltozók használatát. - Ez azt jelenti, hogy ha egy változónév után zárójelek vannak, akkor - a PHP keresni fogja az azonos nevű függvényt bármilyen értékről legyen - is szó, és megpróbálja végrehajtani. Ezt többek között használhatod - callback, függvénytáblák implementálására... + Ha egy változónevet kerek zárójelek követnek, akkor a PHP megkeresi + a változó értékével azonos nevű függvényt, és megpróbálja azt végrehajtani. + Ezt többek között visszahívandó (callback) függvények vagy függvénytáblák + implementálására használható. Index: phpdoc/hu/language/operators.xml diff -u phpdoc/hu/language/operators.xml:1.14 phpdoc/hu/language/operators.xml:1.15 --- phpdoc/hu/language/operators.xml:1.14 Thu Dec 27 19:38:16 2001 +++ phpdoc/hu/language/operators.xml Sat Dec 29 18:57:12 2001 @@ -1,6 +1,6 @@ - + Operátorok @@ -66,9 +66,9 @@ Hozzárendelő operátorok - Az alapvető hozzárendelő operátor az "=". Talán - elsőre azt hiszed, hogy ez az "egyenlő valamivel" - jele. De nem. Valójában azt jelenti, hogy a bal oldali + Az alapvető hozzárendelő operátor az "=". Elsőre + azt hihetnénk, hogy ez az "egyenlő valamivel" + jele. Valójában azt jelenti, hogy a bal oldali operandus [ami az egyenlőségjel bal oldalán áll] a jobb oldali kifejezést kapja értékül. @@ -85,10 +85,10 @@ - Sőt, az alapvető hozzárendelő operátoron felül - vannak "kombinált" operátorok is az összes - kétoperandusú aritmetikai és stringoperátok számára, - amik lehetővé teszik, hogy használjunk egy változót + Az alapvető hozzárendelő operátoron felül + vannak ún. "kombinált" operátorok is az összes + kétoperandusú aritmetikai és sztring operátorok számára, + amelyek lehetővé teszik, hogy használjunk egy változót egy kifejezésben, majd rögtön be is állítsuk a változót a kifejezés értékére. Például: @@ -97,24 +97,23 @@ $a = 3; $a += 5; // $a-t 8-ra állítja, mintha $a = $a + 5;-öt írtunk volna $b = "Csecs "; -$b .= "Emő"; // $b-t "Csecs Emő"-re állítja, egyenértékű: $b = $b . "Emő"; +$b .= "Emő"; // $b "Csecs Emő" lesz, egyenértékű párja: $b = $b . "Emő"; ]]> - A hozzárendelés az eredeti változót újba másolja (érték - szerint), így az egyiken elvégzett változtatások a másikat - nem érintik. Ezt néha fontos tudni, például ha mondjuk - egy nagy tömböt kell másolni egy sokszor végrehajtott - ciklus belsejében. A PHP 4 támogatja paraméterek érték - szerinti átadását a $var = - &$othervar; szintaxissal, - de ez PHP 3-ban nem működik. A 'cím szerinti paraméterátadás' - azt jelenti, hogy mindkét változó ugyanarra az adatra - mutat, tehát semmi nem másolódik sehová [a változó címét - kivéve...] További információkat a referenciákról a $var =&$othervar; szintaxisú + referencia szerinti érték hozzárendelést is, + de ez PHP 3-ban nem működik. A 'referencia szerinti értékhozzárendelés' + azt jelenti, hogy mindkét változó ugyanarra az adatra fog mutatni, és + nem történik meg a változó értékének lemásolása. + További információkat a referenciákról a Referenciák részletesen című fejezetben olvashatsz. @@ -124,8 +123,8 @@ Bitorientált operátorok - A bitorientált operátorok teszik lehetővé, hogy egy - egészen belül bizonyos biteket beállítsunk, vagy kimaszkoljunk. + A bitorientált operátorok teszik lehetővé, hogy egész típusú számokon + belül bizonyos biteket beállítsunk, vagy lefedjünk (maszkolás).

@@ -142,22 +141,22 @@ $a & $b És - Azon helyeken, ahol mind $a-ban, mind $b-ben '1' volt, - az eredményben '1' lesz, egyébként '0'. + Ott lesz '1' az eredményben, ahol $a és $b mindegyikében az a bit '1'-es. + Minden más biten '0'. $a | $b Vagy - Ott lesz '1' az eredmény, ahol vagy $a-ban, vagy $b-ben '1' állt. + Ott lesz '1' az eredményben, ahol $a és $b közül legalább az egyik azon a bitje '1'-es. + Minden más biten '0'. $a ^ $b Kizáró vagy - Ott lesz '1', ahol vagy $a-ban, vagy $b-ben '1' áll, de csak az - egyikben. [Más közelítésben ott lesz '1' az eredmény, ahol különböző bitek + Ott lesz '1' az eredményben, ahol $a és $b közül csakis pontosan az egyikben '1' állt. Minden más biten '0'. + [Más közelítésben ott lesz '1' az eredményben, ahol különböző bitek álltak $a-ban és $b-ben; megint más közelítésben $a azon bitjei - invertálódnak, amely helyeken $b-ben '1' áll (=$b azon bitjeit - invertálja, ahol $a-ban '1' áll)] + invertálódnak, amely helyeken $b-ben '1' áll] ~ $a @@ -167,15 +166,15 @@ $a << $b Eltolás balra - $a bitjeit $b-vel balra tolja (minden tolás 2-vel való + $a bitjeit $b számú bittel balra tolja (minden bitnyi eltolás 2-vel való szorzást jelent [amíg el nem fogynak a bitek, utolsó helyen előjelbit van ?!]) $a >> $b Eltolás jobbra - $a bitjeit $b-vel jobbra tolja (minden tolás 2-vel való - [egész!]osztást jelent [vigyázz! negatív számot inkább ne tolj jobbra!!]) + $a bitjeit $b számú bittel jobbra tolja (minden bitnyi eltolás 2-vel való + egész-osztást jelent. [Vigyázz, negatív számot inkább ne tolj jobbra!]) @@ -204,55 +203,55 @@ $a == $b Egyenlő - Igaz, ha $a és $b értéke egyenlő + Igaz (&true;), ha $a és $b értéke egyenlő $a === $b Azonos - Igaz, ha $a és $b értéke egyenlő, és azonos típusúak (csak PHP 4) + Igaz (&true;), ha $a és $b értéke egyenlő, és azonos típusúak (csak PHP 4) $a != $b Nem egyenlő - Igaz, ha $a és $b értékei különbözők + Igaz (&true;), ha $a és $b értékei különbözők $a <> $b Nem egyenlő - Igaz, ha $a és $b értékei különbözők + Igaz (&true;), ha $a és $b értékei különbözők $a !== $b Nem azonos - Igaz, ha $a és $b értékei vagy típusai különbözők (csak PHP 4) + Igaz (&true;), ha $a és $b értékei vagy típusai különbözők (csak PHP 4) $a < $b Kisebb mint - Igaz, ha $a szigorúan kisebb, mint $b + Igaz (&true;), ha $a szigorúan kisebb, mint $b $a > $b Nagyobb mint - Igaz, ha $a szigorúan nagyobb, mint $b + Igaz (&true;), ha $a szigorúan nagyobb, mint $b $a <= $b Kisebb, vagy egyenlő - Igaz, ha $a kisebb, vagy egyenlő, mint $b + Igaz (&true;), ha $a kisebb, vagy egyenlő, mint $b $a >= $b Nagyobb, vagy egyenlő - Igaz, ha $a nagyobb, vagy egyenlő, mint $b + Igaz (&true;), ha $a nagyobb, vagy egyenlő, mint $b
- Van egy feltételes operátor is, a "?:" (ternális) - operátor, ami úgy muködik, mint a C-ben és sok más nyelvben. + A feltételes "?:" (ternális) + operátor úgyanúgy működik, mint C-ben és sok más nyelvben. @@ -263,9 +262,9 @@ A kifejezés kif2-t értékeli ki, ha - kif1 igaznak bizonyul, és + kif1 igaznak bizonyul (&true;), és kif3-at, ha - kif1 hamis. + kif1 hamis (&false;). @@ -274,8 +273,8 @@ Hibakezelő operátorok - A PHP egy hibakezelő operátort támogat, az at (kukac) jelet (@). - Ha egy PHP kifejezés elé írod, a kifejezés által esetlegesen + A PHP egy hibakezelő operátort támogat, az at jelet (@ - kukac). + PHP kifejezés elé írva a kifejezés által esetlegesen generált hibaüzenete(ke)t figyelmen kívül hagyja a rendszer. @@ -284,8 +283,8 @@ szolgáltatás be van kapcsolva, bármilyen a kifejezés által generált hibaüzenet a $php_errormsg globális változóba kerül tárolásra. Ez a változó minden hiba esetén felülíródik, - ezért ellenőrizd minél hamarabb a kifejezést követően - ha használható információt szeretnél kapni. + ezért használható információk kinyerése érdekében a kifejezést + követően ezt minél hamarabb ellenőrizni kell. @@ -307,27 +306,27 @@ - A @ operátor csak kifejezésekre működik. Egy egyszerű ökölszabály, - hogy ha valaminek az értékét tudod venni, akkor az elé a @ - operátor is oda tehető. Például használhatod változók, - függvények és include hivások, konstansok, - neve előtt és sok más esetben. Nem írhatod azonban oda függvény - és osztály definíciók, vagy nyelvi szerkezetek (mint például + A @ operátor csak kifejezésekre működik. Egyszerű ökölszabályként + alkalmazandó, ha valaminek az értelmezett az értéke, akkor az elé a @ + operátor is oda tehető. Ekképpen például használható változók, + függvények és include hívások, állandók + neve előtt és sok más esetben. Nem használható azonban függvény + és osztály definíciók vagy nyelvi szerkezetek (mint például if és foreach utasítások) - elé. + előtt. - Lásd még: error_reporting. + Lásd még: error_reporting! Jelenleg a "@" hibakezelő operátor kikapcsolja azon kritikus hibák - jelentését is, amik megállítják a szkript futását. Más problémák - mellett, ha egy függvényből érkező hibaüzenetek elnyelésére - használod a "@" jelet, meg fog állni a szkript futása, ha - nem létezik a megadott függvény, vagy elírtad a nevét. + jelentését is, amelyek megszakítják a szkript futását. Más problémák + mellett, ha függvényből érkező hibaüzenetek elnyelésére + használod a "@" jelet, le fog állni a szkript futása, ha + nem létezik a megadott függvény vagy elírtad annak nevét. @@ -338,19 +337,16 @@ Végrehajtó operátorok - A PHP-nek egy végrehajtó operátora van: [na nem kell semmi - rosszra gondolni, semmi köze az adóhatósághoz...]: - a visszaidézőjel [aki tudja az igazi nevét, ne rejtse - véka alá!] (``). Ezek nem szimpla idézőjelek! A - PHP megpróbálja a string tartalmát, mint egy shell command-ot - [kagyló parancsot :)] végrehajtani: a kimenet lesz az egész - értéke (nem kiírja a képernyőre, hanem hozzárendelhető - egy változóhoz). + A PHP-ban létezik egy program-végrehajtó operátor: a visszaidézőjel + [aki tudja az igazi nevét, ne rejtse véka alá!] (``). Ezek nem szimpla idézőjelek! A + PHP megpróbálja a sztring tartalmát parancssorból futtatandó utasításként + végrehajtani, amelynek a kimenete lesz az operátor értéke. + Ez nem egyszerűen a kimenetre kerül, hanem hozzárendelhető egy változóhoz. [Az alábbi kis példa az aktuális könyvtár tartalmát - (hosszú lista, rejtett fájlok is) formázva írja ki (illetve - fix szélességű betűket használva, újsor karaktereket + (hosszú lista, rejtett fájlok is) formázva írja ki + (fix szélességű betűket használva, újsor karaktereket tiszteletben tartva)] @@ -385,8 +381,8 @@ Növelő/csökkentő operátorok - A PHP támogatja a C-szerű pre- és postinkrementáló - és dekrementáló operátorokat. + A PHP támogatja a C-szerű ún. elő- és utónövekményes ill. + csökkentő operátorokat. @@ -402,22 +398,22 @@ ++$a - Preinkrementálás + előnövekményes Növeli $a-t eggyel, majd visszaadja $a értékét $a++ - Postinkrementálás + utónövekményes Visszaadja $a értékét, majd növeli $a-t eggyel --$a - Predekrementálás + előcsökkentő Csökkenti $a-t eggyel, majd visszaadja $a értékét $a-- - Postdekrementálás + utócsökkentő Visszaadja $a értékét, majd csökkenti $a-t eggyel @@ -430,22 +426,22 @@ Postinkrementálás"; +echo "

Utónövekményes

"; $a = 5; echo "5-nek kell lennie: " . $a++ . "
\n"; echo "6-nak kell lennie: " . $a . "
\n"; -echo "

Preinkrementálás

"; +echo "

Előnövekményes

"; $a = 5; echo "6-nak kell lennie: " . ++$a . "
\n"; echo "6-nak kell lennie: " . $a . "
\n"; -echo "

Postdekrementálás

"; +echo "

Előcsökkentő

"; $a = 5; echo "5-nek kell lennie: " . $a-- . "
\n"; echo "4-nek kell lennie: " . $a . "
\n"; -echo "

Predekrementálás

"; +echo "

Utócsökkentő

"; $a = 5; echo "4-nek kell lennie: " . --$a . "
\n"; echo "4-nek kell lennie: " . $a . "
\n"; @@ -475,32 +471,32 @@ $a and $b És - Csak akkor igaz, ha mind $a mind $b igazak + Pontosan akkor igaz (&true;), ha mind $a mind $b igazak (&true;). $a or $b Vagy - Akkor igaz, ha $a és $b között van igaz + Pontosan akkor igaz (&true;), ha $a és $b között van igaz (&true;). $a xor $b Kizáró vagy - Akkor igaz, ha $a és $b közül pontosan egy igaz + Pontosan akkor igaz (&true;), ha $a és $b közül pontosan egy igaz (&true;). ! $a Tagadás - Igaz, ha $a nem igaz + Pontosan akkor igaz (&true;), ha $a nem igaz (&true;). $a && $b És - Csak akkor igaz, ha mind $a mind $b igazak + Pontosan akkor igaz (&true;), ha mind $a mind $b igaz (&true;). $a || $b Vagy - Akkor igaz, ha $a és $b között van igaz + Pontosan akkor igaz (&true;), ha $a és $b között van igaz (&true;). @@ -522,28 +518,26 @@ 1 + 5 * 3 kifejezésben, a kifejezés értéke 16, és nem 18, mert a szorzás operátorának, a ("*")-nak nagyobb precedenciája van, mint az - összeadásénak ("+"). Zárójeleket használhatsz - a precedencia meghatározására, ha szükséges. Például - (1 + 5) * 3 eredménye 18 + összeadásénak ("+"). Zárójelek segítségével tetszőleges + precedenciát lehet felállítani egy kifejezésen belül, ha szükséges. + Például a (1 + 5) * 3 eredménye 18 lesz. [Az asszociativitás talán megér egy kis magyarázatot. Ez azt határozza meg, hogy az adott szinten levő - operátorok egymás utáni zárójel nélküli használatát hogyan - értelmezi a fordító. Talán egy példával kicsit érthetőbbé - tehető: pl. 1-2+3 értelmezhető (1-2)+3-nak, eredménye 2, - vagy 1-(2+3)-nak, eredménye -4. Az előbbi kiértékelés, - (mely balról jobbra asszociatív) a + operátorok egymás utáni, zárójel nélküli használatát hogyan + értelmezi a fordító. Egy példán keresztül talán érthetőbbé + válik: 1-2+3 értelmezhető (1-2)+3-nak (= 2), vagy 1-(2+3)-nak (= -4). + Az előbbi kiértékelés, amely balról jobbra asszociatív, a helyes ebben az esetben. A második kiértékelés pedig - jobbról balra asszociatív (ilyen - például a hatványozás, ami nincs a nyelvben implementálva. - Viszont van egy pow nevű függvény. Szóval 2**3**2 (ahol - ** lenne a hatványozás) helyesen - 2 a kilencediken = 512 lenne.) Vannak nem köthető - operátorok is, ilyenek az összehasonlító operátorok. Tehát - nem írható, hogy 2<$x<4.] - + jobbról balra asszociatív - ilyen lenne + például a hatványozás, amely nincs a nyelvben implementálva (erre szolgál + pow). Ha a ** lenne a + hatványozás, akkor a 2**3**2 helyesen 2 a 9-en = 512 lenne. + Vannak nem köthető (nem asszociatív) operátorok is, ilyenek az + összehasonlító operátorok. A PHP-ban tehát nem + értelmes a 2<$x<4 kifejezés.] Az alábbi táblázat az operátorokat precedenciájuk @@ -649,12 +643,12 @@ String operátorok Két string operátor van. Az egyik az összefűzés operátor - ('.'), ami bal és jobb argumentumának összefűzöttjével + ('.'), amely bal és jobb oldali operandusának összefűzöttjével tér vissza. A második az összefűző-hozzárendelő operátor - ('.='), ami szövegesen hozzáfűzi a jobb argumentumát a bal oldali - argumentum végéhez. Olvasd el a if kifejezést több elseif + követhet. Az első olyan elseif kifejezés hajtódik + végre (ha van), amely értéke &true;. A PHP-ban az 'else if' is (különírva) + használható és ugyanúgy fog viselkedni, mint az 'elseif' (egybeírva). + A szintaktikai jelentés 'kicsit' eltérő (ha ismered a C-t, nos ez pont + úgy működik) de végülis ugyanaz lesz a végeredmény. Az elseif ág csak akkor hajtódik végre, - ha az őt megelőző if kifejezés, és az - összes köztes elseif kifejezések - &false; értékűek, de az adott - elseif kifejezése - &true;. + ha az őt megelőző if kifejezés, és az összes köztes + elseif kifejezések &false; értékűek, de az adott + elseif kifejezése &true;. - + Vezérlési szerkezetek alternatív szintaxisa - - - Az alternatív szintaxis használata nem javasolt a PHP 4-ben. - Egyszerűen olvashatatlanabb kódot eredményez, és túl - komplikálttá válik a normál formával vegyítéve. Bár nincs - terv ennek a szintaxisnak a megszüntetésére, nem zárható ki, - hogy egy nap már nem fog működni. Mi figyelmeztettünk téged! - - - - A PHP bizonyos vezérlési szerkezeteihez egy alternatív szintaxist is nyújt; név szerint: az if, while, @@ -180,7 +166,7 @@ és switch számára. Minden esetben az alternatív szintaxisnál a nyitó kapcsos zárójel helyett kettőspontot (:) kell - írni, a záró zárójel helyett pedig a vezérlési szerkezetnek + írni, a záró zárójel helyett pedig a vezérlési szerkezetnek megfelelő endif;, endwhile;, endfor;, endforeach;, vagy endswitch; @@ -235,10 +221,12 @@ A while ciklusok a PHP legegyszerűbb ciklusai. Éppen úgy viselkednek, mint a C nyelvbeli - megfelelőik. A while általános szintaxisa: + megfelelőik. A while általános szintaxisa: + @@ -255,23 +243,25 @@ akkor sem áll meg, csak az iteráció végén [feltéve ha közben megint meg nem változik a feltétel]. Amikor a while kifejezés értéke már - az első vizsgálatkor &false;, - az utasítás(blokk) egyszer sem fog végrehajtódni. + az első vizsgálatkor &false;, akkor az utasítás(blokk) + egyszer sem kerül végrehajtásra. Az if szerkezethez hasonlóan több utasítást csoportosítani lehet a while - ciklusban kapcsos zárójelekkel, vagy az alternatív szintaxis + ciklusban kapcsos zárójelekkel, vagy az alternatív szintaxis használatával: + - Az alábbi példák egyformák, a számokat írják - ki 1-től 10-ig: + Az alábbi példák ugyanazt csinálják - 1-től 10-ig kiírják + a számokat: - + <literal>do..while</literal> @@ -306,16 +296,16 @@ értékelődik ki, és nem az elején. A fő különbség a hagyományos while ciklushoz képest, hogy a do..while ciklus első iterációja garantáltan - lefut (a kifejezés igazságértéke csak az iteráció végén - ellenőrződik), ami nem garantált a hagyományos + lefut (a kifejezés igazságértékét csak az iteráció végén + ellenőrzi), amely nem garantált a hagyományos while ciklusnál (itt a kifejezés - igazságértéke az iteráció kezdetén értékelődik ki, - ha értéke &false; kezdetben, a ciklus - végrehajtása azonnal befejeződik). + igazságértéke az iteráció kezdetén kerül kiértékelésre, + ha értéke kezdetben &false;, akkor a ciklus végrehajtása + azonnal befejeződik). Csak egy szintaxisa van a do..while ciklusnak: - + Haladó C programozók már bizonyára jártasak a do..while ciklus másfajta használatában. - Például utasításblokk közepén ki lehet lépni + Például utasításblokk közepén ki lehet lépni a blokkból, ha az utasításblokkot do..while(0), közé tesszük, és break @@ -363,27 +353,29 @@ - Ne aggódj, ha nem érted ezt azonnal, vagy ha egyáltalán nem - érted. Írhatsz szkripteket, sőt hatékony szkripteket ennek a - 'feature'-nek a használata nélkül is. + Ne aggódj, ha ezt nem azonnal vagy egyáltalán értetted meg. + Lehet szkripteket - sőt hatékony szkripteket - írni ennek a + lehetőségnek a használata nélkül is. - + <literal>for</literal> A for cilus a legbonyolultabb ciklus a PHP-ben. - Éppen úgy viselkedik, mint a C nyelvbeli + Éppen úgy viselkedik, mint a C nyelvbeli párja (–> C-ben értőknek tovább gomb). A - for ciklus szintaxisa: + for ciklus szintaxisa: + - [A fenti for szerkezettel ekvivalens az alábbi, + [A fenti for szerkezettel megegyező az alábbi, remélhetőleg már ismerős kifejezés: @@ -397,54 +389,53 @@ Remélem így már érthetőbb lesz az alábbi magyarázat]. - Az első kifejezés (kif1) egyszer - értékelődik ki (hajtódik végre), mégpedig a ciklus elején. + Az első kifejezés (kif1) + a ciklus kezdetén egyszer kerül végrehajtásra. - Minden iteráció elején - kif2 kiértékelődik. Ha értéke - &true;, a ciklus folytatódik, és az - utasítás végrehajtódik. Ha értéke - &false;, a ciklus véget ér. + Minden iteráció elején kif2 kiértékelődik. + Ha értéke &true;, akkor a ciklus folytatódik, és az + utasításra kerül a vezérlés. + Ha értéke &false;, akkor a ciklus véget ér. - Minden iteráció végén kif3 - kiértékelődik (végrehajtódik). + Minden iteráció végén kif3 is végrehajtásra kerül. Bármelyik kifejezést el lehet hagyni. Ha - kif2 üres, az azt jelenti, hogy a - ciklus a végtelenségig fut [hacsak nem jön a jó - tündér break utasítás képében...] (a PHP implicit - &true;-nak feltételezi, mint a C). - Ez nem annyira haszontalan, mint gondolnád, hiszen - gyakran fejezheted be a ciklust egy feltételes + kif2 üres, az azt jelenti, hogy a + ciklus a végtelenségig fut [hacsak nem jön a jó + tündér break utasítás képében...] (A PHP implicit + &true;-nak feltételezi az üres kif2-t, + mint a C.) Ez nem annyira haszontalan, mint elsőre amennyire elsőnek tűnik, + hiszen gyakran fejezheted be a ciklust egy feltételes kifejezésbe ágyazott break - kifejezéssel a for igazságértékelése helyett. + kifejezéssel a for feltétel kifejezésének kiértékelése + helyett. - Nézd az alábbi példákat. Mindegyikük kiírja a számokat egytől tízig: + Nézd az alábbi példákat, mindegyikük kiírja a számokat 1-től 10-ig: 10) { break; } print $i; } - + /* 2. variáció */ - + $i = 1; for (;;) { if ($i > 10) { @@ -453,9 +444,9 @@ print $i; $i++; } - + /* 3. variáció - Coda :-) */ - + for ($i = 1; $i <= 10; print $i, $i++); ]]> @@ -463,66 +454,67 @@ Természetesen "a téma" a legbarátságosabb (vagy - esetleg a 3. variáció), de majd meg fogod látni, hogy sok - helyen hasznos dolog, hogy üres kifejezés is írható - for ciklusba... + esetleg a 3. variáció). Sok helyen hasznos azonban, hogy üres + kifejezés is írható for ciklusba... - A PHP megengedi az + A PHP a for ciklus esetén is megengedi az alternatív - szintaxist is a for ciklusban: + szintaxishasználatát: + - Más nyelvekben van egy foreach szerkezet, - hogy bejárjanak egy tömböt, vagy egy hash-t. A PHP 3-ban nincs - ilyen, de a PHP 4-ben implementálták (lásd: foreach szerkezet tömbök vagy hash-ek + bejárására. A PHP 3-ban nincs ilyen, de a PHP 4-ben implementálták (lásd: foreach). PHP 3-ban - a while szerkezetet + a while, a list és az each - függvényeket kombinálva használhatod erre a célra. - Nézd meg e függvényeknek a dokumentációját, ha szeretnél példákat - is látni. + szerkezeteket használhatod erre a célra. Nézd meg ezeknek a dokumentációját + alkalmazási példákért. <literal>foreach</literal> - A PHP 4-ben (nem a PHP 3-ban!) a perlhez és más nyelvekhez - hasonlóan rendelkezésre áll egy foreach - szerkezet is. Ez egy jól használható eszközt ad a tömbökön - végzett iterációkhoz. Két szintaxis létezik, a második egy - apró, de hasznos plusz szolgáltatást nyújt az elsőhöz + A PHP 4-ben (nem a PHP 3-ban!) a Perlhez és más nyelvekhez + hasonlóan létezik az ún. foreach + szerkezet is. Ez jól használható eszközt ad a tömbökön + végzett iterációkhoz. Két szintaxisa létezik, a második egy + apró, de hasznos kiegészítéssel nyújt többet az elsőhöz képest. + $ertek) utasítás +]]> Az első forma végigmegy a tömb_kifejezés - által adott tömbön. Minden alkalommal az aktuális + szolgáltatta tömbön. Minden alkalommal az aktuális elem értéke a $ertek változóba - kerül, és a belső tömb mutató növelésre kerül. (Tehát - a következő alkalommal a soron következő elemet fogod megkapni). + kerül, és a belső tömb mutató növelésre kerül. (A következő alkalommal + tehát a soron következő elemet fogja venni). A második forma ugyanezt végzi el, de az aktuális elem - kulcsa a $key változóba kerül. + kulcsa a $kulcs változóba kerül. Amikor a foreach indul, a belső tömb mutató az első elemre áll. Ez azt jelenti, hogy nem kell - meghívnod a reset függvényt egy + meghívni a reset függvényt egy foreach ciklus előtt. @@ -545,7 +537,7 @@ - Talán már tudod, hogy az alábbiak azonosak: + Talán már tudod, hogy az alábbi példák egyenértékűek: - Az alábbiak is megegyező eredménnyel szolgálnak: + Az alábbiak is azonos eredményt szolgáltatnak: - + <literal>break</literal> - A break azonnal kilép aktuális + A break azonnal kilép az aktuális for, foreach, - while, do..while vagy - switch ciklusból. + while, do..while ciklusból vagy + switch szerkezetből. - A break elfogad egy opcionális szám - paramétert, ami megadja, hogy hány struktúrából kell - egyszerre 'kiugrani'. + A break elfogad egy elhagyható szám paramétert, + amely megadja, hogy hány egymásba ágyazott struktúrából kell egyszerre 'kiugrani'. @@ -659,7 +650,7 @@ echo "$ertek
\n"; } -/* Az opcionális paraméter használata */ +/* Az elhagyható paraméter használata */ $i = 0; while (++$i) { @@ -679,18 +670,18 @@
- + <literal>continue</literal> - A continue-t ciklus belsejében használjuk, + A continue ciklusok belsejében használható arra, hogy átugorjuk az aktuális iteráció hátralevő részét, - és folytassuk a végrehajtást a következő iterációval. + és a végrehajtást a következő iterációval folytassuk. - A continue elfogad egy opcionális szám - paramétert, ami megadja, hogy hány struktúrának kell - a hátralévő részét kihagyni. + A continue elfogad egy elhagyható szám + paramétert, amely megadja, hogy hány egymásba ágyazott struktúrának + a hátralévő részét kell átugrani. @@ -721,19 +712,19 @@ - + <literal>switch</literal> A switch kifejezés hasonló egy sereg IF kifejezéshez, ahol a kifejezésekben ugyanaz szerepel. - [Pont olyan, mint a C-beli, C-s gyakorlattal rendelkezőknek - Tovább gomb]. Sokszor fordul elő, hogy ugyanazt a változót - (vagy kifejezést) szeretnéd összehasonlítani több különböző + [Pont olyan, mint a C-ben, C-s gyakorlattal rendelkezőknek + Tovább gomb]. Gyakori, hogy ugyanazt a változót + (vagy kifejezést) kell összehasonlítani több különböző értékkel, és más-más kódot végrehajtani a változó - (kifejezés) értékétől függően. Pontosan ez az, amire a - switch való. - + (kifejezés) értékétől függően. Pontosan erre való a + switch. + Az alábbi két példa két különböző módon írja ki ugyanazt, az egyik egy sor if kifejezést használ, @@ -750,7 +741,7 @@ if ($i == 2) { print "i most 2"; } - + switch ($i) { case 0: print "i most 0"; @@ -767,18 +758,18 @@ - A hibák elkerülése végett fontos megérteni, hogy hogyan hajtódik - végre a switch szerkezet. A - switch sorról-sorra hajtódik végre (vagyis - utasításról utasításra). Nem hajtódik végre semmilyen utasítás, + A hibák elkerülése végett fontos megérteni, hogy hogyan kerül végrehajtásra + a switch szerkezet. A + switch vagyis utasításról utasításra hajtódik végre. + Nem hajtódik végre semmilyen utasítás, csak akkor, ha egy olyan case kifejezést talál a PHP, amely egyezik a switch kifejezés értékével. - A PHP addig folytatja az utasítások végrehajtását, amíg el + Ezután a PHP addig folytatja az utasítások végrehajtását, amíg el nem éri a switch blokk végét, vagy nem - találkozik egy break utasítással. FONTOS!!! - Ha nem írsz break-et a case kifejezés végére, - a PHP folytatni fogja a végrehajtást akkor is, ha újabb case - jön! Például: + találkozik egy break utasítással. FONTOS! + Ha nem nincs break egy case-hez + tartozó utasítás(sorozat) végén, akkor a PHP végrehajtja a soron következő + case-hez tartozó utasításokat is! Például: - Itt, ha $i 0, a PHP az összes kiíró utasítást végrehajtja! - Ha $i 1, a PHP az utolsó két sort hajtja végre, és csak ha - $i értéke 2, akkor kapod a 'kívánt' eredményt (csak i most - 2 íródik ki). Tehát nagyon fontos nem elfelejteni a - break utasítást (bár lehet, hogy - szándékosan elhagyod bizonyos körülmények között). + Itt, ha $i értéke 0, akkor a PHP az összes kiíró utasítást végrehajtja! + Ha $i értéke 1, akkor a PHP az utolsó két print-et hajtja végre, és csak + ha $i értéke 2, akkor kapod a 'kívánt' eredményt (csak az 'i most + 2' íródik ki). Tehát nagyon fontos nem elfelejteni a + break utasítást (bár bizonyos körülmények között lehet, + hogy pont ennek elhagyása a szándékos). A switch kifejezésben a feltétel csak - egyszer értékelődik ki és az eredmény hasonlítódik össze a + egyszer értékelődik ki és a kapott eredmény lesz összehasonlítva a case kifejezések mindegyikével. Ha elseif kifejezéseket használsz, a kifejezések újra és újra kiértékelődnek. [és újra és @@ -814,7 +805,7 @@ gyorsabb. - Egy eset utasításlistája üres is lehet, így a vezérlés + Egy eset (case) utasításlistája üres is lehet, így a vezérlés a következő case-címkére adódik. @@ -860,8 +851,8 @@ A case kifejezés tetszőleges kifejezés, aminek egyszerű a típusa, vagyis egész vagy lebegőpontos - szám, vagy string. Tömbök és objektumok itt nem használhatók, - hacsak nem egy-egy elemük ill. változójuk egyszerű típusként. + szám, vagy string. Tömbök és objektumok itt nem használhatók, + csakis egy-egy elemük ill. változójuk egyszerű típusként. Az alternatív szintaxis működik a switch-ekkel is. Bővebb @@ -899,7 +890,9 @@ vezérlési szerkezetekéhez: + @@ -919,8 +912,8 @@ Tick-ek - Egy tick egy olyan esemény, ami minden - N alacsony szintű utasítás + A tick egy olyan esemény, amely minden + N db alacsony szintű utasítás végrehajtásakor bekövetkezik a declare blokkban. Az N értéket a ticks=N @@ -980,7 +973,7 @@ méri, rögzítve minden második alacsonyszintű utasítás végrehajátásának időpontját. Ez az információ alkalmas lehet arra, hogy megtaláld a lassan futó részeket a - kódodban. Ezt a hatást másképp is elérhetted volna, + kódodban. Ezt a hatást másképp is el lehet érni, de tick-eket használva sokkal kényelmesebb és könnyebben megvalósítható megoldást kapsz. @@ -995,40 +988,39 @@ - + <function>require</function> - A require függvény behelyettesítődik - a megadott fájllal, pont úgy, mint a C preprocesszor + A require helyén az a megadott fájl tartalma + helyettesítődik be pont úgy, mint a C preprocesszor #include-ja. Ha az "URL fopen wrapper"-ek be vannak kapcsolva (ami az - alapbeállítású helyzet), akkor a require - használatakor távoli fájlt is megadhatsz. Lásd + alapértelmezett helyzet), akkor a require + használatakor távoli fájlt is megadható. Lásd a Távoli fájlok kezelése - című fejezetet és az fopen függvényt. + című fejezetet és az fopen függvényt! - Egy fontos megjegyzés a működésre vonatkozólag, hogy ha egy - fájlt berántunk include-al vagy - require-el, akkor kikerülünk a PHP - módból HTML módba a célfájl elején, és visszaáll PHP - módba a fájl végén. Ezért, bármely célfájlban levő PHP - kódot közre kell fogni egy érvényes - PHP kezdő- és zárótag-gel. + A működésre vonatkozólag fontos megjegyezni, hogy ha egy + fájlt beillesztünk az include-dal vagy + require-ral, akkor a célfájl elején az elemző kilép + a PHP módból HTML módba, majd visszaáll PHP módba a fájl végén. + Ennek okán bármely beillesztendő fájlban levő PHP kódot közre kell fogni + egy érvényes + PHP kezdő- és zárójelöléssel. - A require valójában nem is egy - függvény a PHP-ben, hanem egy nyelvi konstrukció. Ez + A require valójában nem is + függvény a PHP-ben, hanem nyelvi konstrukció. Ez azt jelenti, hogy más szabályok vonatkoznak rá, mint a függvényekre. Például a require-re - nem vonatkoznak a körbezáró struktúrák korlátozásai. - Másfelől, nincs visszatérési értéke; ha megpróbálod - kiolvasni a require hívás visszatérési - értékét, a hívás értelmezési hibát (parse error) eredményez. + nem vonatkoznak a körbezáró struktúrák korlátozásai és + nincs visszatérési értéke. Ha megpróbálod + olvasni a require hívás visszatérési + értékét, a hívás értelmezési hibát (parse error) eredményez. Az include-tól eltérőn a @@ -1039,12 +1031,12 @@ az include-ot. A feltételes kifejezés nincs hatással a require-ra. Ennek ellenére, ha a sor, amelyen a require - áll nem hajtódik végre, a célfájlban lévő kód nem is + áll nem hajtódik végre, a célfájlban lévő kód nem is fog lefutni. Hasonlóan, a ciklusok sem változtatják meg a - require viselkedését. Bár a célfájl + require viselkedését. Bár a célfájl kódja a ciklusmagban van, a require végrehajtása csak egyszer történik meg. @@ -1056,26 +1048,28 @@ A require-t konstans fájlnevekkel használd: -require ('header.inc'); +
- Ha egy fájlt require-el töltesz be, - a kód, amit tartalmaz azt az érvényességi kört örökli, - ami a require hívás sorára vonatkozott. - Bármilyen változó, ami azon a soron elérhető, rendelkezésre + Ha egy fájlt require-rel töltesz be, akkor + az általa tartalmazott kód azt az érvényességi kört örökli, + amely a require hívás sorára vonatkozott. + Bármilyen változó, amely azon a soron elérhető, rendelkezésre áll a hívott fájlban. Ha a require egy függvényben található a hívó fájlban, akkor a hívott - fájl minden kódja úgy fog viselkedni, mintha a függvényen + fájl teljes kódja úgy fog viselkedni, mintha a függvényen belül írtad volna. - Ha a require-el hívott fájl HTTP-n + Ha a require-rel hívott fájl HTTP-n keresztül érkezik az "fopen wrapper"-ek használatával, és a célszerver feldolgozza a fájlt, mint PHP kódot, átadhatsz változókat a hívott fájlnak HTTP GET lekérési - formában. Ez nem ugyanaz, mintha a require-el + formában. Ez nem ugyanaz, mintha a require-rel hívott fájl örökölné a helyi változókat, mivel a szkript valójában a távoli szerveren fut le, és a futási eredmény kerül beépítésre a helyi szkriptbe. @@ -1092,10 +1086,10 @@ /* Nem működik: egy 'file.php?elsovaltozo=1&masodikvaltozo=2' * nevű fájlt keres a helyi rendszeren */ -require ("file.php?elsovaltozo=1&masodikvaltozo=2"); +require ("file.php?elsovaltozo=1&masodikvaltozo=2"); /* Működik */ -require ("http://szerver/file.php?elsovaltozo=1&masodikvaltozo=2"); +require ("http://szerver/file.php?elsovaltozo=1&masodikvaltozo=2"); $elsovaltozo = 1; $masodikvaltozo = 2; @@ -1110,7 +1104,7 @@ helyezzünk el a require-rel behívott fájlba, ha a return a behívott fájl globális részében van. Nem szerepelhet blokkban sem, tehát nem lehet kapcsos zárójelen belül ({}). - A PHP 4-ben ezt a lehetőséget megszüntették. Ha szeretnél valami + A PHP 4-ben ezt a lehetőséget megszüntették. Ha szeretnél valami ilyesfélét, akkor nézd meg az include-ot. @@ -1119,7 +1113,7 @@ és virtual. - + <function>include</function> @@ -1134,24 +1128,23 @@ című fejezetet és az fopen függvényt. - Egy fontos megjegyzés a működésre vonatkozólag, hogy ha egy - fájlt berántunk include-al vagy - require-el, akkor kikerülünk a PHP - módból HTML módba a célfájl elején, és visszaáll PHP - módba a fájl végén. Ezért, bármely célfájlban levő PHP - kódot közre kell fogni egy érvényes - PHP kezdő- és zárótag-gel. + A működésre vonatkozólag fontos megjegyezni, hogy ha egy + fájlt beillesztünk az include-dal vagy + require-ral, akkor a célfájl elején az elemző kilép + a PHP módból HTML módba, majd visszaáll PHP módba a fájl végén. + Ennek okán bármely beillesztendő fájlban levő PHP kódot közre kell fogni + egy érvényes + PHP kezdő- és zárójelöléssel. + Ez történik valahányszor az include-hoz - ér a program, tehát használhatod az - include-ot egy ciklus belsejében, - hogy különböző fájlokat behúzzál. + ér a program, tehát az include-ot kell használni + egy ciklus belsejében különböző fájlok beillesztésére. Az include abban különbözik a require-től, hogy míg az - include minden alkalommal + include minden alkalommal kiértékelődik, ahányszor előfordul (és csak akkor, ha éppen oda kerül a vezérlés), addig a require az első alkalommal - helyettesíti a fájlt, akár kiértékelődik + helyettesíti a fájlt, akár kiértékelődik a tartalma, akár nem (például egy olyan if kifejezésben, amely mindig hamis). - Mivel az include egy különleges - nyelvi elem, védened kell kapcsos zárójelekkel, + Mivel az include különleges + nyelvi elem, kapcsos zárójelekkel kell közrefogni, ha egy feltételes utasításon belül szerepel. @@ -1185,7 +1178,7 @@ else include($other); -/* Ez HELYES */ +/* Ez a HELYES */ if ($feltetel) { include($file); @@ -1200,24 +1193,23 @@ A PHP 3-ban, és a PHP 4-ben is lehetőség van arra, hogy return utasítást helyezz el egy include-olt fájlban annak érdekében, - hogy a kiértékelés befejeződjön, és visszaadjon egy - értéket a hívó szkriptnek. Bár vannak apróbb - különbségek. Először is a PHP 3 nem engedi meg, hogy a - return egy blokkban legyen, kivéve - ha az egy függvényblokk, ami ugye csak abból a függvényből - fog visszatérni, és nem az egész fájlból. A PHP 4-ben - ez a megszorítás nincs. Vagyis a PHP 4 megenged - visszatérési értékeket include-olt + hogy a kiértékelés ott befejeződjön, és visszaadjon egy + értéket a hívó szkriptnek. Bár vannak apróbb + különbségek. Először is a PHP 3 csak függvényblokkban engedélyezi a + return előfordulását, amely csak az adott + függvényből - nem pedig az egész fájlból - történő visszatérést + jelöli. A PHP 4-ben ez a megszorítás nincs, vagyis a PHP 4 + megengedi a visszatérési értékeket include-olt fájlokból. A visszatérési értéket ugyanúgy használhatod, - mint egy közönséges függvénynél. Ez a PHP 3-ban + mint egy közönséges függvénynél. Ez a PHP 3-ban értelmezési hibát (parse error) okoz. Az <function>include</function> PHP 3-ban és PHP 4-ben Tegyük fel, hogy a következő fájl (melynek neve: - test.inc) abban a könyvtárban van, - mint a főfájl: + test.php) abban a könyvtárban van, + mint a fő fájl: - És legyen a főfájl (main.php) - tartalma az alábbi: + És legyen a fő fájl (main.php) + tartalma az alábbi: return egy kapcsos zárójelezett részben van, amely nem függvényen belül található a - test.inc fájlban. Ha a return-t + test.php fájlban. Ha a return-t kivesszük a blokkból, a kimenet ilyen lesz: Return előtt @@ -1290,26 +1282,26 @@ - A nemkívánatos '27' azért van ott, mert a PHP 3 nem támogatja - az ilyen fájlokból való visszatérési értékeket. + A nem kívánt '27' azért van ott, mert a PHP 3 nem támogatja + az ilyen, fájlokból való visszatérési értékeket. - Ha egy fájlt include-al töltesz be, - a kód, amit tartalmaz azt az érvényességi kört örökli, - ami az include hívás sorára vonatkozott. + Ha egy fájlt include-dal töltesz be, + az általa tartalmazott a kód azt az érvényességi kört örökli, + amely az include hívás sorára vonatkozott. Bármilyen változó, ami azon a soron elérhető, rendelkezésre áll a hívott fájlban. Ha az include egy függvényben található a hívó fájlban, akkor a hívott - fájl minden kódja úgy fog viselkedni, mintha a függvényen - belül írtad volna. + fájl teljes kódja úgy fog viselkedni, mintha az a függvényen + belül lenne írva. - Ha az include-al hívott fájl HTTP-n + Ha az include-dal hívott fájl HTTP-n keresztül érkezik az "fopen wrapper"-ek használatával, és - a célszerver feldolgozza a fájlt, mint PHP kódot, + a célszerver PHP kódként feldolgozza a fájlt, akkor átadhatsz változókat a hívott fájlnak HTTP GET lekérési - formában. Ez nem ugyanaz, mintha a include-al + formában. Ez nem ugyanaz, mintha a include-dal hívott fájl örökölné a helyi változókat, mivel a szkript valójában a távoli szerveren fut le, és a futási eredmény kerül beépítésre a helyi szkriptbe. @@ -1326,10 +1318,10 @@ /* Nem működik: egy 'file.php?elsovaltozo=1&masodikvaltozo=2' * nevű fájlt keres a helyi rendszeren */ -include ("file.php?elsovaltozo=1&masodikvaltozo=2"); +include ("file.php?elsovaltozo=1&masodikvaltozo=2"); /* Működik */ -include ("http://szerver/file.php?elsovaltozo=1&masodikvaltozo=2"); +include ("http://szerver/file.php?elsovaltozo=1&masodikvaltozo=2"); $elsovaltozo = 1; $masodikvaltozo = 2; @@ -1341,16 +1333,16 @@ Lásd még: require, require_once, - include_once, readfile, - és virtual. + include_once, readfile + és virtual! - + <function>require_once</function> - A require_once behelyettesítődik - a megadott fájllal, pont úgy, mint a C preprocesszor + A require_once helyén behelyettesítésre kerül + a megadott fájl pont úgy, mint a C preprocesszor #include-ja, és ebben az értelemben hasonló a require-höz. A fő különbség az, hogy a require_once gondoskodik @@ -1359,10 +1351,9 @@ eredő hibáktól. - Például elkészíted a következő két fájlt: - ezskozok.inc és izelib.inc + Példában legyen a következő két fájl: eszkozok.php és izelib.php - eszkozok.inc + eszkozok.php - izelib.inc + izelib.php - Aztán írsz egy szkriptet require_hiba_bemutatasa.php névvel: + Valamint require_hiba_bemutatasa.php nevű szkript: require_hiba_bemutatasa.php - Amikor megpróbálod lefuttatni ez utóbbi programot, - az eredmény (PHP 4.01pl2-t használva): + Ez utóbbi program eredménye (PHP 4.01pl2-t használva): + - Az izelib.inc és - require_hiba_bemutatasa fájlok módosításával, - require_once használatával a probléma + Az izelib.php és + require_hiba_bemutatasa fájlok módosításával - a + require_once használatával - a probléma megoldódik. Átnevezve require_hiba_elkerulese.php-re az előzőt: - iezlib.inc (javítás) + iezlib.php (javítás) + require_hiba_elkerulese.php + Ez utóbbit futtatva a kimenet (PHP 4.0.1pl2-t használva): + 1 + [1] => Array ( - [0] => komplex - [1] => tömb + [0] => komplex + [1] => tömb ) ) +]]> - Vedd észre, hogy a C preprocesszor + Vedd észre, hogy a C preprocesszor #include-jához hasonlóan ez is "fordítás időben" - végzi a beillesztéseket, azaz akkor, amikor a szkriptet feldolgozza. - Ezért nem használható a szript olyan részeire, amik futás közben + végzi a beillesztéseket, azaz a szkript beolvasása során és futtatása előtt. + Ezért nem használható a szkript olyan részeire, amelyek futás közben dinamikusan kerülnek be. Erre a célra az include_once vagy az include használható. - További példákhoz az require_once és + További példákhoz az require_once és include_once használatához nézd meg a PEAR kódot, ami a legfrissebb PHP disztribúciókban megtalálható. @@ -1492,15 +1491,15 @@ és v