PHP: Как определить константу, доступную для нескольких файлов? - PullRequest
2 голосов
/ 13 января 2012

Основные вопросы разработки PHP: я хочу определить пару констант, которые будут доступны для всех файлов на моем сайте.Если я использую define (), я должен сделать это для каждого класса, что кажется глупым: если / когда я изменю эту константу для будущего выпуска, мне придется изменить ее в каждом файле.Один из вариантов - поместить его в файл, а затем требовать этот файл во всех моих исходных файлах, но это тоже кажется чрезмерным.Есть ли место, где я могу определить константу, чтобы она была глобальной для файлов?

Например:

define ('MAX_ELEMENTS', 5);

В какой-то моментв будущем я могу изменить это на 6. Я везде использую MAX_ELEMENTS в своей бизнес-логике.

Ответы [ 5 ]

1 голос
/ 13 января 2012

Способ сделать это на самом деле - require_once() файл, который определяет константу в каждом файле, который нуждается в этом, и на самом деле весьма обычно иметь набор включений в каждом или почти каждом файле в приложении PHP.

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

0 голосов
/ 13 января 2012

В дополнение к другим ответам, если ваше приложение становится достаточно сложным, рассмотрите возможность отказаться от использования констант для хранения конфигурации. Пока они могут подойти, но что произойдет, если вы захотите включить некоторый код из другой библиотеки, которая хочет определить константу с тем же именем, но для другой цели? Что-то вроде Zend_Config может быть излишним прямо сейчас, но имейте в виду, что константы - это очень тупые инструменты, поэтому стоит ограничить их использование действительно особыми случаями.

0 голосов
/ 13 января 2012

Очень часто на вашем сайте есть один, канонический включаемый файл, который используется всеми (или большинством) скриптами.PHP даже имеет auto_prepend_file для этого.

0 голосов
/ 13 января 2012

Точка константы должна быть определена только один раз.Таким образом, как вы говорите, вы не определяете его в каждом файле.Поэтому на самом деле ваш единственный выбор - определить его в одном файле и require_once этот файл везде, где это необходимо.Это не чрезмерно, это нормальный способ работы.

0 голосов
/ 13 января 2012

Константы автоматически доступны в каждой области, и кроме констант , определенных самим php , нет предопределенных констант.К счастью, интерпретаторы php имеют тенденцию быть очень маленькими, и нет абсолютно никаких причин не включать файл constants.php в ваш проект, который вы затем require_once, когда это необходимо.

...