Prostor imena PHP: primjer. Kako koristiti namespace u PHP-u?

Varijabla definira vrijednost, ali može biti referenca na drugu varijablu i njezinu vrijednost. U procesu implementacije algoritma, varijabla obično uzima mnogo različitih vrijednosti. Konstanta pohranjuje samo jednu vrijednost. Objekt je nepredvidljiv: on je svojstven strukturi, sadržaju i mnogim značajkama.

Prostor imena je skup varijabli, konstanti, objekata, funkcija i drugih konstrukata koje je kreirao programer, a koji se mogu referencirati kroz ime ovog prostora imena.

Imena: opseg opisa podataka i algoritama

Nazivi elemenata (varijable, konstante, objekti, funkcije i drugi konstrukti razvijatelja) nikada se ne preklapaju. Bilo koji sinonim PHP-a tumači se kao ozbiljna pogreška, a u slučajevima kada ne može jedinstveno identificirati problem, programer prima kod koji ne radi kako je planirano ili bijeli okvir u pregledniku.


Sva imena svih podataka moraju biti jedinstvena zbog globalnog prostora. Imena objekata i funkcija također se ne smiju ponavljati, ali se opseg globalne vidljivosti prekida u tijelima metoda objekata i funkcija. Ona ima svoj vlastiti, lokalni prostor imena i ništa ne sprečava da se nešto nazove jer je označeno izvana.
Sljedeći primjer je klasičan ako ne obratite pozornost na ključnu riječ imenski prostor: sve kao i obično. Radovi drugi uključuju. Prefiks NameSpaceTwo prije imena funkcija određuje s kojim insertom se uzima kod. Ako je prva funkcija uklanjanje globalne ključne riječi i operacije $ iExt = 1; premjestiti nakorak viši, tada vrijednost varijable 100 neće znati ni prvu funkciju ni drugu.

Prostor imena: mnoga područja opisa

U primjeru ispod, postoji zajednička datoteka koja koristi dva umetka. Svaki umetak ima istu scCheckName () funkciju. Koju biraju, rješava programera koristeći naziv tog prostora, koji je relevantan u pravo vrijeme i na pravom mjestu koda.


Činjenica da je isto ime prisutno u generičkom kodu (nakon spajanja umetaka) ne dovodi do pogreške zbog jednostavnog razloga što je svaka umetnuta datoteka označena vlastitim jedinstvenim imenom. U prvoj datoteci, sve što je opisano u njoj je povezano s imenom NameSpaceOne. U drugoj datoteci, svi opisi bit će vezani za NameSpaceTwo. Dopušteni su svi duplikati imena u obje datoteke, ali u svakom od njih, bilo koji naziv elementa (varijabla, konstanta, objekt, funkcija) mora biti jedinstven.

U ovom primjeru, promjena imenskog prostora imena u pozivu scCheckName () uskratila je promjeni $ iExt drugog naziva iz promjene. Zato je u primjeru posebno odabrana riječ "promijenjena" - promjena se zapravo nije dogodila. Vrijednost varijable ostaje ista.

Testiranje i višejezični dizajn

