Журнал Системный Администратор, Декабрь 2007

Журнал Системный Администратор

Декабрь 2007

Цена: $4.5 US

  Подписаться

Зарегистриванные пользователи, пожалуйста следуйте этой ссылке


Пространства имен в PHP

Александр Майоров

Пространства имен, появившиеся в PHP относительно недавно, предназначены для локализации имен идентификаторов и предотвращения их конфликтов. Сегодня подробно рассмотрим способы применения пространств имен и их особенности в языке PHP.

Что такое namespace?

Пространство имён (namespace) – это область определения переменных, констант и т. п., ограничивающая их область видимости. Оно предназначено для локализации имен идентификаторов и предотвращения конфликтов между ними. Элементы, объявленные в одном пространстве, отделены от элементов, принадлежащих другому пространству.

Немного уйдем от PHP к С++ и посмотрим на примерах, что из себя представляют пространства имен, так как в этом языке они появились относительно давно.

Среда программирования С++ наполнена большим количеством переменных, функций и классов. Раньше все их имена пребывали в одном глобальном пространстве и нередко конфликтовали между собой.

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

Чаще всего конфликты имен возникали, когда в одной программе использовались несколько сторонних библиотек одновременно, написанных разными программистами. Особенно это касается имен классов. Например, если в программе определен класс MergeInstance, а в библиотеке, которую использует эта программа, имя уже было задействовано, возникал конфликт.

Было решено разделять идентификаторы по пространству имен, и ввели ключевое слово namespace. Введение namespace позволило решать эти проблемы. Поскольку пространство имен позволяет локализовать область видимости объектов, объявленных внутри него, одно и то же имя, упомянутое в разных контекстах, больше не вызывало конфликтов. Теперь стандартная библиотека определена внутри своего собственного пространства имен std, что намного уменьшает вероятность конфликтов. Программист может самостоятельно создавать свои собственные пространства имен и локализовать имена, которые могут вызывать конфликты. Это особенно важно при разработке классов и библиотек функций.

Оставшая часть статьи доступна только подписчикам. Если вы желаете продолжить чтение этой статьи, то вам необходимо подписаться на эту статью или весь номер.

Подписаться на весь номер

Зарегистриванные пользователи, пожалуйста следуйте по этой ссылке