Namespace PHP: Příklad. Jak používat jmenný prostor v PHP?

Proměnná definuje hodnotu, ale může být odkazem na jinou proměnnou a její hodnotou. V procesu implementace algoritmu proměnná obvykle trvá hodně různých hodnot. Konstanta ukládá pouze jednu hodnotu. Objekt je nepředvídatelný: je neodmyslitelnou součástí struktury, obsahu a mnoha funkcí.

Namespace je sada proměnných, konstant, objektů, funkcí a dalších konstrukcí vytvořených vývojářem, které lze odkazovat přes název tohoto oboru názvů.

Názvy: rozsah popisu dat a algoritmů

Názvy prvků (proměnné, konstanty, objekty, funkce a další konstrukty vývojáře) se nikdy nepřekrývají. Každé synonymum PHP je interpretováno jako závažná chyba a v případech, kdy problém nelze jednoznačně identifikovat, vývojář obdrží kód, který v prohlížeči nefunguje tak, jak je zamýšleno, nebo bílý rámeček.


Veškeré názvy všech dat musí být jedinečné kvůli globálnímu prostoru. Názvy objektů a funkcí by také neměly být opakovány, ale rozsah globální viditelnosti je přerušován v těle metod objektů a funkcí. Má vlastní, místní jmenný prostor a nic neumožňuje volat něco uvnitř, jak je označeno směrem ven.
Následující příklad je klasika, pokud nedáváme pozor na jmenný prostor klíčových slov: vše jako obvykle. Funguje druhý. Předpona NameSpaceTwo před jmény funkcí určuje, s jakým kódem je vložen kód. Je-li první funkcí odstranit globální klíčové slovo a operaci $ iExt = 1; přesunout doo krok vyšší, pak hodnota proměnné 100 nebude znát ani první funkci, nebo druhou.

Namespace: mnoho sfér popisů

V níže uvedeném příkladu existuje společný soubor, který používá dvě vložky. Každá vložka má stejnou funkci scCheckName (). Který z nich vybírá, řeší programátor pomocí názvu tohoto prostoru, který je relevantní ve správný čas a na správném místě kódu.


Skutečnost, že stejný název je obsažen v obecném kódu (po sloučení vložky) nevede k chybě z jednoduchého důvodu, že každý vložený soubor je označen svým vlastním jedinečným názvem. V prvním souboru je vše, co je v něm popsáno, spojeno s názvem NameSpaceOne. Ve druhém souboru budou všechny popisy svázány s názvem NameSpaceTwo. Jakékoli duplicitní názvy v obou souborech jsou povoleny, ale v každém z nich musí být každý název prvku (proměnná, konstanta, objekt, funkce) jedinečný.

V tomto příkladu změna jmenného prostoru pojmenování při volání scCheckName () zbavila proměnnou $ iExt druhého oboru názvů ze změny. Proto je v příkladu speciálně vybráno slovo "změněno" - změna se vlastně nestala. Hodnota proměnné zůstává stejná.

Testování a vícejazyčný návrh

