A Wikipedia azt mondja, hogy egy névtelen funkció egy olyan funkció, amely azonosító nélkül létezhet. Nagyon érdekesnek hangzik! Ebben a leckében számos példát mutatok arra, hogy hogyan lehet létrehozni és a funkciót nem szabványos módszerekkel.
Kezdjük egyszerre példákkal:
Funkcióvizsgálat ($ var) (Echo "Ez $ var";)
Ez egy nagyon egyszerű funkció. Most, a szokásos hívás mellett futtathatjuk ezt a funkciót olyan változó segítségével, amely tárolja a funkció nevét. Körülbelül ez így:
$ f \u003d "teszt"; $ F ("változó funkció");
Ha elindítja a kódot, akkor az üzenet változó funkció. Azt mondani, hogy mondani, az egyes idézetek feldolgozása gyorsabb, mint kettős.
Ezt a technikát alkalmazhatjuk az OOP-ban. Példa php.net:
Osztályfoo (függvényváltozó () ($ name \u003d "bar"; $ this -\u003e $ name (); // Ez a sáv () módszer) funkciósávot () (visszhang "ez a bár";)) $ foo \u003d új foo (); $ Funcname \u003d "változó"; $ foo -\u003e $ funcname (); // Ez a hívás $ foo-\u003e változó ()
Ez a koncepció elég érdekes. Használható a visszahívások, a táblák és így tovább.
Most megpróbálom elmagyarázni neked, hogy milyen névtelen jellemzők:
$ bemenet \u003d tömb (1, 2, 3, 4, 5); $ Kimenet \u003d Array_Filter ($ bemenet, funkció ($ v) ($ v\u003e 2;));
funkció ($ V) ($ V\u003e 2 visszatérés;) Ez egy névtelen funkció. A jövőben a változóhoz is rendelhetjük.
$ max \u003d funkció ($ V) ($ V\u003e 2; $ bemenet \u003d tömb (1, 2, 3, 4, 5); $ Kimenet \u003d Array_Filter ($ bemenet, $ max);
Most ismerjük meg az új felhasználású kulcsszót. Ehhez egy másik névtelen funkciót írunk (Works with php 5.3):
$ max_comp \u003d funkció ($ max) (Visszatérési funkció ($ v) Használat ($ max) ($ V\u003e $ V\u003e $ max,);););); $ bemenet \u003d tömb (1, 2, 3, 4, 5); $ Kimenet \u003d Array_Filter ($ bemenet, $ max_comp (2));
Ebben a példában bezárási hatást használunk egy használati kulcsszó segítségével. Ez a technika lehetővé teszi a névtelen funkciót a külső változókhoz való hozzáféréshez. Az eljárási programozás szellője?
Itt egy másik példa egyszerűbb:
$ string \u003d "Hello World!"; $ bezárás \u003d funkció () Használja ($ string) (Echo $ string,); $ bezárás ();
Amint azt mondtam, a változók, amelyeket az ilyen funkciókban (globális hatókörből) használni kívánunk (a globális hatókörből), használaton keresztül kell továbbítani. Fontos megjegyezni, hogy csak az értéket továbbítják alapértelmezés szerint, így ha módosítani szeretné a továbbított változó tartalmát, és azt szeretné, hogy megváltoztassa a névtelen funkciót, átvegye az értéket a címre:
$ x \u003d 1; $ bezárás \u003d funkció () Használja (& $ x) (++ $ x,); Echo $ x "
", $ bezárás (); echo $ x."
", $ bezárás (); echo $ x."
";
Ebben a példában a módszerünk megváltoztatja a $ x változó tartalmát minden egyes névtelen funkcióval. Ha nem adtuk meg a változó címét, és maga a változó három 1.
A "lezárás" igazi szépsége az, hogy nem fejezi be a globális névteret. Amint egy névtelen funkció elvégezte az akciót, az összes változó automatikusan megsemmisül.
Helló mindenkinek és ma beszélünk mi a PHP névtelen funkciói És hol használjuk őket.
Névtelen funkciókvagy másképp lambda funkciók - Ezek olyan funkciók, amelyeknek nincs neve.
Példa a szokásos funkcióra
Funkciófunkció ($ txt) (Echo "A szövegem:" $ txt;
}
$ Func \u003d "Funame";
$ Func ("Saját szöveg");
?>
Van egy olyan funkció, amely egy paramétert tartalmaz. Ezután írjuk a funkció nevét a változóhoz, és hívjuk. Semmi szokatlan. BAN BEN Oop Ez a stílus igazolhatóbb lesz.
Myclass osztály (
Funkciósáv () () () (
// a kód
}
}
$ osztály \u003d új myclass ();
$ Func \u003d "bar";
$ Osztály -\u003e $ Func ();
?>
Névtelen funkciók
Ha ismeri a névtelen funkciókat a nyelvtől JavaScript., akkor érted, miért van szükségük, és ha nem, akkor olvassa el.
Anonim funkciónkat valahol a programkódon, hozzárendelhetjük egy változóhoz
$ Func \u003d funkció () () () () () (
// a kód
};
$ func ();
?>
Ne feledje, hogy a végén érdemes ; mivel A funkcióval egyenlő változó értéket rendelünk hozzá. De az összes só nincs ebben, de abban a tényben, hogy ezeket a funkciókat használhatjuk visszahívási funkciók. Például:
$ Val \u003d array_filter ($ bemenet, funkció ($ v) ($ v\u003e 2,));
?>
Használja a kulcsszót
Ismét, ha tudod JavaScript.Ez nem lesz probléma az Ön számára. Kulcsszó Használat Lehetővé teszi a recepció használatát bezárás. Ezzel elérhetjük a külső változókat.
$ Mx \u003d funkció ($ high_val) (
Visszatérési funkció ($ Val) Használja ($ high_val) ($ high_val) (
Vissza $ Val\u003e $ high_val;
};
};
$ I \u003d tömb (1, 2, 3, 4, 5, 6, 7);
$ O \u003d Array_Filter ($ bemenet, $ max_comp (2));
?>
Itt vagyunk a mi belül lambda funkciók Globális változót használunk high_val. Hogy lehetséges legyen, miután a szó után kell funkció. és paraméterek zárójelben használat És adja át a külső változó nevét, amelyet a funkciókód belsejében szeretnénk használni.
Azonban nem fogjuk megváltoztatni globális változónk fontosságát ilyen módon. Ehhez meg kell adnia egy jelet a neve előtt. &
$ NAME \u003d "BRIAN";
$ setname \u003d funkció ($ n) Használat (& $ NAME) (
$ NAME \u003d $ N;
};
$ SetName ("David");
Echo $ név;
?>
Következtetés
Tehát ma megtanultad mi a névtelen funkciók a PHP-ben és hogyan kell használni őket. Sok szerencsét!
A funkció egy változóhoz, valamint a szokásos értékhez rendelhető. Ehhez a funkciónevet egy karakterlánc formájában lévő változóhoz kell rendelni, de zárójelek megadása nélkül:
\\ n ",) $ my_func \u003d" foo "; () Funkció?\u003e
Az ilyen PHP koncepciónak van neve "függvényváltozók". Ez abban rejlik, hogy ha a kerek zárójelek végén hozzáadja a változóhoz, akkor a PHP tolmács először ellenőrzi, nincs funkció az egyenlő jelentés változó, és ha van ilyen funkció - végrehajtja.
Tehát, amint azt a fenti példában mutatja, csak bizonyos felhasználók funkcióival végezheti el. A beépített nyelvi struktúrák és funkciók, mint például az ECHO, az ECHO, az ENCE (), a BETSET () és más hasonló dolgok ugyanolyan módon rendelhetők közvetlenül a változókhoz. De a wrapper funkciót (wrapper) úgy lehet, hogy a beépített nyelvi struktúrák úgy működjenek, mint a felhasználói funkciók.
Névtelen funkciók
Névtelen funkció - olyan függvény, amely nem rendelkezik saját nevével, néha megfelel az ilyen funkcióknak - a lambda funkciónak. Az anonim funkciókat más funkciókra továbbíthatják, mint argumentumok, vagy hagyományos értékekkénti változót rendelhetnek hozzá:
Vegye figyelembe a példát a funkció meghatározása végén van egy pontosvessző, mivel egy névtelen funkció természeténél fogva érték, és hozzárendeljük a változó értékét, majd a végén, a rendes utasítások esetében, a pontot.
Az anonim funkciók eltérnek attól, hogy az a tény, hogy csak abban a pillanatban jönnek létre, amikor a végrehajtás jön hozzájuk, így csak a definíciójuk után használhatja őket: