Четверг, 16.05.2024, 08:32
DigitalBox
Приветствую Вас Гость | RSS
Главная Работа с константами Регистрация Вход
Меню сайта

Работа с константами


Константы подобны переменным. Константам дают имена и присваивают значения. Однако константы являются постоянными; их значения не могут быть изменены в сценарии. После того как значение константы установлено, оно уже не меняется. Если ввести константу для обозначения погоды и установить для нее значение "солнечная", то впоследствии изменить это значение нельзя.


Создание констант

Константы описываются с помощью оператора define. Общий формат этого оператора таков:

define (" имя_константы" , " значение_константы");

Например, чтобы создать константу weather, используйте следующий синтаксис:

define("weather", "солнечная");

Эта команда создает константу с именем weather и значением солнечная.

При описании констант, как и при объявлении переменных, нужно использовать осмысленные имена. Однако, в отличие от переменных, имена констант не начинаются со знака доллара. В соответствии с негласным соглашением константам присваивают имена, состоящие из прописных букв латинского алфавита, чтобы их можно было легко отличать от переменных. Однако в языке РНР можно использовать и символы нижнего регистра.

Константа может содержать строку или число. Следующий оператор создает константу с именем INTEREST и присваивает ей значение .01:

define("INTEREST",.01);

Константам нельзя давать имена, которые являются ключевыми словами РНР. Ключевые слова— это имена операторов РНР, например echo. Их нельзя использовать в качестве имен констант, потому что интерпретатор РНР обрабатывает их как команды PHP-сценария, а не как константы. РНР позволит описать константу с именем ECHO, не выдавая сообщения об ошибке, но при использовании такой константы возникнут проблемы. Например, если написать оператор вида echo ECHO;

Интерпретатор РНР запутается и выведет сообщение об ошибке. Он рассматривает константу как начало следующего оператора echo, но не может найти аргументы, чтобы завершить первую инструкцию echo. В набор ключевых слов РНР включены следующие:

andecho list 
 as else new
 break empty or
 case eval print
 class exit require
 const for return
 continue foreach switch
 declare function use
 default global var
 die if while
 do include

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

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


Когда использовать константы

Если вы знаете, что значение какой-либо переменной не будет изменяться на протяжении всего сценария, рационально использовать для его хранения константу. Применение константы позволяет выбрать длинное осмысленное имя и сделать сценарий более ясным. Например, название PRОDUCT_COST более понятно, чем число 20.50.

При использовании константы ее значение можно установить только один раз — в начале сценария. Если это значение когда-либо понадобится изменить, то при использовании константы это можно сделать только в одном месте, а не изменять значение переменной в двадцати различных местах сценария. Одна замена лучие, чем двадцать. Такой подход очень удобен и ускоряет работу.

Использование константы гарантирует, что данное значение не будет случайно изменено где-либо в сценарии.

Предположим, имеется сценарий, который переводит значения из одной валюты в другую, умножая количество долларов на обменный курс. Например, если курс обмена доллара США на канадский доллар составляет 1.52, можно записать следующий код:

‹?php
     $US_dollars = 20.00;
     $CA_dollars = $US_dollars * 1.52;
?›

Теперь предположим, что этот сценарий содержит 40 000 строк кода и что доллары США в нем конвертируются в канадские доллары в 50 различных местах. Значит, приведенный выше код встречается в 50 различных местах. Вы понимаете, что обменный курс изменяется практически каждую неделю, значит, каждую неделю вам придется редактировать этот сценарий, вручную изменяя число 1.52 на другое значение в 50 различных местах. Согласитесь, что это очень утомительно.

Гораздо лучше поместить обменный курс в переменную, чтобы изменять это значение только в одном месте. Тогда сценарий будет выглядеть следующим образом:

‹?php
     $rate = 1.52;
     $US_dollars = 20.00;
     $CA_dollars = $US_dollars * $rate;
?›

Значение $rate можно установить в начале сценария, а затем использовать его в 50 необходимых местах сценария. Естественно, это более удобная реализация. Если потребуется изменить курс, то значение переменной потребуется поменять только в одном месте. Например, если на следующей неделе обменный курс изменится на 1.53, вам придется изменить лишь первую строку сценария:

$rate = 1.53;

Такой подход вполне пригоден. Однако $rate — не очень осмысленное имя. Вспомните, что сценарий содержит 40 000 строк кода и 2 строки, определяющие процедуру конвертирования валюты, которые используются в 50 различных местах. Предположим, где-то в середине сценария необходимо добавить некоторый код, определяющий степень заинтересованности. Предположим, где-нибудь в середине сценария вы случайно используете следующий код:

$interest_rate = 20;
$rate = $interest_rate-1;
$amount = $principal * $rate;

Теперь всюду после этого фрагмента значение переменной $rate изменится. Значение 1.52, установленное в начале сценария, будет заменено числом 19, определяемым этим кодом. Этого можно избежать, выбирая более осмысленные имена переменных. А еще лучше использовать константу, как в следующем сценарии:

‹?php
     define("RATE", 1.52);
     $US_dolars = 20;
     $CA_dollars = $US_dollars * RATE;
?›

Теперь вы используете константу RATE, которую нельзя изменить в сценарии. Если в середине сценария вы попробуете добавить строку RATE = 20; интерпретатор РНР не позволит изменить значение. Таким образом можно избежать ошибок, которые легко допустить при использовании переменных.

На следующей неделе, когда обменный курс изменится на 1.53, этот сценарий придется лишь слегка отредактировать следующим образом:

‹?php
     define("RATE", 1.53);
     $US_dolars = 20;
     $CA_dollars = $US_dollars * RATE;
?›

Конечно, лучше использовать более осмысленное имя, например:

define("US_TO_CA", 1.52);

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

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


Отображение значений констант

Значение константы можно вывести с помощью функции print_r следующим образом:

print_r(US_TO_CA);

Константу также можно вывести с помощью оператора echo:

echo US_T0_CA;

Если для вывода константы используется оператор echo, имя константы не нужно заключать в кавычки. Если имя константы все же заключить в кавычки, то на экране отобразится имя константы, а не ее значение. Константу можно вывести, как показано в предыдущем примере, или же с использованием круглых скобок. Можно формировать и более сложные команды вывода, разделяя выводимые объекты запятыми, как в следующем примере:

echo "Курс обмена на канадский доллар составляет $",US_T0_CA;

В результате выполнения этой команды будет выведен следующий текст:

Курс обмена на канадский доллар составляет $1.52


Использование встроенных констант

В языке РНР определено множество встроенных констант, которые можно использовать в сценариях. Для примера, значением константы __LINE__ является номер текущей строки, а константа __FILE__ содержит имя соответствующего файла. (Встроенные константы начинаются с двух символов подчеркивания и заканчиваются тоже двумя символами подчеркивания.) Например, можно использовать команду:

echo __FILE__ ;

ее результат выглядит примерно следующим образом:

c:\program files\apache group\apache\htdocs\testvar2.php

В языке РНР имеется и множество других встроенных констант. Например, констакты E_ALL и E_ERR0R можно использовать для управления процессом обработки ошибок в РНР. Эти константы описаны в следующем разделе.

Форма входа

Мини-чат

Календарь новостей
«  Май 2024  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031

Поиск

Друзья сайта
Скажи сайту спасибо
ЯндексЯндекс. ДеньгиХочу такую же кнопку



Получить WMR-бонус на свой кошелек!

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Copyright MyCorp © 2024 Бесплатный конструктор сайтов - uCoz