Névtér php

Egy érdekes PHP 5.3.0 újdonsága névteret (namespace). Azok, akik dolgoznak a Java és C # kitalálta, hogy mi történik. Ezeken a nyelveken a lehetőséget jelen volt az elejétől kezdve. És most, php programozók is használhatja ilyet a projekteket. Ebben a cikkben azt fogja mondani, mi a célja a névterek és az előnyöket tudnak hozni. Megpróbálom, hogy ne töltse az agy száraz elmélet és bemutatni a legérdekesebb. Szóval, menjünk!

Miért van szükség ezeknek a névterek?

Egy pillanatra képzeljük el, hogy a fejlesztő a mega jó könyvtárat. Te dühös buzgalommal próbálja levelet hűvös termék, és az első adandó alkalommal fűz az új funkciók. Fokozatosan növelje a kódot, és előbb-utóbb eljön az a nap, amikor irányított válik rendkívül problematikus. Nem értem, hogy tartsa be a jó ízlés írásban kódot, de ha már be több tucat módszerek és különböző osztályok, eltévedni ebben a gazdaságban egy szelet tortát. Ne beszéljünk szomorú dolog. Képzeljük csak el, hogy úgy döntött, hogy bővítse néhány osztály (vagy hozzon létre egy újat), ami egy további módszert neki. Úgy tűnik, minden egyszerű. Azt találtam az osztály leírt módszerrel. De hol van a garancia arra, hogy a használt módszer neve is, vagy az osztály maga nem használta korábban? Igen, akkor banális megtekintéséhez keres vagy Class Explore (ha dolgozik az IDE). Ez nem túl hosszú.

Névtér php

De mi van, ha feltétlenül szeretne létrehozni egy osztály, amelynek neve már használatban van? Természetesen lehetőség van nem fürdőzik, és hívja a módszer / osztály másképp. A megoldás jó írásakor a kódot magad. Sajnos ez a módszer nem nevezhető jó, ha azt szeretné, hogy csepegtetni az alkalmazás „valaki másnak a kódját.” Végtére is, más emberek kéziratai is definiálható módszerek / classes / függvények azonos nevet, mint te. Mit kell tenni? Logikai és felér az új nevet, majd nevezze át a fogantyúkat? Invent ötletes elő- és így nagyon hosszú neveket (például ahogy az Zend)? Korábban kellett volna, de most, névterek elegánsan oldja meg ezt a problémát. Segítségükkel, nagyon kényelmes, hogy strukturálják a kódot. Néhány perc múlva, akkor nézd meg magad.

Összefoglalva egy kicsit, és ne feledje, egyszer és mindenkorra, hogy a névtér (namespace) - egyfajta tároló, amelynek célja a logikai csoportosítása egyedi nevek. Akkor kijelentem több névtér és osztályok leírni őket az azonos nevű / módszerek, de a különböző funkciókat. Inicializálásnál ezeket az objektumokat, akkor meg kell adnia a névtér, amely a leírás a kívánt objektumot. A névtér össze lehet hasonlítani a mappát a fájlrendszerben. Mindenki tudja, hogy egy-egy mappát nem fájlt ugyanazzal a névvel. De ismétlem, tudjuk, hogy a telepítő fájl a legtöbb program - a setup.exe. Ha megpróbálja elhelyezni a telepítési fájlok különböző programok ugyanabban a mappában, azt látjuk, egy alattomos madár oblomingo. A rendszer figyelmezteti velünk azonnal, hogy a fájl ebben a könyvtárban létezik a munkát, akkor (a rendszer) lehet cserélni a meglévő fájlt kell másolni. Azáltal, hogy ezt a kétes állítás, te teljesen zatresh meglévő programot. Kiutat ez a helyzet -, hogy hozzon létre egy külön mappába, majd helyezze a telepítő fájlt a második program benne. A telepítés az első vagy a második program, akkor fogják irányítani a mappa nevét, azaz a A telepítés futtatásához fájlt a kívánt programot.

Remélhetőleg ebben a példában a kifogott és tudta, hogy a hatalom a névtér, és ha nem, akkor ne essen kétségbe, figyelembe véve a következő példákban minden a helyére kerül.

Namespaces a gyakorlatban

Először is, csak azt akarom, hogy eloszlassa a kételyeket, hogy ha a PHP 5.3.0 lesz bejutni a régi kódot és érvényesítése névtér. Minden attól függ, a vágy. Ha nem használja neymspeysy, akkor a kód egyszerűen található egy globális térben. A fellebbezés valamennyi osztályára / módszerek / funkciók nem lesznek pontosan úgy, ahogy azelőtt volt.

Nézzünk egy egyszerű példát:

Lehetséges, hogy van igény van, hogy állapítsa meg több névtér egyetlen script fájlt. Ez teljesen normális vágy és php teljesen elégítette ki. Nézd meg a következő példát:

névtér leányvállalatok

PHP 5.3.0 is támogatja a gyermek névtérben. Annak megállapításához, a gyermek neymspeysa kell használnia backslash. Például:

Hívja a kódot a névtér

Alapjai és elmélete dolgozó névterek, megmondtam, és most itt az ideje, hogy megpróbálja az egészet, hogy a valódi gyakorlatban. Hozzon létre egy új szkriptet, és másolja az alábbi képen látható kódot:

Ebben a kódot, azt jelentette két nagy neymspeysa (myproject, myProject2) és egy gyermek - myProject2 \ al. Az első névtér csak egy van, amely felelős a következtetést a hagyományos „Hello World”. A második, kijelentem, állandó és az osztályt. Annak igazolására, a kihívás osztály, leírtam, ez a módszer - helloworld (). Nem nehéz kitalálni, hogy a hívás után, ez ugyanaz a neve, mint a funkció megjeleníti a kifejezést, hogy minden ismerős programozó. Leányvállalata „névtér” lényegében nem különbözik a myproject. Kivéve azt a tényt, hogy ez egy leányvállalata myProject2.

Mentse mindezt firkálás alatt néhány fájl nevét (én választottam sample_of_namespace.php), és hozzon létre egy script fájlt. Ez az, amit írni a kódot, amely bizonyítja, telefonálási funkciókat / class mi neymspeysov. Tehát a teljes tartalmát a forgatókönyvet, a kód felelős a hívást a névtér a következő:

Összefoglalva, azt akarom mondani. Megfelelő használatát névterek segítségével nagyon jól strukturált kódot, és egyszerűsíti a további újratervezés. Feltételezhetjük, hogy a PHP fejlesztők megtettek és értékesített nagyon hasznos funkció. Bocs, csak meg kellett várni, hogy hosszú ideig. De ahogy a mondás tartja: „Jobb későn, mint soha.” Ha érdekli a téma névtérben, akkor olvassa el az ugyanezen számában a második része a cikket szentelt az ezzel hasznos funkcióval. Ez minden. Bai!