Простори назв в php.

Простори назв в PHP.

Добрий день. У сьогоднішній статті ми розглянемо, що таке простору імен в PHP.

Якщо ви давно використовуєте ООП, то, напевно, зустрічали ситуацію, коли, підключаючи сторонню бібліотеку, у вас траплявся збій через те, що ви вже використовуєте в своєму коді такі ж імена класів, як і в бібліотеці. Особливо це може статися, якщо ви використовуєте такі распрастранённие імена, як `Model`, `Db` і т.п. Про те, як це виправити, я зараз і розповім.

Простір імен (namespace) - це деяке сховище, створене для абстрактної угруповання унікальних ідентифікаторів (імен).

Тобто якщо ви будете використовувати простору імен, то зможете сміливо підключати сторонні бібліотеки і не боятися, що там будуть такі ж імена, як і в вашому коді. Покінчимо з теорією і давайте перейдемо до практики.

створимо файл myclass.php з таким вмістом

lt ;?php
namespacemyoneProject-
classMyClass{}
?gt;



Тут ми створили клас в просторі імен my oneProject. До речі, потрібно писати саме зворотний слеш. Не переплутайте!

Тепер у файлі index.php напишемо наступне

lt ;?php
require_once
("Myclass.php") -
$ mc
=newMyClass() -// Помилка: клас не найден
$ mc
=newmyoneProjectMyClass() -// все працює
?gt;

Як бачите, тепер створити клас просто так не вийде, потрібно обов`язково вказувати, в якому просторі назв він лежить.

Відео: Урок 08. PHP - ООП. Простір імен (namespace)




Ми можемо вказувати відразу кілька просторів імен в одному файлі

lt ;?php
namespaceProject-

const CONNECT_OK =1-
classConnection{}
function connect(){}

namespaceAnotherProject-

const CONNECT_OK =1-
classConnection{}
function connect(){}
?gt;

Не дивлячись на те, що у нас абсолютно ідентичні назви класів, функцій і констант, у нас не буде конфлікту імен, тому що вони лежать в різних просторах.

Ми можемо також застосовувати синтаксис з дужками.

lt ;?php
namespaceProject{

const CONNECT_OK =1-
classConnection{}
function connect(){}
}

namespaceAnotherProject{

const CONNECT_OK =1-
classConnection{}
function connect(){}
}
?gt;

Якщо ви поєднуєте код в глобальному просторі імен з кодом в інших просторах, то використовується тільки синтаксис з дужками.

lt ;?php
namespaceProject{

const CONNECT_OK =1-
classConnection{}
function connect(){}
}

namespace{// глобальний код
session_start
() -
$ a
=Projectconnect() -
echo
ProjectConnection::start() -
}
?gt;

Також, не забувайте, що визначення простору імен завжди має йти першим рядком коду. Якщо ви напишіть так, то буде помилка

Відео: Простори назв в PHP

lt ;?php namespaceMySpace-...

Щоб дізнатися, в якому просторі імен ви зараз перебуваєте, можна скористатися константою __NAMESPACE__

lt ;?php
namespaceProject-
echo
` "`, __NAMESPACE__,` "`-// виведе "Project"
?gt;

За допомогою даної константи можна, наприклад, динамічно конструювати імена

Відео: PHP ООП Простору імен

lt ;?php
namespaceProject-

function incl($ classname){
$ a
= __NAMESPACE__ .``. $ classname-
returnnew $ a-
}
?gt;

Отже, на цьому сьогодні все. Більше інформації та практичні знання ви можете отримати, пройшовши курс Створення інтернет магазину на PHP і MySql

Поділися в соціальних мережах:

Схожі
Як працювати з сховищами з використанням basil.js.Як працювати з сховищами з використанням basil.js.
Соціальна мережа на php: підготовка проекту.Соціальна мережа на php: підготовка проекту.
Команда nbtstat - відображення статистики та поточних підключень nbt (netbios через tcp / ip)Команда nbtstat - відображення статистики та поточних підключень nbt (netbios через tcp / ip)
Створення форм в htmlСтворення форм в html
Як очистити кеш dns?Як очистити кеш dns?
Трохи про те, що таке слеш?Трохи про те, що таке слеш?
Reflection api. Reflectionclass.Reflection api. Reflectionclass.
Синій екран смерті 0x000000f9Синій екран смерті 0x000000f9
Команда tree - графічне представлення структури папок або шляху.Команда tree - графічне представлення структури папок або шляху.
Інтернет може закінчитися 5-го травняІнтернет може закінчитися 5-го травня
» » Простори назв в php.