Lezárások php (névtelen függvények)

Lezárások és névtelen függvények PHP - ez normális funkcióját, de név nélkül. Nézzünk egy példát erre a funkció:

Ebben a példában van egy névtelen függvényt, de nincs értelme. Felmerül a kérdés - hogyan kell használni ezeket a funkciókat? Az alábbi példa segít megérteni ezt:

Ebben a példában mi hozzá egy névtelen függvényt változó, akkor kezdtük ezt a feladatot ellátó, a szintaxis $ lezárás ();. azaz mi a változó nevét zárójelben hozzá függvényhívás. Felhívjuk figyelmét, hogy a $ jel a változó nevét nem mi távolítottuk.

De ez a példa nem túl kényelmes a használata, mert ha csak ispolzovant funkciót.

Mivel a gyakorlatban használt áramkör

A névtelen függvények vagy bezárások PHP használják át őket paraméterként egyéb funkciók. PHP néhány beépített funkciója, amely úgy paraméterként az áramkör, de ez lesz írva az alábbiakban.

Vessünk egy még bonyolultabbá a példa.

Itt hoztuk létre a rendszeres funkció doStuff (), és továbbadja, mint a paraméter a névtelen függvény egy változó $ bezárását. majd futtatni a szervezetben doStuff () függvény.

Ebben a példában doStuff () függvény nem elég ellenőrizze a változó $ lezárás típusát. Ahhoz doStuff () függvény megfelelően működik a paraméterben kell tartalmaznia egy névtelen függvényt.

is_callable () funkció

Anonim függvények PHP felhasználásával vannak megvalósítva beágyazott osztály zárófedél (PHP 5> = 5.3.0, PHP 7). Azaz minden névtelen függvény tárgya ebben az osztályban.

Zárás osztályú objektumok is nevezik Pseudo visszahívás / Callables. Tartozás változó az ilyen típusú adatok segítségével ellenőrizhető is_callable () függvény.

Felhívjuk figyelmét, gettype funkció határozza meg, hogy milyen típusú a változó $ bezárását, mint egy tárgy. Ezért is_object funkció is visszatér igaz. de ez nem a megfelelő teszt ebben az esetben. Circuit ellenőrizni kell pontosan is_callable funkciót.

A design felhasználása

A névtelen függvény láthatóvá tehető változót a szülő alkalmazási terület használatának kialakítása. Itt egy példa:

A rendszer segítségével a kulcsszó használni egy névtelen függvényt, akkor át több változó, ezek perecheslyat zárójelben, vesszővel elválasztva.

Azt is fontos megérteni, hogy a használatra tervezés teszi láthatóvá változók a szülő hatálya, de ez nem ugyanaz, mint a változók a globális környezetben. Global hatálya nem változik a változás feladatoknak az különböző mértékű fészkel.

Érvek névtelen függvények

A névtelen függvény átadhatók érveket. Nézzük egy példát egy újabb érv a funkciót.

Egy érv nagyon egyszerű, anonim funkciók itt nem más, mint a megszokott.

preg_replace_callback funkció

Megígértem néhány beépített PHP függvénynek, amelyek érvként áramkör, itt van egy közülük: preg_replace_callback

preg_replace_callback - Végezzünk rendszeres kifejezés keresés és csere egy visszahívást funkciók (zárást).

  • $ Pattern - a kívánt mintát lehet egy karakterlánc, vagy egy tömböt.
  • $ Visszahívás - úgynevezett visszahívási-funkciót, amely egy sor párosított elemei a tárgy kap. Visszahívás funkciót kell visszatérnie a húr a csere.
  • $ Tárgy - egy string vagy egy tömböt keresni és kicserélni.

Ez a tömör szintaxis, részletek a képességeit ezt a funkciót, akkor nézd meg az online kézikönyv PHP.

További funkciók veszi érvek áramkör: array_filter. array_map. array_reduce. usort.

call_user_func funkció

Funkció call_user_func - meghívja a felhasználói funkció által adott első paraméter. Függvény az eredmény, vagy egyébként FALSE.

Felhasználási példák call_user_func:

Példa call_user_func használni OOP.

osztály lezárása

Mint írtam, a névtelen függvények PHP segítségével valósítja meg a Closure osztályban. Minden névtelen függvények tárgyak a beépített osztály ..

Szintén fontos megjegyezni, hogy amikor telefonál, a tárgy függvényében, úgynevezett mágikus módszer __invoke (mivel PHP5.3).