Prostor imen PHP: primer. Kako uporabljati imenski prostor v PHP?

Spremenljivka definira vrednost, vendar se lahko sklicuje na drugo spremenljivko in njeno vrednost. V procesu uvajanja algoritma ima spremenljivka običajno veliko različnih vrednosti. Konstanta shranjuje samo eno vrednost. Predmet je nepredvidljiv: je sestavni del strukture, vsebine in številnih funkcij.

Prostor je zbirka spremenljivk, konstant, objektov, funkcij in drugih konstruktov, ki jih je razvil razvijalec, ki se lahko sklicuje z imenom tega imenskega prostora.

Imena: obseg opisa podatkov in algoritmov

Imena elementov (spremenljivke, konstante, objekti, funkcije in drugi konstrukti razvijalca) se nikoli ne prekrivajo. Vsaka sopomenka PHP se razlaga kot resna napaka in v primerih, ko ne more enolično prepoznati težave, razvijalec prejme kodo, ki ne deluje v skladu z namenom ali belo polje v brskalniku.


Vsa imena vseh podatkov morajo biti edinstvena zaradi globalnega prostora. Imena objektov in funkcij se prav tako ne smejo ponavljati, vendar se obseg globalne vidnosti prekine v telesih metod objektov in funkcij. Ima svoj lokalni imenski prostor in nič ne preprečuje, da bi karkoli klicali znotraj, kot je označeno navzven.
Naslednji primer je klasičen, če ne upoštevate ključne besede namespace: vse kot običajno. Deluje tudi drugi. Predpona NameSpaceTwo pred imeni funkcij, s katerim vstavite kodo. Če je prva funkcija odstraniti globalno ključno besedo in operacijo $ iExt = 1; premaknite se nakorak višji, potem vrednost spremenljivke 100 ne bo poznala niti prve funkcije niti druge.

Prostor: veliko področij opisov

V spodnjem primeru je skupna datoteka, ki uporablja dva vložka. Vsak vložek ima isto funkcijo scCheckName (). Iz katerega izmed njih lahko izbirate, programer uporablja ime tega prostora, ki je relevanten ob pravem času in na pravem mestu kode.


Dejstvo, da je isto ime prisotno v generični kodi (po združitvi vstavkov), ne povzroči napake zaradi preprostega razloga, ker je vsaka vstavljena datoteka označena s svojim edinstvenim imenom. V prvi datoteki je vse, kar je opisano v njem, povezano z imenom NameSpaceOne. V drugi datoteki bodo vsi opisi vezani na NameSpaceTwo. Dvojna imena v obeh datotekah so dovoljena, vendar mora biti v vsakem od njih vsako ime elementa (spremenljivka, konstanta, objekt, funkcija) edinstveno.

V tem primeru je sprememba imenskega imenskega prostora v klicu scCheckName () odvzela spremenljivki $ iExt drugega imenskega prostora iz spremembe. Zato je v tem primeru posebej izbrana beseda "spremenjena" - sprememba se dejansko ni zgodila. Vrednost spremenljivke ostaja enaka.

Testiranje in oblikovanje večjezičnosti

