Jmenné prostory v PHP, vysvětleno. Jmenné prostory v PHP, vysvětlení snadného použití jmenných prostorů

(PHP 5 >= 5.3.0, PHP 7)

Než budeme diskutovat o použití jmenných prostorů, je důležité porozumět tomu, jak PHP ví, který prvek jmenného prostoru požaduje váš kód. Mezi jmennými prostory PHP a souborovým systémem lze udělat jednoduchou analogii. Existují tři způsoby přístupu k souboru v souborovém systému:

  1. Relativní název souboru jako foo.txt. Toto řeší aktuální adresář/foo.txt kde currentdirectory je aktuálně obsazený adresář. Pokud je tedy aktuální adresář /home/foo, název řeší na /home/foo/foo.txt.
  2. Relativní název cesty jako podadresář/foo.txt. Toto řeší aktuální adresář/podadresář/foo.txt.
  3. Absolutní název cesty jako /main/foo.txt. Toto řeší /main/foo.txt.
Stejný princip lze aplikovat na elementy se jmenným prostorem v PHP. Například na název třídy lze odkazovat třemi způsoby:
  1. Nekvalifikovaný název nebo název třídy bez předpony $a = new foo(); nebo foo::staticmetoda(); aktuální jmenný prostor, to řeší aktuální jmenný prostor\foo foo. Jedno upozornění: nekvalifikované názvy funkcí a konstant se převedou na globální funkce a konstanty, pokud funkce nebo konstanta s prostorem názvů není definována. Podrobnosti viz Používání jmenných prostorů: přechod na globální funkci/konstantu.
  2. Kvalifikovaný název nebo název třídy s předponou $a = nový podjmenný prostor\foo(); nebo subnamespace\foo::staticmethod();. Pokud je aktuální jmenný prostor aktuální jmenný prostor, to řeší aktuální jmenný prostor\podnázvový prostor\foo. Pokud je kód globální, bez jmenného prostoru, vyřeší se to podjmenný prostor\foo.
  3. Plně kvalifikovaný název nebo název s předponou s operátorem globální předpony $a = nový \aktuální jmenný prostor\foo(); nebo \currentnamespace\foo::staticmethod();. To se vždy převede na doslovný název uvedený v kódu, aktuální jmenný prostor\foo.

Zde je příklad tří druhů syntaxe ve skutečném kódu:

jmenný prostor Foo\Bar\subnamespace;

const FOO = 1;
funkce foo()()
třída foo
{
}
?>

jmenný prostor Foo\Bar;
zahrnout "soubor1.php" ;

const FOO = 2;
funkce foo()()
třída foo
{
statická funkce staticmethod()()
}

/* Nekvalifikované jméno */
foo(); foo::staticmetoda(); echo FOO ;

/* Kvalifikovaný název */
podjmenný prostor\foo(); // převede na funkci Foo\Bar\subnamespace\foo
subnamespace\foo::staticmethod(); // převede na třídu Foo\Bar\subnamespace\foo,
// metoda statická metoda
echo podjmenný prostor\FOO; // převede na konstantní Foo\Bar\subnamespace\FOO

/* Plně kvalifikovaný název */
\foo\bar\foo(); // převede na funkci Foo\Bar\foo
\foo\Bar\foo::staticmetoda(); // převede na třídu Foo\Bar\foo, metoda staticmethod
echo\Foo\Bar\FOO; // převede na konstantní Foo\Bar\FOO
?>

Všimněte si, že pro přístup k jakékoli globální třídě, funkci nebo konstantě lze použít plně kvalifikovaný název, jako např \strlen() nebo \Výjimka nebo \INI_ALL. ?>

PHP, počínaje verzí 5.3, nám poskytlo jmenné prostory. Od té doby se vedly nějaké pomalé a vášnivé diskuse o tom, jak tento jmenný prostor používat?
Některé frameworky, jako Symphony, Laravel a samozřejmě Zend, tuto technologii přijaly.
To vše víceméně zapadá do schématu MVC. Zůstává jedna, pravděpodobně věčná, debata: jaký by měl být hlavní manželský pár aplikace - Model a Controller?
Někteří nám říkají, že Modelka by měla být statná a tlustá as ní štíhlá a hubená Kontrolorka. Jedním slovem - matriarchát.
Jiní se naopak domnívají, že Ovladač musí vše řídit a velet, takže se ukazuje jako solidní a dobře živený. A s ním je hubený, štíhlý Model, jehož úkolem je dávat a přinášet. Toto je patriarchát.
Co je tedy lepší ve schématu MVC? Patriarchát nebo matriarchát?
Podívejme se na to z pohledu budování rodinné jednotky založené na demokracii. A nechť nám s tím Namespace pomůže.

