Sdscompany.ru

Компьютерный журнал
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Php объявление констант

Константы

Содержание

Константа — это идентификатор (имя) для простого значения. Как следует из названия, их значение не может изменится в ходе выполнения скрипта (кроме магических констант, которые на самом деле не являются константами). Имена констант по умолчанию чувствительны к регистру. По принятому соглашению, имена констант всегда пишутся в верхнем регистре.

Имя константы должно соответствовать тем же правилам именования, что и другие имена в PHP. Правильное имя начинается с буквы или символа подчеркивания, за которым следует любое количество букв, цифр и символов подчеркивания. Регулярное выражение для проверки правильности имени константы выглядит так: ^[a-zA-Z_x80-xff][a-zA-Z0-9_x80-xff]*$

Возможно определить константы с помощью функции define() зарезервированными или даже некорректными именами, значения которых могут быть (только) получены через функцию constant() . Однако, делать это не рекомендуется.

Пример #1 Правильные и неправильные имена констант

Замечание: Понятие «буквы» здесь — это символы a-z, A-Z, и другие символы с ASCII-кодами от 128 до 255 (0x80-0xff).

Как и superglobals, константы доступны из любой области видимости. Вы можете использовать константы в любом месте вашего скрипта, не обращая внимания на текущую область видимости. Подробную информацию об областях видимости можно найти здесь.

User Contributed Notes 12 notes

11/14/2016 — note updated by sobak
——

CONSTANTS and PHP Class Definitions

Using «define(‘MY_VAR’, ‘default value’)» INSIDE a class definition does not work as expected. You have to use the PHP keyword ‘const’ and initialize it with a scalar value — boolean, int, float, string (or array in PHP 5.6+) — right away.

#Example 1:
You can access these constants DIRECTLY like so:
* type the class name exactly.
* type two (2) colons.
* type the const name exactly.

#Example 2:
Because our class definition provides two (2) static functions, you can also access them like so:
* type the class name exactly.
* type two (2) colons.
* type the function name exactly (with the parentheses).

Once class constants are declared AND initialized, they cannot be set to different values — that is why there are no setMinValue() and setMaxValue() functions in the class definition — which means they are READ-ONLY and STATIC (shared by all instances of the class).

class constant are by default public in nature but they cannot be assigned visibility factor and in turn gives syntax error

Lets expand comment of ‘storm’ about usage of undefined constants. His claim that ‘An undefined constant evaluates as true. ‘ is wrong and right at same time. As said further in documentation ‘ If you use an undefined constant, PHP assumes that you mean the name of the constant itself, just as if you called it as a string. ‘. So yeah, undefined global constant when accessed directly will be resolved as string equal to name of sought constant (as thought PHP supposes that programmer had forgot apostrophes and autofixes it) and non-zero non-empty string converts to True.

There are two ways to prevent this:
1. always use function constant(‘CONST_NAME’) to get constant value (BTW it also works for class constants — constant(‘CLASS_NAME::CONST_NAME’) );
2. use only class constants (that are defined inside of class using keyword const) because they are not converted to string when not found but throw exception instead (Fatal error: Undefined class constant).

I find using the concatenation operator helps disambiguate value assignments with constants. For example, setting constants in a global configuration file:

Later, I can use the same convention when invoking a constant’s value for static constructs such as require() calls:

as well as dynamic constructs, typical of value assignment to variables:

The above convention works for me, and helps produce self-documenting code.

Константы в PHP

Константа в php, как и переменная, является ячейкой для хранения памяти. Константа — величина имеющая собственное имя, и не меняющаяся в процессе исполнения скрипта.

Применяются они, когда в программу нужно ввести пароль, путь к файлу, дату, и им подобные постоянные данные.

Определяется константа функцией define ()

Эта программа выведет на экран число 6548962

«PAROL» — имя константы. Предпочтительно — заглавными буквами. Нельзя начинать цифрой.
6548962 — постоянное значение константы

Если при работе с константой необходимо будет учитывать регистр букв, то в скобки вводится значение параметра $case_sen — true

Пример использования констант на сайте: изображение шапки имеется на всех страницах сайта, и чтобы каждый раз не прописывать путь к файлу изображения, можно определить константу, присвоив ей это путь в значении, и затем использовать в нужной части скрипта

Кроме констант определяемых разработчиком, существуют константы, выставляемые интерпретатором. Это, например, сообщения об ошибках, указатели путей к файлам, а так же огромное количество констант объявленных в различных расширениях.

