Пространствата от имена в PHP

Концепцията на пространства от имена

За да започнете, имайте предвид следните два файла. file1.php файл

Пространствата от имена в PHP

Рамковата YII2. Бързото развитие на съвременни PHP рамки

Изследване на съвременните рамкови уеб програмиране тънкостите използващи YII2

В този случай, имайте предвид, че на Mt. на функцията () е обявен във всяка от тях. Някога исках да подчертая, че днес ние не говорим за мястото на имената, и по никакъв начин те не се декларират. Това означава, че глобалното пространство се използва по подразбиране. Сега погледнете друг файл, в който ще свързва двете предишния файл и призивите на на Mt. на функцията (). index.php файл

Чрез провеждане на файла в браузъра, ние, разбира се, ще се покаже грешка, тъй като в момента са заявили две функции с едно и също име:

Просто исках да отбележа, че се позовава на на Mt. на функцията (), в този случай, ние използваме неквалифициран името - това е, това е просто една специфична функция идентификатор (името на функцията, без оглед на пространство от имена). Какво щеше да се предотврати появата на грешки - използвайте пространство от имена. За тази цел, всяка от включените файлове Посочете собствен пространство от имена, като се използва именно пространство ключова дума. file1.php файл

Моля, имайте предвид, че до обявяване на пространство от имена, вие трябва да бъдете сигурни, да се регистрират на пространство от имена, ключова дума, преди който и да е PHP код или данни се показва на екрана, в противен случай тя ще бъде грешка. Сега, ако ние се актуализира данните в браузъра - ще получите съобщение за грешка по този начин:

Най-вероятно се досещате, грешката означава, че не може да се намери функция на Mt. (). Тази функция е определена, но и в други пространства от имена. index.php файл използва глобално пространство от имена, така че се позовава на Mt. на функцията (), с помощта на които не са квалифицирани и името, което направихме, тъй като ние не може да влезе на Mt. функции (), обявен в други пространства от имена. За да получите достъп до на Mt. на функцията (), file1.php файл, трябва в началото на името на функцията, за да определите пространство от имена:

В този случай, ще видим в тестването на браузъра на викащата функция:

По този начин, ние посочихме, PHP интерпретатор език къде да намеря функцията на интерес за нас (в която и пространство от имена, търсене). И в този случай е изпълнил функцията на Mt. () от file1.php файл. Но всеки път, когато ти се обадя функции или променливи, обърнете се към пространството от имена не е много удобно, така че във файла index.php, ние може да обяви пространство от имена, които се интересуват и по този начин се обадите на функция на Mt. (), като се използват неквалифициран име:

В същото време, ако се движим на браузъра, можем да видим, че функцията изпълнява нормално. Сега нека да видим какво ще стане, ако аз съм в текущото пространство от имена, ще се върне в на Mt. на функцията (), както следва:

В този случай, ние ще се покаже грешка, подобно на следното:

Пространствата от имена в PHP

Рамковата YII2. Бързото развитие на съвременни PHP рамки

Изследване на съвременните рамкови уеб програмиране тънкостите използващи YII2

Грешката се случва, защото ти и аз призовавам функцията, като се използва името и пространство от имена - ФАЙЛ_1 \ Foo (), така че ние използваме квалифицирано име. Квалификация елемент се състои от имена име пространство, и идентификационен номер на елемента (име). В този случай, както и в случай на неквалифицирани имена, PHP интерпретатор винаги ще добавим декларации именно пространство в името на нарича елемент. По този начин, ако ние сме в началото на пространството на файла ФАЙЛ_1 съобщи имена, и се обадете на изпълнението на функция ФАЙЛ_1 \ на Mt. () - низ ще бъде интерпретирано като ФАЙЛ_1 \ ФАЙЛ_1 \ Foo (). А сега нека да видим какво ще стане, ако се обърнат към на Mt. на функцията (), както следва:

В този случай, ние виждаме, че функцията перфектно изпълнява.

Тук бих искал да отбележа, че \ ФАЙЛ_1 \ Foo () - това е напълно уточнения името на Mt. на функцията (). Пълен квалифицирано име винаги започва с наклонена черта и съдържа цялата идентификатор на пространство от имена и елементът на интереси (име на функция, промяна и т.н.). Ако се обърнем към пълното име на квалификация, преводачът няма да се вземат предвид пространството предварително обявените имена в тълкуването.

Обявяването на пространство от имена, ние можем да се създаде някаква йерархия на пространства от имена, например. file1.php файл

В index.php файла, можем да наречем Foo () функция, както следва:

Внос от имена и псевдоними

Ако нашият проект предвижда йерархия на пространства от имена, можем да внасяме ние се интересуваме от пространството от имена в даден файл, например, в пространството от имена внос на index.php файл, с помощта на използването на ключова дума:

В същото време ние не обяви пространство от имена, а само да го импортирате и да извикате функция или променлива, трябва да се прилагат за своите именни пространства. Но стига вече да се прилагат само за едно дете на пространство от имена и PHP търсения преводачи за елемента на интереси във внасяните Пространствата от имена.

Внос пространството от имена, можете да зададете псевдоним, с помощта на които можете да се обърнете към пространството от имена, като например:

В този случай, ние можем да се отнасят до елементите на интерес, като се използва псевдоним. Ако това тълкуване може да псевдоним ще бъдат заменени от внесени пространство от имена, това е, което води до името \ на Mt. (), което наричаме MyProject \ ФАЙЛ_1 \ Foo (). Много удобно да се използва за внос на пространството от имена във връзка с псевдоними, работа с класове, например, трябва да прочете файла:

Забележете внеса пространството от имена псевдоним и възлага директно към класа, описан в посочения пространство от имена, така че когато се създаде обект от този клас, мога да използвам псевдоним: нови MyClass (). Какво точно виждаме при обновяване страницата на браузъра:

И все пак бих искал да привлека вниманието ви към следващия пример на index.php файл:

В този пример, ние сме с вас, помислете за създаване на механизъм за автоматично изтегляне класове, използвайки именни пространства. Имайте предвид, първо ние внасяме пространството от имена и възлага псевдоним на името на класа. Следва описание на функцията __autoload ($ клас), функцията за автоматично товарене на класовете, които ще работят при създаване на предварително дефинирано обект клас. Тази функция може да отнеме параметър променлива клас $, което получава името на класа, чийто предмет на дейност, което се опитваме да създадем. В този случай, използвайте псевдоним MyClass, че при тълкуването ще бъде заменен от MyProject \ File3 \ Му2, и то напълно съответства на структурата на файловете от един пример, ние само може да замени такива знака на правия добавите разширение на файла.

Когато надстроите вашия браузър, ще видим в следващия екран:

Както можете да видите цялата работа успешно.

Как виждате мястото на имената могат да бъдат много полезни, особено за големи и сложни проекти, които са разработени от екипа за развитие. Използване на пространството от имена, можете да предотвратите грешки, свързани с дублиращи се имена на различните елементи на развита сценария, като всеки елемент е разработен, която се разработва индивидуална, тя ще бъде определена в собствената си пространство от имена.

В този урок е завършен. Всичко най-хубаво и успешно кодиране.

Пространствата от имена в PHP

Рамковата YII2. Бързото развитие на съвременни PHP рамки

Изследване на съвременните рамкови уеб програмиране тънкостите използващи YII2

Най-IT новини и уеб разработки на нашия канал Телеграма