Nemáme rádi tlusté, neohrabané ovladače, které jako býk v porcelánu dokážou při neopatrnosti rozdrtit celou aplikaci.
Ani my nemáme rádi tlusté Modelky. No, kdo je má rád? Musí být hodni stupně vítězů!
Zkusme s pomocí Namespace, jako s dobrým dohazovačem, vytvořit harmonickou rodinu.

Nejprve si vytvoříme kostru aplikace. Ať je to jakkoli banální, ať je to blog.

Vytvořili jsme základní strukturu, kde:

  • Blog je úložiště naší aplikace;
  • Views and Templates - ukládání pohledů a šablon;
  • Utility - úložiště sdílených knihoven;
  • index.php - bootstrap skript;
  • Příspěvek - zde by se měla odehrát rodinná idylka Ovladače a Modelky.

S index.php je vše jednoduché:

běh(); /* * konec indexu.php */

Určíme potřebné cesty a vytvoříme autoloader.
Autoloader načte požadované třídy, které jsou umístěny v hierarchii složek podle jmenného prostoru třídy. Třída BlogPostServicesView by se například hledala v Blog/Post/Services.
A je tu první setkání s Namespace.
Když spustíme index.php, vytvoříme instanci aplikace Blog, jejíž třída se načte z Blog/Blog.php.
Podívejme se na něj.

příspěvek = nový příspěvek(); ) public function run() ( $this->post->view->all(); ) )//end class Blog

Při vytváření třídy Blog do ní vložíme třídu Post pomocí Namespace BlogPost a autoloader ji načte z Blog/Post/Post.php.
Pravděpodobně lze tuto třídu nazvat Controller,

view = new View(); ) )//ukončit třídu Post

Entita Post zahrnuje:
- struktura samotného datového záznamu - BlogPostEntitiesPostEntity.php

Služby obsluhující požadavky řadiče – BlogPostServicesView.php (například jedna ze služeb)

db = new DB(); )//end __construct public function all() ( $posts = $this->db->survey(); Contemplate::compose(array("header" => "header", "main" => "main", "footer" => "footer", array("posts" => $posts, "title" => "Viper site",)); ) )//end class PostView

Systém interakce s databází - BlogPostRepositoriesDB.php - tady to je, náš tenký, elegantní model,
Jen to dej, přines a nic víc!