Список всегда доступных предопределённых констант

__LINE__ — текущая строка в файле
__FILE__ — полный путь и имя текущего файла
__FUNCTION__ — имя функции
__CLASS__ — имя класса
__METHOD__ — имя метода класса

Читать еще:  Конструкция if php

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

Браузер выведет такое сообщение.

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

Для проверки существования константы, применяется функция dtfined () . Аргументом для неё всегда является имя константы. Если константа объявлена, то результатом проверки будет true (истина), если нет — false (ложь).

На экран выведется одно из значений в зависимости от того, будет обнаружена константа, или нет.

В этом скрипте применён условный оператор выбора — If . Подробнее о нём поговорим в статье «Операторы php».

Помимо пользовательских и предопределённых констант, php поддерживает ещё один, очень редко применяемый и малоизвестный вид констант — динамические константы.

Как видно из прилагательного (динамические), и вопреки своему названию, константы всё таки могут меняться, и это ещё раз указывает на гибкость языка php.

Делается это при помощи функции rand () , которая генерирует случайное число от 1 до 10, в дальнейшем применяющееся для формирования константы.

Определяется значение такой константы только при помощи функции constant () . Эта же функция определяет и существование динамической константы, и если последняя не существует, то constant () выводит на экран предупреждение Warning .

Эта программа выведет на экран значение — единицу. Интересная штука в плане безопасности программы. В дальнейшем разберёмся с ней подробнее.


Перемена

— У тебя есть мечта?
— Есть.
— Какая?
— Хочу бросить пить.
— Так брось.
— Да? А как потом жить без мечты?

Константы в PHP

Константы — это значения, которые не изменяются со временем. Ещё из школы Вы, наверняка, знаете многие константы, например, число п, число e, ускорение свободного падения и другие. И, разумеется, при программировании тоже очень часто возникает необходимость ввода констант. И о том, как создавать и использовать константы в PHP, мы и поговорим в этой статье.

Давайте с Вами создадим константу числа п:

Оператор define создаёт константу PI и присваивает ей значение 3.1415926. Дальше мы выводим эту константу через оператор echo. Всё очень просто, однако, есть одна рекомендация, которую я советую Вам всегда соблюдать. Обязательно пишите константы заглавными буквами. Не то, чтобы это было обязательно, но крайне желательно. И так принято не только в PHP, но и в других языках тоже.

Разумеется, впоследствии изменить константу PI будет нельзя (на то она и константа).

Теперь разберём одну функцию, которая проверяет: «Определена ли заданная константа«. Давайте напишем такой скрипт:

Здесь проверяется существование константы PI. И если она не существует (то есть функция define() вернула false), то тогда инициализируем эту константу. Затем просто выводим её.

Как видите, создавать и использовать свои константы в PHP — это очень просто.

И, напоследок, хочется рассказать об уже встроенных константах PHP. Давайте с Вами напишем простой скрипт:

Ближе к концу есть раздел «PHP Variable«. Собственно, это не совсем константы, однако, они являются константами при выполнении данного скрипта. Разумеется, при выполнении другого скрипта они уже будут иметь другие значения (не все, разумеется). Давайте с Вами выведем пару констант, чтобы Вы поняли, как с ними работать, ведь они используются безумно часто:

