Spațiu de nume în PHP

Un PHP 5.3.0 interesante noutăți sunt spațiu de nume (namespace). Cei care lucrează cu Java și C # au ghicit ce se întâmplă. În aceste limbi, oportunitatea a fost prezent de la început. Și acum, php-programatorii pot folosi, de asemenea, ceva de genul asta în proiectele lor. În acest articol vă voi spune despre scopul și spațiile de nume beneficiile pe care le pot aduce. Voi încerca să nu încărcați teoria creierului uscată și să prezinte toate cele mai interesante. Deci, să mergem!

De ce avem nevoie de aceste namespace?

Pentru un moment, imaginați-vă că sunteți un dezvoltator de biblioteca mega rece. Ești furios încerca zel pentru a scrie un produs rece, iar la prima ocazie adaugă noi caracteristici. Treptat crește codul, iar mai devreme sau mai târziu vine o zi când ghidat devine extrem de problematică. Nu, am înțeles că rămânem la bun gust în scris de cod, dar atunci când au anunțat zeci de metode și clase diferite, pentru a se pierde în această fermă o bucată de tort. Să nu vorbim despre lucruri triste. Imaginați-vă că ați decis să se extindă o anumită clasă (sau creați unul nou), creând o metodă suplimentară pentru el. Se pare că totul este simplu. Am găsit metoda descrisă de clasă. Dar, în cazul în care este garanția că denumirea utilizată a metodei sau clasa în sine nu a fost utilizat anterior? Da, ai putea verifica banal prin căutarea sau de clasa Explorare (dacă lucrați în IDE). Nu este foarte mult timp.

Spațiu de nume în PHP

Dar dacă doriți neapărat să creați o clasă cu un nume care a fost deja utilizat? Desigur, există o opțiune nu să facă baie și pentru a apela o metodă / clasă în mod diferit. Soluția este bună atunci când scrie tot codul singur. Din păcate, această metodă nu poate fi numit bun, atunci când doriți să insufle în aplicația „codul altcuiva.“ La urma urmei, în manuscrisele altor oameni pot fi de asemenea definite metode / clase / funcții cu același nume ca și tine. Ce să fac? Puzzle și să vină cu numele lor noi, și apoi redenumiți mânerele? Inventeaza prefixe ingenioase și dau nume foarte lungi (de exemplu, așa cum se face în Zend)? Anterior, aceasta ar trebui sa, dar acum, namespace rezolva elegant această problemă. Cu ajutorul lor, într-adevăr convenabil de a structura codului. După câteva minute, vei vedea pentru tine.

Pentru a rezuma un pic și amintiți-vă o dată pentru totdeauna că spațiul de nume (namespace) - este un fel de stocare, concepute pentru gruparea logică de nume unice. Puteți declara mai multe namespace și clase pentru a le descrie cu același nume / metode, dar funcționalitate diferită. Când inițializarea aceste obiecte, va trebui să specificați spațiul de nume care conține descrierea pe care obiectul dorit. Spațiul de nume poate fi comparat cu dosarele din sistemul de fișiere. Toată lumea știe că într-un singur dosar nu poate fișier cu același nume. Dar, din nou, știm că fișierul de instalare de cele mai multe programe - este setup.exe. Dacă încercați să plasați fișierele de instalare de programe diferite în același dosar, vom vedea o oblomingo pasăre insidios. Sistemul ne va avertiza imediat că există fișierul în acest director pentru locuri de muncă, acesta (sistemul) poate înlocui fișierul existent pentru a fi copiat. Prin acceptarea acestei propuneri dubioase, sunteți complet zatresh program existent. Cale de ieșire din această situație - pentru a crea un dosar separat și plasați fișierul de instalare al doilea program în ea. Pentru instalarea primul sau al doilea program, veți fi ghidat de numele dosarului, și anume executați fișierul de instalare program dorit.

Să sperăm că, în acest exemplu sunt prinși și cunoștea puterea spațiul de nume, și dacă nu, atunci nu dispera, luând în considerare următoarele exemple, toate se încadrează în loc.

Spații de nume în practică

În primul rând, vreau doar să înlăture îndoielile pe care atunci când se utilizează PHP 5.3.0, va trebui să obțineți în codul vechi și pune în aplicare spațiu de nume. Totul depinde de dorinta ta. Dacă nu utilizați neymspeysy, atunci codul este pur și simplu situat într-un spațiu global. Un apel la toate categoriile / metode / funcții vor fi exact așa cum a fost înainte.

Să ne uităm la un exemplu simplu:

Este posibil să aveți este necesar să declare mai multe spații de nume într-un singur fișier script. Aceasta este dorinta absolut normal si PHP poate satisface complet el. Uită-te la următorul exemplu:

filiale spațiu de nume

PHP 5.3.0 sprijină, de asemenea, spațiul de nume pentru copii. Pentru a determina copilul neymspeysa trebuie să utilizați o bară oblică. De exemplu:

Apelați codul din spațiul de nume

Fundamentele și teoria de a lucra cu spațiile de nume, ți-am spus, iar acum este timpul pentru a încerca totul la practica reală. Creați un nou fișier script și copiați-l în codul de mai jos este prezentat:

În acest cod, am anunțat două neymspeysa majore (myProject, myProject2) și un copil - myProject2 \ Sub. Primul spațiul de nume este declarată doar o singură funcție, care este responsabil pentru încheierea tradiționale „Hello World“. În al doilea, declar o constantă, și de clasă. Pentru a demonstra clasa provocare, am descris-o singură metodă - helloworld (). Nu este greu de ghicit că, după apel, acesta este același nume ca și funcția afișează expresia familiară fiecărui programator. Filiala „spațiu de nume“, în esență, nu este diferit de MyProject. Cu excepția faptului că aceasta este o filială a myProject2.

Salvați toate acestea mâzgălind în sub un nume al fișierului (am ales sample_of_namespace.php) și de a crea un alt fișier script. Este ceea ce am scrie cod care demonstreaza de asteptare functionalitatile / clasa neymspeysov noastre. Deci, conținutul integral al script-ul, codul este responsabil pentru apelul din spațiul de nume este după cum urmează:

Rezumând, vreau să spun. Utilizarea adecvată a namespace permite foarte bine structurat de cod și de a simplifica și mai mult refactoring. Putem presupune că dezvoltatorii PHP au făcut tot și vândute caracteristică foarte utilă. Ne pare rau, doar a trebuit să așteptați pentru o lungă perioadă de timp. Dar, așa cum se spune: „Mai bine mai târziu decât niciodată.“ Dacă, sunteți interesat în spațiul de nume subiect, apoi citiți în aceeași problemă de a doua parte a articolului dedicat utilizării acestui caracteristici utile. Asta e tot. Bai!