Что такое пространство имен

Тема в разделе "PHP", создана пользователем vipTelnet, 13 дек 2013.

Статус темы:
Закрыта.
Модераторы: latteo
  1. vipTelnet

    vipTelnet Постоялец

    Регистр.:
    14 янв 2013
    Сообщения:
    135
    Симпатии:
    11
    День добрый
    Объясните мне пожалуйста что такое пространство имен, когда и где его можно использовать, а так же про слово use которое тоже с этим всем связано, сколько об этом читал, все равно четкого представления об это не сложилось.
    Я так понял что для крупных проектов где используется много всяких компонентов модулей, оно используется для того что б имена переменных и классов из этих компонентов не перекрывали один другое,так?
     
  2. Wounderer

    Wounderer Создатель

    Регистр.:
    11 янв 2007
    Сообщения:
    21
    Симпатии:
    6
    Пространство имен, в теории можно сравнить с папками в файловой стстеме. Вы можете хранить несколько похожих классов с одинаковым названием но немного отличающимся функционалом в разных пространствах имен.
    Более подробно тут Перейти по ссылке

    Use это вызов trait доступного начиная с PHP 5.4.
    Трэйты, по сути, те же классы, только их можно использовать многократно - один трейт использовать во многих классах, например.
    Более подробно тут Перейти по ссылке
     
    Шумадан и vipTelnet нравится это.
  3. vipTelnet

    vipTelnet Постоялец

    Регистр.:
    14 янв 2013
    Сообщения:
    135
    Симпатии:
    11
    use как я почитал используются и для импортирования пространства имен тоже
    Спасибо за ссылку по trait вообще было очень интересно почитать
    Так это получается что добрую половину шаблонов проектирование вообще можно переписать с их использованием, если только в них досконально разобраться.
     
  4. Devit86

    Devit86 Писатель

    Регистр.:
    18 янв 2013
    Сообщения:
    4
    Симпатии:
    0
    Если рассматривать php, то это просто класс со статическими переменными и функциями, к которым ты обращаешься используя имя класса и :: .

    К примеру:
    Код:
    class namespace
    {
        public static $var1 = 'Значение 1';
        public static $var2 = 'Значение 2';
       
        public static function getVars()
        {
            return self::$var1;
        }
    }
    
    echo namespace::$var2;
    echo namespace::getVars();
     
  5. casinolot

    casinolot

    Регистр.:
    22 окт 2010
    Сообщения:
    547
    Симпатии:
    84
    Можешь писать разные методы в классах с одинаковым названием ,а потом можешь их обьеденить в один большой класс, и чтобы не было путаницы в этих классах вводят пространство имён. Но если начнёшь использовать пространство имён, то тогда и многие старые функции придётся переписывать.
     
  6. fdgfdgfh

    fdgfdgfh Создатель

    Регистр.:
    30 май 2014
    Сообщения:
    27
    Симпатии:
    5
    Простарнство имен удобно использовать, если разработка приложения ведется несколькими командами, чтобы исключить коллизии имен и применяют пространство. Так же ео применяют при разработке библиотек.
     
  7. enotanet

    enotanet Писатель

    Регистр.:
    3 июн 2014
    Сообщения:
    5
    Симпатии:
    1
    Удобный механизм разруливания коллизий при подключении разных библиотек с потенциально одинаковыми функциями. Старое название "область видимости переменной"
     
    Горбушка нравится это.
  8. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.517
    Симпатии:
    1.368
Статус темы:
Закрыта.