Простори імен не тільки для класів автозавантаження. Вони також запобігають називанню конфліктів. Насправді, це їх основне призначення.
Скажімо, у вас є проект, який потребує імені класу User
, щоб зберігати інформацію про користувачів вашої програми, але плагін також використовує (інший) клас, названий User
для зберігання інформації. Простори імен дозволяють вам створити свій клас в одному просторі імен (скажімо, MyApp
) і дозволити плагіну використовувати інший простір імен (скажімо, CoolPlugin
). Код у MyApp
просторі може просто посилатися на User
(наприклад, new User();
), і так може кодувати у CoolPlugin
просторі; кожен отримає очікуваний результат. Коли вам потрібно використовувати код з іншого простору імен, ви просто приставте його. Наприклад, код у CoolPlugin
просторі може отримати доступ до User
класу в MyApp
черезnew \MyApp\User();
Альтернативою є те, що кожному класі потрібна складна назва скрізь , наприклад, class MyApp_User
та class CoolPlugin_User
. Простори імен дозволяють вам спрощувати речі більшу частину часу і уникати конфліктів іменувати весь час.
Редагувати: Щоб відповісти на запитання: "Чи є різниця між продуктивністю між ними?"
Не значущий, ні. Я цього не орієнтував, але, мабуть, є різниця на рівні наносекунди. Однак, жертвуючи якістю коду для надзвичайно малих налаштувань продуктивності, це не є хорошою стратегією, тому вам слід використовувати простори імен незалежно. Для порівняльних показників подібних проблем див. PHPbench.com та відповідь StackOverflow .
Ваш код повинен бути неймовірно чітким і неймовірно чутливим до часу (подумайте, як частотна торгівля або управління ядерними реакціями), перш ніж вам потрібно буде турбуватися про мікрооптимізацію її в такому контексті. Якщо це дійсно так, що ви залежать від часу, ви, ймовірно, повинні кодувати в c або навіть збірці , а не інтерпретувати мови, як PHP.