Простори назв в 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
- Синій екран смерті 0x000000f9
- Як обернути елемент в макет браузера або пристрою.
- Як очистити кеш dns?
- Що таке dom?
- Чим відрізняється mbr від gpt
- Як працювати з сховищами з використанням basil.js.
- Трохи про те, що таке слеш?
- Команда dir
- Команда tree - графічне представлення структури папок або шляху.
- Інтернет може закінчитися 5-го травня
- Команда copy
- Pushd - запам`ятати поточний каталог і перейти в зазначений.
- Команда nbtstat - відображення статистики та поточних підключень nbt (netbios через tcp / ip)
- Команди cd і chdir
- Функції для роботи з dns
- Reflection api. Reflectionclass.
- Створення класу в php
- Reflection api. Reflectionobject.
- Схиляння імен на php
- Соціальна мережа на php: підготовка проекту.
- Готові таблиці excel.