В данном скрипте мы выводим IP-адрес пользователя, запустившего скрипт, а на следующей строке выводим строку запроса (например, «index.php?id=7«). Забегая немного вперёд, говорю, что здесь мы работаем с глобальным массивом $_SERVER. С массивами мы ещё познакомимся, но, думаю, что те, кто работал с массивами в других языках программирования, без проблем узнают синтаксис. Что же касается других констант, то с ними работа происходит аналогично.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 10 ):

    Пипец! Не выходит вывести IP. В Denwer-е выводит вот этот ип:127.0.0.1, а когда закачиваю свою страницу с этим Вашим php-кодом на хостинг (cishost.ru-микро), то не выводит! Этот код нужно ведь вставлять между тегами body? В чём может быть причина?

    Читать еще:  Learning all ru instrukcia index html

    Подозрительно дешёвый хостинг. Но речь не об этом. Всё должно работать и должен появиться Ваш IP-адрес, если Вы не совершаете мелких ошибок, конечно, которых могут быть тысячи. Например, загрузили файл в одну папку, а обращаетесь к такому же файлу, но в другой папке. Возможно, файл загрузился лишь частично, как следствие, он нерабочий. И так далее, тут можно ещё долго гадать. Можете попробовать ещё вызвать функцию phpinfo().

    Не понимаю.. Почему у меня выполняется условоие if (!defined(PI)) если перед этим я вводил define (PI) ?

    Создание констант в PHP — const и define()

    В этой заметке разберемся, в чем разница в объявлении PHP констант с помощью ключевого слова const и функции define() .

    Константы в PHP — это «постоянные», значения которых указывается всего один раз и затем не может быть изменено. При попытке изменить значение, оно не изменится и появится PHP заметка: «Constant already defined» (константа уже определена):

    Объявлять константы в PHP можно двумя способами:

    У каждого способа есть свои особенности, чтобы их понять, давайте рассмотрим все поэтапно, как и что менялось с каждой версией PHP.

    Как создавать константы

    PHP меньше 5.3

    До 5.3 в PHP, константы можно было определять только через define() . Ключевое слово const появилось с версии 5.3.

    Константы могут хранить только скаляры. Скалярные переменные — это переменные с типами integer , float , string и boolean . Типы array , object и resource не являются скалярными.

    С версии PHP 5.3

    Появилось ключевое слово const и теперь константу можно определять еще и с помощью него.

    Однако, в const нельзя указать переменную, функцию или какое то выражение, а нужно передавать скаляр «напрямую»:

    Тогда как для define() таких ограничений нет.

    PHP 5.6

    Стало возможным указывать в значения const примитивные PHP выражения (выражения из скаляров):

    Стало возможным хранить массивы в константах:

    Разница между define() и const

    #1 const должны быть объявлены в верхней области

    В отличие define() , const должны быть объявлены в самой верхней области видимости, потому что они определяются при компилировании скрипта. Это значит, что их нельзя объявлять внутри функций/циклов/выражений if или try/catch блоков.

    #2 const всегда регистрозависима

    const всегда регистро-зависима, в то время как define() позволяет сделать регистро-независимые константы:

    #3 const понимает только скаляры

    Это справедливо только для версий PHP 5.6 и ниже.

    const нельзя передать переменные, функции, выражения, а define() можно:

    #4 const может хранить массивы с версии PHP 5.6 а define с PHP 7.0

    Итоги сравнения

    Определять константу почти всегда лучше с помощью define() , потому что тут больше возможностей и меньше вариантов «поймать» ошибку. Исключение — это когда у вас версия PHP 5.6 и вам нужно сохранить массив в константу, тут поможет const .

    Константы PHP класса

    Объявляются только с помощью const . Правила для них такие как описано выше: принимают только скаляры, не понимают PHP переменные, функции, выражения.

    Объявленная константа принадлежит именно классу, она не принадлежит ни одному объекту и является общей на все объекты (экземпляры) класса.

    Постоянные класса всегда общедоступны — нет статуса private или protected . Однако с версии PHP 7.1 константам класса можно указать модификатор:

    Константы для классов чем-то похожи на статические (static) свойства класса. Не углубляясь в подробности, разница в том, что константу нельзя изменить.

    И в заключении вспомним про особые константы PHP.

    В PHP есть девять волшебных констант, которые меняют свое значение в зависимости от контекста, в котором они используются. Например, значение __LINE__ зависит от строки в скрипте, на которой эта константа указана. Все «волшебные» константы разрешаются во время компиляции, в отличии от обычных констант, которые разрешаются во время исполнения. Специальные константы нечувствительны к регистру и их список приведен ниже:

    Правильное использование констант в PHP

    Поэтому я недавно узнал о константах в PHP. к счастью, на самом деле нет ничего, чему можно было бы научиться на них, они кажутся просто сущностью, которая хранит значение чего-то, точно так же, как переменная.

    Единственное отличие, которое я вижу (поправьте меня, если я ошибаюсь) , заключается в том, что константе нельзя присвоить новое значение (то есть?). Это имеет смысл астетически, например, если вы создаете конфигурационный файл с конфигурациями, которые не должны быть изменены.

    Но, конечно, это приносит другие преимущества/использование, чем просто использование переменной в любом случае? В каких ситуациях я должен выбрать использование констант?

    3 Ответа

    Если вы устанавливаете переменную для удобства и никогда не меняете ее во время работы скрипта, скорее всего, вы должны использовать вместо нее константу. Константы подобны переменным, за исключением того, что после того, как они определены, они не могут быть неопределенными или измененными — они постоянны, как следует из названия. Во многих языках константы быстрее переменных и поэтому рекомендуются, но это не так сильно, как в PHP — хотя они, возможно, немного быстрее, основное преимущество использования констант заключается в том, что они не имеют знака доллара спереди и поэтому заметно отличаются от переменных. Кроме того, константы автоматически глобальны по всему сценарию, в отличие от переменных.

    Читать еще:  Php if несколько значений

    Чтобы задать константу, используйте функцию define() — она принимает два параметра, первый из которых является именем устанавливаемой константы, а второй-значением, на которое вы хотите ее установить. Например, следующая строка кода устанавливает переменную CURRENT_TIME в качестве возвращаемого значения функции time(), а затем выводит ее на печать:

    Обратите внимание, что это не $CURRENT_TIME или Current_Time — константы, как и переменные, чувствительны к регистру, но в отличие от переменных они не начинаются со знака доллара. Вы можете изменить это поведение, передав true в качестве третьего параметра в define(), что делает константу нечувствительной к регистру:

    Есть две полезные функции, доступные для работы с константами, и это defined() и constant(). Функция defined() в основном является константой, эквивалентной функции isset(), так как она возвращает true, если константа, которую вы передаете ей, была определена. Например:

    Обратите внимание, что вы должны передать имя константы в defined() внутри кавычек.

    Ключевой характеристикой констант является то, что они ведут себя как функции и классы, в том смысле, что они должны быть определены, когда вы пытаетесь их использовать, иначе PHP приведет к ошибке; и что они глобальны и не имеют отношения к области видимости. Это делает их идеальными для флагов в параметрах функций, где значение относительно неважное, но требует уникальной идентификации. Просто посмотрите, как PHP сам использует константы:

    Каковы же будут альтернативы?

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

    Магические числа, очевидно, еще хуже, с еще меньшим значением и тем же отсутствием принуждения и открытости.

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

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

    Пример: Вам нужно установить новый скрипт на свой сайт, который использует какую-то базу данных. Вы откроете главный файл и отредактируете константы, которые нужно добавить в сведения о подключении к базе данных. Поскольку они являются константами, вы знаете, что они не должны меняться — и не должны, иначе ваша база данных не будет работать! Если вы используете переменные, значения могут быть случайно изменены в скрипте. Кроме того, гораздо проще узнать, какие части вам нужно изменить — и поскольку они обычно находятся в начале документа или в отдельном файле, их также легко идентифицировать.

    Похожие вопросы:

    На моем сайте определено около 100 + констант, и это потенциально может достигать 200. Я использую define() для определения константы. Это вызовет хит производительности ? Сколько максимальных.

    При разработке приложений мне часто приходится использовать ‘Constants’ и ’33’.As поскольку я использую стратегию, я держу все ‘Constants’ в отдельном классе с именем ‘Constants’, но я не уверен.

    Этот вопрос конкретно относится к использованию констант класса ABOVE и BELOW в приведенном ниже примере кода. У меня есть несколько разных классов в разных модулях, которые выглядят так: class.

    Я использую один отдельный файл для всех констант моего приложения PHP. class constants < const USERNAME = 'abc'; /* ⋮ */ >Например, константа USERNAME , значение может быть либо xyz , либо abc на.

    Как лучше всего использовать константы в CUDA? Один из способов-определить константы в постоянной памяти, например: // CUDA global constants __constant__ int M; int main(void) < .

    С точки зрения производительности, мне было интересно, какой метод определения констант / настроек лучше? Использование файла config.ini через такой класс, Как Zend_Config_Ini, или просто.

    Возможный Дубликат : Передайте строку PHP в переменную Javascript (и экранируйте новые строки ) У меня есть несколько констант в приложении PHP, которое я разрабатываю. Я определил класс констант и.

    Почему я должен писать (как говорит мой коллега): import static org.apache.commons.lang.math.NumberUtils.INTEGER_ONE; if (myIntVariable == INTEGER_ONE) < . >вместо: if (myIntVariable == 1) < .

    В laravel нет определенного файла констант, поэтому я пошел дальше и искал способ реализовать использование констант. Метод ниже — это то, что мне удалось собрать вместе: // app/config/constants.php.

    Я пишу класс-оболочку для обновления статуса задания API в php . Как я могу проверить, что состояние, переданное в update_status() , является одной из определенных констант? Есть ли лучший способ.

    Ссылка на основную публикацию
    ВсеИнструменты 220 Вольт
    Adblock
    detector