dbh = new PDO("mysql:host=localhost;dbname=test", $user, $pass, array(PDO::ATTR_PERSISTENT => true)); ) catch (PDOException $e) ( echo "Chyba!: " . $e->getMessage() ."
"; die(); ) )//end __construct public function survey() ( $query_view = $this->dbh->prepare("SELECT * z příspěvků"); $query_view->execute(); return $query_view- >fetchAll(PDO::FETCH_CLASS, "BlogPostEntitiesPostEntity"); )//ukončit průzkum )//ukončit třídu Db

Díky tomu jsme byli schopni vytvořit aplikační strukturu, kde jsou všechny komponenty dobře propojeny, a zároveň jsme dosáhli jasného oddělení tříd, kde každá třída plní svůj vlastní úkol. Náš ovladač je tenký a zároveň výkonný. Model mu odpovídá. Perfektní rodinka!
A to vše díky Namespace.

Nehádám se, v mnoha případech je rámec pohodlný. Ale podívejte, Namespace vám nic nepřipomíná?
Jasné rozdělení do tříd, přísná a zároveň flexibilní hierarchie adresářů a tříd, zcela podřízená vývojáři.
Někdy chybí takový významný doplněk v podobě stovek souborů a tříd ve formě frameworku.
Absence Prokrustova lůžka pravidel pro interakci tříd a komponent.

Článek byl inspirován myšlenkami na toto téma Taylora Otwella, autora frameworku Laravel, za což mu patří velký dík.
Adresa ukázkového zdrojového kódu na GitHubu.

Nedávno jsem svůj projekt zapouzdřil do jmenného prostoru a narazil jsem na problém nedostatku správné dokumentace. Vše, co se nám podařilo najít, pochází přibližně z roku 2009, a to je téměř rok 2012... V nalezeném materiálu je spousta nefunkčních míst, která používají něco, co v aktuální verzi php není. V tomto ohledu bych rád tuto problematiku trochu osvětlil.
Co je tedy jmenný prostor nebo jmenný prostor? Velká wikipedie je definuje takto:

Namespace je množina, která znamená model, abstraktní úložiště nebo prostředí vytvořené pro logické seskupování jedinečných identifikátorů (tedy jmen). Identifikátor definovaný ve jmenném prostoru je přidružen k tomuto jmennému prostoru. Stejný identifikátor může být nezávisle definován ve více prostorech. Hodnota spojená s identifikátorem definovaným v jednom jmenném prostoru tedy může (nebo nemusí) mít stejný (nebo spíše odlišný) význam jako stejný identifikátor definovaný v jiném jmenném prostoru. Jazyky využívající jmenný prostor definují pravidla, která označují, do kterého jmenného prostoru identifikátor patří (tedy jeho definice).wiki

Vše jasné? Je to vlastně jednoduché. Před verzí 5.3 byly v php pouze dva prostory – globální (ve kterém byl spouštěn váš hlavní kód) a lokální (ve kterém byly definovány funkční proměnné).

Od verze 5.3 se vše změnilo. Nyní můžete definovat svůj jmenný prostor, ve kterém budou existovat vaše třídy, metody atd.


Doufám, že to bylo trochu jasnější.

Konkrétně jsem třídy pojmenoval stejně. Protože jsou definovány v různých prostorech, jedná se o dvě různé třídy, navzdory stejným jménům. Hlavní skript stále funguje v globálním prostoru, nic se zde nezměnilo a stále v něm lze definovat třídy a funkce. K čemu tedy jsou prostory? Za prvé, abyste se ujistili, že když zahrnete soubor s nějakým rámcem nebo knihovnou, vaše třídy nepřepíší třídy rámce nebo naopak.

Abyste mohli používat třídy definované ve vašem jmenném prostoru, musíte vámi definovaný prostor importovat do globálního na správném místě (obvykle to dělám na začátku souboru). K tomu použijte klíčové slovo use

Pozornost: z nějakého důvodu php neumožňuje použití klíčového slova použití ve stavových blocích a smyčkách

Vezměme příklad z obrázků a implementujeme jej do kódu:

Pozornost: klíčové slovo jmenného prostoru musí být umístěno na samém začátku souboru, hned za ním
soubor A.php
soubor B.php
Je možná alternativní syntaxe:
Doporučuje se deklarovat každý jmenný prostor v samostatném souboru. I když je to možné v jednom, přísně se to nedoporučuje!
Nyní se přesuneme ke třetímu souboru, ve kterém bude fungovat náš hlavní skript
index.php
Zdálo by se, že je to výhoda, jen se přidává další kód, ale není to tak úplně pravda, o kousek dále uvedu příklad autoload třídy, se kterou budou řádky spojující soubory s třídami zbytečné.
Nyní se podívejme na naše třídy.

Pozornost: pomocí operátoru rozlišení rozsahu (::) ve jmenných prostorech php nepovoleno! Jediné, k čemu se hodí, je přístup k metodám a konstantám statických tříd. Nejprve jej chtěli použít pro jmenný prostor, ale pak se rozhodli proti němu kvůli problémům, které nastaly. Proto konstrukce jako A::A::say(); je neplatný a bude mít za následek chybu.

Pro jmenné prostory musíte použít znak zpětného lomítka "\"
Pozornost: Aby nedocházelo k nedorozuměním, je nutné tento znak při použití v řetězcích zakódovat: "\\"

Jmenné prostory mohou být vnořeny do sebe, přidejte do našeho souboru A.php:
a do indexu zapíšeme následující:

Důležitým bodem je použití aliasů pro importované prostory. Můžete napsat A\subA::say(); Souhlasíte s tím, že je obtížné pokaždé psát úplné cesty k mezerám, aby se tomu zabránilo, byly zavedeny aliasy. Při kompilaci se stane následující: místo aliasu sub bude nahrazeno A\subA, takže dostaneme volání A\subA::say();

Co se pak stane při volání funkcí definovaných v globálním prostoru? PHP nejprve hledá funkci v prostoru, kde právě pracujete, a pokud ji nenajde, přejde do globálního rozsahu. Aby bylo možné okamžitě označit, že používáte globální funkci, musíte před ni uvést zpětné lomítko.

Aby se předešlo problémům s automatickým načítáním tříd z prostorů, musí být souborový systém organizován podobně jako organizace prostorů. Například máme kořenovou složku tříd, kde budou naše třídy uloženy, pak mohou být naše prostory organizovány následovně
třídy\A\A.php
class\A\sub\A.php (podprostor bude umístěn v samostatném souboru)
třídy\B\B.php

PHP má magickou konstantu __NAMESPACE__, která obsahuje název aktuálního prostoru.

A nyní o automatickém načítání.

Třída níže není moje, jen jsem ji zprovoznil a trochu vylepšil, převzato odtud.
Pozornost: Aby se vaše třídy načetly, musí se název třídy shodovat s názvem souboru!

".$file." v " .$filepath)); if (file_exists($filepath)) ( if(Autoloader::debug) Autoloader::StPutFile(("připojeno " .$filepath)); $flag = FALSE; required_once($filepath); break; ) Autoloader::recursive_autoload($file, $path2, &$flag); ) ) closedir($handle); ) ) soukromá statická funkce StPutFile($data) ( $dir = $_SERVER["DOCUMENT_ROOT"] ." /Log/Log.html"; $file = fopen($dir, "a"); flock($file, LOCK_EX); fwrite($file, ("║" .$data ."=>" .date(" d.m.Y H:i:s")."

" .PHP_EOL)); flock($soubor, LOCK_UN); fclose ($soubor); ) ) \spl_autoload_register("vaseNameSpace\Autoloader::autoload"); )
Pokud se podíváte na názvy tříd, které přicházejí k načtení, uvidíte, že každé třídě předchází předpona z jmenného prostoru, který je určen v použití. Proto doporučuji používat umístění souborů v adresářích podobných jmennému prostoru, urychlí to hledání na jednu až dvě iterace.

Nyní lze náš index zapsat takto:
Nyní se automaticky načtou všechny třídy a rozhraní, která budete používat.

Abychom demonstrovali některé dynamické schopnosti jazyka s mezerami, deklarujme další třídu:
test.php

Index.php
sayName("test"); //nebo můžete provést tento test\sayName("test2"); //nebo takto $obj::sayName("test"); //nebo můžete provést tento test::sayName("test2");

Doufám, že můj článek bude pro někoho užitečný.

Proměnná definuje hodnotu, ale může být odkazem na jinou proměnnou a mít svou hodnotu. Během provádění algoritmu nabývá proměnná obvykle mnoho různých hodnot. Konstanta ukládá pouze jednu hodnotu. Objekt je nepředvídatelný: mívá strukturu, obsah a mnoho funkcí.

Jmenný prostor je kolekce proměnných, konstant, objektů, funkcí a dalších konstrukcí vytvořených vývojářem, na které lze odkazovat prostřednictvím názvu tohoto jmenného prostoru.

Názvy: oblast popisu dat a algoritmů

Názvy prvků (proměnné, konstanty, objekty, funkce a další vývojářské konstrukce) se nikdy neprolínají. PHP interpretuje jakoukoli shodu názvů jako vážnou chybu a v případech, kdy nemůže jasně identifikovat problém, vývojář obdrží kód, který nefunguje tak, jak má, nebo bílé pole v prohlížeči.

Všechny názvy všech dat musí být jedinečné, protože prostor je globální. Názvy objektů a funkcí by se také neměly opakovat, ale rozsah globální viditelnosti je přerušen v tělech metod objektů a funkcí. Má svůj lokální jmenný prostor a nic vám nebrání pojmenovat něco interně stejným způsobem, jako je to určeno externě.

Výše uvedený příklad je klasický, pokud nevěnujete pozornost klíčovému slovu jmenného prostoru: vše je jako vždy. Druhá zahrnuje díla. Předpona NameSpaceTwo\ před názvy funkcí určuje, ze které vložky je kód převzat.

Pokud odstraníme globální klíčové slovo a operaci z první funkce $iExt = 1; přesunout na řádek výše, pak ani první ani druhá funkce nebude vědět o hodnotě proměnné 100.

Jmenné prostory: Více rozsahů popisu

Zobrazený příklad má sdílený soubor, který používá dvě vložky. Každá vložka má stejnou funkci scCheckName(). Který z nich si vybrat, rozhoduje programátor pomocí názvu prostoru, který je relevantní ve správný čas na správném místě v kódu.

Skutečnost, že ve společném kódu je přítomen stejný název (po sloučení vložek), nezpůsobí chybu 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 v něm bude popsáno, spojeno s názvem NameSpaceOne. V druhém souboru budou všechny popisy spojeny s názvem NameSpaceTwo.

Jakákoli duplikace jmen v obou souborech je povolena, ale v každém z nich musí být jakýkoli název prvku (proměnná, konstanta, objekt, funkce) jedinečný.

V tomto příkladu změna názvu jmenného prostoru ve volání funkce scCheckName() zabránila změně proměnné $iExt druhého jmenného prostoru. Proto je v příkladu slovo „změněno“ speciálně zvýrazněno – změna ve skutečnosti neproběhla. Hodnota proměnné zůstává stejná.

Testování a vícenásobný design

Tyto jednoduché příklady ukazují, že můžete snadno zjednodušit vývoj složitých projektů, zvýšit efektivitu, produktivitu a zrychlit práci. Rozhodně se okamžitě objevily první nápady na použití jmenných prostorů:

  • bezpečné testování skriptů - nahrazením „pracovních“ prostorů testovacími analogy;
  • bezpečný design od velkých týmů vývojářů – tím, že jim poskytneme „individuální“ prostory pro popis prvků.

Ve skutečnosti je jmenný prostor mnohem důležitější. Jazyk PHP, jmenný prostor a každý prvek popisu (proměnná, konstanta, objekt...) již dlouho poskytuje vývojářům možnost samostatně manipulovat se syntaxí a sémantikou.

Jazykové konstrukce a obecné pravidlo moderního programování: „pochopeno“ – provedeno – existuje rozpor – „bílá obrazovka“ nemá na profesionálního vývojáře žádný vliv.

Mnoho programátorů ani neví, kde hledat chybovou zprávu PHP, když v prohlížeči nic není (prázdné bílé pole). Programátor v určité fázi svého vývoje přemýšlí v syntaxi a sémantice PHP, „pracuje“ automaticky a výsledek: vlastní syntaxe a vlastní sémantika v mezích toho, co je povoleno.

Bílá obrazovka je okamžitou jednoznačnou reakcí profesionálního programátora a chyba je odstraněna. Proč ztrácet čas ladicím programem a prohlížením protokolu chyb?

Objekty, pole a jmenné prostory

Dalo by se říci, že proměnné, konstanty a funkce jsou minulostí, ale používají se v objektovém designu. Dobrý kód je, když je algoritmus reprezentován interagujícími objekty a ne sekvencí správných konstruktů.

Pokud použijete pole objektů, manipulujete s myšlenkou zásobníku a posledním (prvním) prvkem pole, můžete získat dynamiku: objekty samy „rozhodují“, jak má fungovat funkčnost webu v závislosti na aktuální situaci .

V PHP je jmenný prostor zvláštní druh proměnné, reprezentovaný svým vlastním jedinečným jménem, ​​často komplexním. V kódu je použit název jmenného prostoru. Pokud se jedná o řetězec, můžete během provádění skriptu nahradit jednu mezeru jinou.

Pokud PHP používá názvy jmenných prostorů jako hodnoty proměnných, pak je to ještě více sémanticky nabitá syntaxe, dokonce silnější než pole objektů.

Objekt je struktura a obsah, které se vyznačují jednotou. Jmenný prostor je soubor objektů, prvků a vztahů mezi nimi.

Není možné provádět experimenty na běžícím systému, ale díky jmennému prostoru poskytuje PHP možnost simulovat skutečný běžící systém v jiném prostoru pro účely:

  • další vývoj;
  • testování;
  • údržbu atd.

Pokud abstrahujeme od syntaxe navržené vývojáři PHP a představíme si jmenné prostory jako globální komplexní systémy objektů, pak se obzory možností mnohonásobně rozšíří.

Syntaxe a použití jmenného prostoru

PHP přijímá pouze slovní jmenný prostor na prvním řádku kódu v každém souboru. Všechny popisy musí pouze následovat. Syntaxe zahrnuje pouze jméno označené v obvyklém smyslu jména.

Je důležité používat správná slova, která vyjadřují význam. Je lepší, když je název dlouhý, ale obsahuje něco, co dává jasnou představu o tom, o jakém prostoru mluvíme, co dělá, co popisuje, co přijímá nebo k čemu byl vytvořen.

Prostory lze vnořovat do nekonečna, ale nemělo by se to přehánět. Název musí být jasný, vnoření musí být zarovnané a posloupnost názvů mezer musí mít logiku.

V aplikacích použití a jmenného prostoru umožňuje PHP složité kódování, ale kdykoli je to možné, je lepší jít s jednoduchou možností.

Obecné pravidlo zní: jmenný prostor je popis a toto je jeden soubor, použití je importování prostoru do skriptu use a přiřazení aliasu (krátkého odkazu).

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

Úloha obsahuje objekt pro manipulaci s řetězci, styly prvků stránky (popisy CSS), objekt data, objekt systému souborů a objekt databáze. Smyslem implementace je vytvořit jednoduchá rozhraní pro těchto pět pozic, aby bylo možné využívat potřebné schopnosti pouze prostřednictvím metod těchto objektů.

Není povoleno žádné přímé použití jazykových funkcí a konstrukcí. Tato úloha používá automatické načítání třídy PHP. Jmenný prostor je považován za kolekci objektů umístěných na určitém místě v systému souborů. Obvykle jsou všechny objekty umístěny v systému souborů podle jejich významu, ve složkách a v souborech s určitým názvem.

Kód vlevo označuje vytvoření požadovaných pěti objektů, ale není uvedeno, kde přesně se nacházejí. Kód vpravo zobrazuje text autoloaderu (hlavního skriptu), který při načítání tříd (objektů) automaticky dosadí požadovanou cestu k umístění objektu a příponu souboru .php.

Příklad více jmenných prostorů

Knihovna PhpOffice/PhpWord je dobrým příkladem použití složité hierarchie více jmenných prostorů. Složka prvky obsahuje téměř celou škálu prvků dostupných při vytváření dokumentu *.docx (MS Word), další složky obsahují potřebné nástroje pro práci s prvky, odstavci a tabulkami.

Ve skutečnosti byla knihovna umístěna do složky projektu z toho důvodu, že bylo potřeba doplnit prostor funkcí PhpOffice / PhpWord o specifické nástroje a nakonec vytvořit vlastní verzi podobného produktu.

Načítání mnoha tříd různých jmenných prostorů

Použití autoload jmenného prostoru PHP, kdy je potřeba načíst mnoho tříd a hierarchie vyvíjeného systému objektů je poměrně složitá a těžko představitelná, vede k nutnosti vytvářet rigidní struktury.

Orientace vývojáře (který produkt používá k pokračování v práci) je možná pouze v kontextu sémantiky (pochopení projektu), kterou představují vhodné kombinace slov, které odrážejí skutečný význam a vztahy objektů.

Nutnost použití knihovny v individuálním projektu vede k vyřešení problému, jak zkombinovat jmenné prostory vývojáře a PhpOffice / PhpWord autora. Nejlepším způsobem je umístit tento produkt (jeho prostory a objekty) do vlastního projektového prostoru.

Je důležité si uvědomit, že se neobejde bez úpravy jmenných prostorů tohoto produktu na úrovni jeho abstraktních prvků a načítání tříd. To naznačuje, že ve jmenném prostoru PHP nemusí být použití interních jmenných prostorů dostatečně abstraktní a univerzální.

Lokalizace souborového systému a prostoru

Jmenné prostory jsou v podstatě „nákresem“ cesty v systému souborů k požadovanému objektu. Použití názvů souborů jako názvů objektů je přirozené a běžné. Použití názvů složek jako pojmenování jmenného prostoru je objektivní.

„Dřevěná“ organizace informací je poměrně těžkopádná a komplikuje vývoj, ale je přirozenou reprezentací systémů objektů.

Problém je v tom, že vývojovou fázi zastupuje specifický editor kódu, který kombinuje jak viditelnou reprezentaci složek, tak obsah konkrétní složky, ale zatím neexistuje žádný editor, který by poskytoval end-to-end pohyb po objektech a přes složky.

Problém abstrakce a univerzality

Přijato vědomím a cílem vývojáře ve skutečnosti:

  • poskytuje abstrakci a schopnost manipulovat s informacemi podle jejich skutečné sémantiky;
  • jmenné prostory odrážejí pozici skriptů, objektů a částečně význam projektu v systému souborů

Ve skutečnosti připojením abstrakce OOP k názvům objektů (souborům) a jejím překrytím na souborovém systému (složkách) s adekvátním vytvořením jmenného prostoru (cesty + jména), můžete řídit vytváření jmenných prostorů během provádění skriptu.

Programování již získalo silnou dynamiku vývoje, ale pokud přeneseme proces a zatížení vývojové fáze z textového editoru (ve kterém se skripty vytvářejí a umisťují do stromů složek) na myšlenku generování kódu, který se nechá vylepšit a umístit na správné místo v souborovém systému – programování se povznese do nových výšin.