Ovi jednostavni primjeri pokazuju da je lako pojednostaviti razvoj složenih projekata, povećati učinkovitost, produktivnost i ubrzati rad. Definitivno su se pojavile prve ideje o korištenju imenskog prostora:
  • sigurno skriptno testiranje zamjenom "radnih" prostora testnim analozima;
  • sigurno projektiranje velikoimena prostora imena i svakog elementa opisa (varijabla, konstanta, objekt) dugo su dali developeru mogućnost samostalnog manipuliranja. sintaksa i semantika.
    Jezični konstrukti i opće pravilo modernog programiranja: "razumljivo" - učinjeno - postoji kontradikcija - "bijeli zaslon" za profesionalnog developera "ne radi". Mnogi programeri ne znaju čak ni gdje tražiti poruku o pogrešci kada u pregledniku nema ništa (čisto bijelo polje). Na određenom stupnju razvoja programer misli na sintaksu i semantiku PHP-a, "radi" s automatom i rezultatom: vlastitu sintaksu i vlastitu semantiku unutar granica. Bijeli zaslon - odmah nedvosmislena reakcija profesionalnog programera i greška je eliminirana. Zašto trošiti vrijeme na program za ispravljanje pogrešaka i gledati pogreške?

    Objekti, nizovi i imenski prostor

    Možemo reći da su varijable, konstante i funkcije posljednje stoljeće, ali se koriste u dizajnu objekata. Dobar kod je kada je algoritam predstavljen interakcijskim objektima, ali ne i slijedom ispravnih konstrukata.
    Ako koristite nizove objekata, manipulirate idejom stog i posljednjeg (prvog) elementa niza, tada možete dobiti dinamiku: objekti sami "odlučuju" kako bi funkcija mjesta trebala funkcionirati, ovisno o situaciji. U PHP-u, imenski prostor je varijabla posebne vrste, predstavljena vlastitim jedinstvenimIme je često teško sastaviti. U kodu se koriste nazivi prostora imena. Ako se radi o nizu, tada se jedan razmak može zamijeniti drugim tijekom izvođenja skripte. Ako se imenski prostor PHP koristi kao vrijednost varijabli, onda je to još više semantički učitana sintaksa, čak i snažnija od objektnih polja. Objekt je struktura i sadržaj koji karakterizira jedinstvo. Prostor je skup objekata, elemenata i veza između njih.
    Ne možete provoditi eksperimente na pokrenutom sustavu, ali zahvaljujući imenskom prostoru, PHP pruža mogućnost simuliranja stvarnog radnog sustava u drugom prostoru u svrhu:
  • daljnjeg razvoja;
  • testiranje;
  • održavanje, itd.
  • Ako apstrahiramo od sintakse koju su predložili PHP programeri i zamislimo imenski prostor kao globalne složene objektne sustave, horizonti sposobnosti se proširuju više puta.

    Sintaksa i korištenje prostora imena

    Riječ prostora imena PHP prihvaća samo prvi korak koda svake datoteke. Svi opisi trebaju ići tek nakon njega. Sintaksa uključuje samo ime dano u uobičajenom smislu naziva. Napravite smisleno korištenje ispravnih riječi koje odražavaju sadržaj. Bolje je ako je ime dugo, ali postoji nešto što daje jasno razumijevanje o kojem prostoru govori, što radi, što opisuje, što je potrebno ili za što je stvoreno. Prostori se mogu infundirati jedan drugome na neodređeno vrijeme, ali to se ne smije zloupotrebljavati. Ime mora biti jasno, supstrat je potkrijepljen, a slijed imena prostora mora imati logiku. uaplikacije koriste i imenski prostor, PHP omogućuje složeno kodiranje, ali uvijek, kada postoji takva prilika, bolje je riješiti jednostavnu opciju.
    Opće pravilo: imenski prostor je opis i to je jedna datoteka, upotreba je uvoz prostora u skriptu i dodijeliti joj pseudonim (kratki link).

    Jednostavan primjer autoloading klase (objekata)

    Zadatak ima objekt za manipuliranje nizova, stilova stilova stranica (CSS opisi), datuma objekata, datotečnih sustava i baza podataka. Značenje provedbe - stvoriti u tih pet pozicija, jednostavna sučelja za korištenje potrebne sposobnosti samo kroz metode tih objekata. Nije dopušteno izravno korištenje funkcija i struktura jezika. U ovom zadatku, PHP se koristi za autoloading klase. Prostor naziva smatra se skupom objekata koji se nalaze na određenom mjestu u datotečnom sustavu. Obično se svi objekti smještaju u datotečni sustav u sadržaju, u mapama i datotekama s određenim nazivom.
    Šifra s lijeve strane označava stvaranje potrebnih pet objekata, ali gdje su točno, nije specificirano. U kodu na desnoj strani nalazi se tekst autoloadera (glavna skripta), koji prilikom učitavanja klasa (objekata) automatom zamjenjuje željeni put do mjesta objekta i proširenja .php datoteke.

    Primjer skupa imenskih prostora

    Knjižnica PhpOffice /PhpWord je kvalitativni primjer korištenja složene hijerarhije mnogih prostora imena. Mapa stavke sadrži gotovo cijeli raspon elemenata dostupnih prilikom izrade dokumenta * .docx (MS Word), dok druge mape sadržepotrebni alati za rad s elementima, paragrafima i tablicama.
    Zapravo, knjižnica je smještena u mapu projekta jer se prostor funkcije PhpOffice /PhpWord treba dopuniti određenim alatom i na kraju stvoriti vlastitu verziju istog proizvoda.

    Preuzimanje višestrukih klasa različitih imenskih prostora

    Koristeći automatsko pokretanje prostora naziva PHP, kada je potrebno učitati više klasa, a hijerarhija razvijenog sustava objekata prilično je složena i teško predstavljiva, to dovodi do potrebe za stvaranjem krutih konstrukata. Orijentacija programera (upotreba proizvoda za nastavak rada) moguća je samo u kontekstu semantike (razumijevanje projekta), koja je predstavljena pravilnim kombinacijama riječi koje odražavaju stvarno značenje i međusobno povezivanje objekata.
    Potreba za korištenjem knjižnice u pojedinom projektu dovodi do problema kako kombinirati prostore imena programera i autora PhpOffice /PhpWord. Najbolje je smjestiti ovaj proizvod (njegove prostore i objekte) u svoj prostor projekta. Važno je napomenuti da bez ažuriranja prostora imena ovog proizvoda na razini njegovih apstraktnih elemenata i učitavanja klase neće uspjeti. Ovo ukazuje da se u prostoru naziva PHP, korištenje internih prostora imena ne može izvesti apstraktno i univerzalno.

    Datotečni sustav i lokalizacija prostora

    U biti, prostor imena je "crtanje" staza u datotečnom sustavu do željenog objekta. Koristite nazive datoteka ukvaliteta imena objekata je prirodna i uobičajena. Korištenje imena naziva prostora naziva je objektivno. "Drvena" organizacija informacija je zahtjevna u primjeni i komplicira razvoj, ali je prirodna reprezentacija objektnih sustava. Problem je u tome što razvojnu fazu predstavlja određeni uređivač koda, koji kombinira vizualni prikaz mapa i sadržaja određene mape, ali još ne postoji urednik koji bi omogućio napredak objekata i mapa.

    Problem apstrakcije i univerzalnosti

    Prihvaćen od strane razvijatelja i objektivno u stvari:
  • objektno orijentirano programiranje (OOP) daje apstrakciju i sposobnost manipuliranja informacijama u skladu sa svojom pravom semantikom;
  • ​​
  • imenskog prostora predstavljaju položaj skripti, objekata i dijelom značenje projekta u datotečnom sustavu
  • U stvari, kombiniranjem OOP apstrakcije s imenima objekata (datoteka) i stavljanjem u datotečni sustav (mape) iz Pravilnim imenovanjem imena (staza + imena) možete upravljati formiranjem prostora imena u procesu izvršavanja skripte. Programiranje je već steklo snažnu razvojnu dinamiku, ali ako prevedete procesne i učitavajuće faze razvoja iz uređivača teksta (koji stvara skripte i postavlja se na stabla mapa) na ideju formiranja takvog koda, koji vam omogućuje da poboljšate i smjestite na pravom mjestu datotečni sustav - programiranje će se popeti na novu visinu.

    Povezane publikacije