Простори імен не тільки для класів автозавантаження. Вони також запобігають називанню конфліктів. Насправді, це їх основне призначення.
Скажімо, у вас є проект, який потребує імені класу 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.