Ti preprosti primeri kažejo, da je enostavno poenostaviti razvoj kompleksnih projektov, povečati učinkovitost, produktivnost in pospešiti delo. Nedvomno so se pojavile prve zamisli o uporabi imenskega prostora:
  • varno testiranje skriptov z zamenjavo "delovnih" prostorov s testnimi analogi;
  • veliko varno načrtovanjeimena imenskega prostora in vsakega elementa opisa (spremenljivka, konstanta, objekt) že dolgo dajejo razvijalcu možnost samostojnega manipuliranja. sintaksa in semantika.
    Jezikovni konstrukti in splošno pravilo modernega programiranja: "razumljivo" - storjeno - obstaja protislovje - "bel zaslon" za profesionalnega razvijalca "ne deluje". Mnogi programerji sploh ne vedo, kje naj poiščejo sporočilo o napaki, ko v brskalniku ni ničesar (čisto belo polje). Na določeni stopnji razvoja programer razmišlja o sintaksi in semantiki PHP, "deluje" z avtomatom in rezultatom: lastno sintakso in lastno semantiko v mejah. Bel zaslon - takoj se nedvoumna reakcija profesionalnega programerja in napaka odpravi. Zakaj porabiti čas za odpravljanje napak in gledati napake pri napakah?

    Predmeti, polja in imenski prostor

    Lahko rečemo, da so spremenljivke, konstante in funkcije prejšnje stoletje, vendar se uporabljajo pri oblikovanju objektov. Dobra koda je, kadar je algoritem predstavljen z medsebojno povezanimi predmeti, ne pa z zaporedjem pravilnih konstruktov.
    Če uporabljate nize predmetov, manipulirate z idejo stack in zadnjega (prvega) elementa matrike, lahko dobite dinamiko: predmeti sami "odločajo", kako naj funkcija mesta deluje, odvisno od situacije. V PHP imenski prostor je spremenljivka posebne vrste, ki jo predstavlja njen edinstvenime je pogosto težko sestaviti. Imena kodnih imen se uporabljajo v kodi. Če je niz, lahko med izvajanjem skripta zamenjamo en prostor z drugim. Če se imenski prostor PHP uporablja kot vrednost spremenljivk, je to še bolj semantično naložena skladnja, še močnejša od objektnih nizov. Objekt je struktura in vsebina, za katero je značilna enotnost. Prostor je sklop predmetov, elementov in povezav med njimi.
    Poskusov ne morete izvajati v delujočem sistemu, vendar zaradi funkcije imenskega prostora PHP omogoča simulacijo resničnega delovnega sistema v drugem prostoru za namene:
  • nadaljnjega razvoja;
  • testiranje;
  • vzdrževanje itd.
  • Če abstrahiramo od sintakse, ki jo predlagajo razvijalci PHP, in si predstavljamo imenski prostor kot globalni kompleksni objektni sistemi, se obzorja zmogljivosti večkrat razširijo.

    Sintaksa in uporaba imenskega prostora

    Besedni imenski prostor PHP sprejema samo prvi korak kode vsake datoteke. Vsi opisi naj gredo šele po njem. Sintaksa vključuje samo ime, podano v običajnem pomenu imena. Ustvarite smiselno uporabo pravilnih besed, ki odražajo vsebino. Bolje je, če je ime dolgo, vendar obstaja nekaj, kar daje jasno razumevanje, o katerem prostoru govori, kaj počne, kaj opisuje, kaj je potrebno ali za kaj je ustvarjeno. Prostori se lahko medsebojno infundirajo v nedogled, vendar tega ne smemo zlorabljati. Ime mora biti jasno, substrat je utemeljen in zaporedje imen prostora mora biti logično. Vaplikacije uporabljajo in imenski prostor, PHP omogoča kompleksno kodiranje, toda vedno, ko obstaja takšna priložnost, je bolje, da izdelamo preprosto možnost.
    Splošno pravilo: imenski prostor je opis in ena datoteka, uporaba je uvoz prostora v uporabniški skript in mu dodeli psevdonim (kratka povezava).

    Preprost primer samodejnega nalaganja razredov (objektov)

    Naloga ima objekt za manipuliranje z nizi, slogi slog strani (opisi CSS), datumskimi objekti, datotečnimi sistemi in bazami podatkov. Pomen izvajanja - ustvariti v teh petih položajih, preproste vmesnike za uporabo potrebnih zmogljivosti le z metodami teh objektov. Ne dovoljuje se neposredna uporaba funkcij in struktur jezika. Pri tej nalogi se PHP uporablja za samodejno nalaganje razredov. Imenski prostor se obravnava kot zbirka objektov, ki se nahajajo na določenem mestu datotečnega sistema. Običajno so vsi objekti v datotečnem sistemu v vsebini, v mapah in datotekah z določenim imenom.
    Koda na levi prikazuje nastanek zahtevanih petih objektov, toda kje so točno, ni določena. V kodi na desni je besedilo samodejnega nalagalnika (glavni skript), ki pri nalaganju razredov (objektov) avtomata nadomesti želeno pot do lokacije objekta in razširitve datoteke .php.

    Primer niza imenskih prostorov

    Knjižnica PhpOffice /PhpWord je kvalitativni primer uporabe kompleksne hierarhije številnih imenskih prostorov. Mapa elementa vsebuje skoraj ves nabor elementov, ki so na voljo pri ustvarjanju dokumenta * .docx (MS Word), druge mape vsebujejopotrebna orodja za delo z elementi, odstavki in tabelami.
    Pravzaprav je knjižnica postavljena v mapo projekta, ker je treba funkcijski prostor PhpOffice /PhpWord dopolniti z določenim orodjem in na koncu ustvariti lastno različico istega izdelka.

    Prenos več razredov različnih imenskih prostorov

    Z uporabo samodejnega zagona imenskega prostora PHP, ko morate naložiti več razredov in je hierarhija razvitega sistema objektov precej zapletena in težko predstavljiva, vodi do potrebe po ustvarjanju togih konstruktov. Usmerjenost razvijalca (uporaba produkta za nadaljevanje dela) je možna le v kontekstu semantike (razumevanje projekta), ki jo predstavljajo pravilne kombinacije besed, ki odražajo pravi pomen in medsebojno povezovanje predmetov.
    Potreba po uporabi knjižnice v posameznem projektu vodi do problema, kako združiti imenske prostore razvijalca in avtorje PhpOffice /PhpWord. Najbolje je, da ta izdelek (njegove prostore in objekte) postavite v svoj prostor projekta. Pomembno je omeniti, da brez posodabljanja imenskih prostorov tega izdelka na ravni njegovih abstraktnih elementov in nakladalnih razredov ne bo uspelo. To kaže, da v imenskem prostoru PHP uporaba notranjih imenskih prostorov ni mogoče izvesti abstraktno in univerzalno.

    Datotečni sistem in lokalizacija prostorov

    V bistvu je imenski prostor "risanje" poti v datotečnem sistemu do želenega objekta. Uporabite imena datotek vkakovost imen predmetov je naravna in običajna. Uporaba imen imen imenskega prostora je objektivna. "Lesena" organizacija informacij je zahtevna pri uporabi in otežuje razvoj, vendar je naravna reprezentacija objektnih sistemov. Problem je v tem, da razvojno fazo predstavlja določen urejevalnik kod, ki združuje tako vizualno predstavitev map kot vsebino določene mape, vendar še ni urejevalnika, ki bi zagotavljal napredek objektov in map.

    Problem abstrakcije in univerzalnosti

    Sprejeta v mislih razvijalca in objektivno dejansko:
  • objektno usmerjeno programiranje (OOP) daje abstrakcijo in sposobnost manipuliranja informacij v skladu z njeno resnično semantiko;
  • ​​
  • imenskega prostora predstavlja položaj skriptov, objektov in delno pomen projekta v datotečnem sistemu
  • . Pravzaprav z združevanjem OOP abstrakcije z imeni objektov (datotek) in postavitvijo v datotečni sistem (mape) iz S pravilnim imenovanjem imen (poti + imena) lahko upravljate oblikovanje imenskih prostorov v procesu izvajanja skripta. Programiranje je že pridobilo močno razvojno dinamiko, vendar če prevedete procesne in obremenitvene faze razvoja iz urejevalnika besedila (ki ustvarja skripte in se postavi na drevesne mape) na idejo o oblikovanju takšne kode, ki vam omogoča izboljšanje in postavitev v pravi datotečni sistem - programiranje se bo dvignila na novo višino.

    Sorodne publikacije