Tyto jednoduché příklady ukazují, že je snadné zjednodušit vývoj složitých projektů, zvýšit efektivitu, produktivitu a urychlit práci. Určitě se objevily první myšlenky o použití jmenného prostoru:
  • testování bezpečného skriptování nahrazením "pracovních" prostorů testovacími analogy;
  • bezpečné navrhování velkýchtýmy vývojářů -.. tím, že poskytuje individuální „prostor popisující prvky
  • Ve skutečnosti namespace je mnohem důležitější jazyk PHP, názvů a popis jednotlivých prvků (variabilní, konstantní objektu) na dlouhou dobu dal developer možnost manipulovat syntax a sémantika.
    designový jazyk a moderní programovací obecné pravidlo, „samozřejmě“ - udělal - rozpor - „neplatný“ „bílé plátno“ pro profesionální vývojáře Mnoho programátorů ani neví, kam hledat chybovou zprávu, když v prohlížeči neexistuje nic (čisté bílé pole). V určitém stadiu vývoje programátor si myslí, syntaxi a sémantiku PHP, «pracovat“ stroj a výsledkem je: vaše vlastní syntaxe a sémantika vlastnit v rámci přípustné. Bílá obrazovka - okamžitě jednoznačná reakce profesionálního programátora a chyba je eliminována. Proč strávit čas na ladicí program a podívat se na chybové chyby?

    objektů, polí a namespace

    Dá se říci, že proměnné, konstanty a funkce - to minulé století, ale jsou používány v rozvojových projektech. Dobrý kód je, když je algoritmus reprezentován interaktivním objektem, ale nikoli sekvencí správných konstrukcí.
    Při použití pole objektů manipulovaných myšlenkou stohu a poslední (první) prvek pole, můžete získat dynamiku: předměty samy „vyřešit“, jak funkčnost by měl fungovat místo v závislosti na situaci. V PHP je jmenný prostor proměnnou zvláštního druhu, kterou představuje její vlastní jedinecjméno je často obtížné komponovat. Jména názvů jsou v kódu použita. Je-li to řetězec, může být během spouštění skriptu nahrazen jeden prostor jiným. Pokud je jmenný prostor PHP použit jako hodnota proměnných, je to ještě sémantičtější syntaxe, která je ještě silnější než pole objektů. Objektem je struktura a obsah, který je charakterizován jednotou. Namespace je sada objektů, prvků a vazeb mezi nimi.
    Nemůžete provádět experimenty na běžícím systému, ale díky jmennému prostoru umožňuje PHP simulovat skutečný pracovní systém v jiném prostoru za účelem:
  • dalšího vývoje;
  • testování;
  • údržba atd.
  • Pokud budeme abstraktní ze syntaxe navrženého vývojáři PHP a představujeme obor názvů jako globální komplexní objektové systémy, horizonty schopností se několikrát rozšiřují.

    Syntaxe a použití oboru názvů

    Pole namespace PHP přijímá pouze první krok kódu každého souboru. Všechny popisy by měly jít pouze po něm. Syntaxe obsahuje pouze jméno uvedené v obvyklém smyslu jména. Zajistěte smysluplné použití správných slov, které odrážejí obsah. Je lepší, když je název dlouhý, ale je tu něco, co jasně porozumí tomu, o kterém prostoru mluví, co dělá, co popisuje, co to znamená nebo pro co je vytvořeno. Prostory mohou být infuzovány navzájem neurčitě, ale toto by nemělo být zneužíváno. Název musí být jasný, podklad je doložen a sekvence názvů prostorů by měla mít logiku. Inpoužití aplikací a jmenný prostor umožňuje PHP komplexní kódování, ale vždy, když je taková možnost, je lepší vyřešit jednoduchou možnost.
    Obecné pravidlo: jmenný prostor je popis a je to jeden soubor, je použití importu místa do skriptu pro použití a jeho přiřazení pseudonym (krátký odkaz).

    Jednoduchý příklad autoloaderových tříd (objektů)

    Úloha má objekt pro manipulaci s řetězci, styly stylů stránek (popisy CSS), datovými objekty, souborovými systémy a databázemi. Význam implementace - vytvořit v těchto pěti pozicích, jednoduché rozhraní používat potřebné schopnosti pouze metodami těchto objektů. Žádné přímé použití funkcí a struktur jazyka není povoleno. V tomto úkolu se PHP používá pro autoloading třídy. Namespace je považován za sbírku objektů umístěných na určitém místě souborového systému. Obvykle jsou všechny objekty umístěny v systému souborů v obsahu, složkách a souborech s určitým názvem.
    Kód vlevo označuje vytvoření požadovaných pěti objektů, ale kde přesně jsou, není zadáno. V kódu vpravo je text autoloader (hlavní skript), který při načítání tříd (objektů) automaty nahrazuje požadovanou cestu k umístění objektu a příponu souboru .php.

    Příklad souboru jmenných prostorů

    Knihovna PhpOffice /PhpWord je kvalitativní příklad použití složité hierarchie mnoha jmenných prostorů. Složka položek obsahuje prakticky celý rozsah dostupných prvků při vytváření dokumentu * .docx (MS Word), ostatní složky obsahujípotřebné nástroje pro práci s prvky, odstavci a tabulkami.
    Ve skutečnosti je knihovna přestěhována do složky projektu na základě toho, že prostor funkčnost PhpOffice /PhpWord potřebují konkrétní nástroje k doplnění a nakonec vytvořit vlastní verzi stejného produktu.

    Nahrávání mnoho různých tříd jmenné prostory

    Použití PHP namespace autoload, kdy je nutné stáhnout sadu tříd a objektů hierarchie rozvinutý systém je složitý a je obtížné představit, vede k potřebě pevných struktur. Orientace Developer (použitý produkt pro pokračování prací) je možné pouze v rámci sémantiky (porozumění projektu), zastoupená vhodnou kombinací slov, které odrážejí skutečný význam a vztah objektů.
    Nutnost pro knihovny v konkrétním projektu vede k problému, jak spojit vývojáře namespace a autora PhpOffice /PhpWord. Nejlepší je umístit tento produkt (jeho prostory a objekty) do jeho vlastního prostoru projektu. Je důležité si uvědomit, že bez aktualizace jmenných prostorů tohoto produktu na úrovni jeho abstraktních prvků a zatěžovacích tříd nebude úspěšné. To znamená, že v oboru názvů PHP nelze použití interních jmenných prostorů provádět abstraktně a univerzálně.

    Souborový systém a lokalizace prostorů

    Namespace je v podstatě "výkres" cest v souborovém systému k požadovanému objektu. Používejte názvy souborů v souborukvalita názvů objektů je přirozená a obvyklá. Použití názvových jmen jmenného prostoru je objektivní. "Dřevěná" organizace informací je obtížná při aplikaci a komplikuje vývoj, ale je to přirozená reprezentace pro objektové systémy. Problém je v tom, že fáze vývoje představovaly určitý kód editor, který kombinuje viditelné a prezentační složky a jednotlivé složky obsahu, ale žádný takový editor, který by zajistil průchozí pohyb objektů a složek.

    Problém abstrakce a univerzálnosti

    To je vědomí developerem a objektivní skutečnosti:
  • objektově orientovaného programování (OOP) poskytuje abstrakce a schopnost manipulovat informace v souladu s jeho skutečnými sémantiky;
  • ​​
  • namespace vyjadřovat postoj skriptů, objektů, a nějaký smysl projektu na souborovém systému
  • Ve skutečnosti, kombinovat jména abstrakce OOP objekty (soubory) a jeho uvedení do souborového systému (složky) z Správným pojmenováním názvů (cesty + názvy) můžete spravovat vytváření jmenných prostorů v průběhu spouštění skriptu. Programování získala silnou dynamiku vývoje, ale v případě, že přenos procesu a zátěžové fáze textovém editoru (který vytvořil skripty a umístěné ve stromu složek) k myšlence vytvoření takové kód, který sám umožňuje zlepšit a umístit v pravém systému místo souborů - programování se zvýší na novou výšku.

    Související publikace