
42. Константы в php
Константа PHP отличается от переменной PHP тем, что, во-первых, ей нигде в программе нельзя присвоить значение больше одного раза, а во-вторых, ее имя не предваряется знаком $, как это делается для переменных.
Например:
<?php
// Предположим, определена константа M_PI, равная 3.14
$s=2*5*M_PI; // использование константы
echo "Это число PI"; // выведет "Это число PI"
echo '<BR>';
echo "Это число ".M_PI; // выведет "Это число 3.14"
?>
То, что не надо писать "доллар" перед именем константы — это, конечно хорошо. Однако, как мы можем видеть из примера, есть и минусы: мы уже не можем использовать имя константы непосредственно в текстовой строке.
Предопределенные константы PHP
Константы PHP бывают двух типов: одни — предопределенные (то есть устанавливаемые самим интерпретатором), а другие определяются программистом. Существуют несколько предопределенных констант.
__FILE__ — хранит имя файла программы, которая выполняется в данный момент.
__LINE__ —содержит текущий номер строки, которую обрабатывает в текущий момент интерпретатор. Эта своеобразная "константа" каждый раз меняется по ходу исполнения программы.
PHP_VERSION — версия интерпретатора PHP.
PHP_OS — имя операционной системы, под которой работает PHP.
TRUE или true — эта константа нам уже знакома и содержит значение "истина".
FALSE или false — содержит значение "ложь".
NULL или null — содержит значение NULL.
Определение констант PHP
Вы можете определить и свои собственные, новые константы. Делается это при помощи оператора define(), очень похожего на функцию.
void define(string $name, string $value, bool $case_sen=true);
Определяет новую константу с именем, переданным в $name, и значением $value. Если необязательный параметр $case_sen равен true, то в дальнейшем в программе регистр букв константы учитывается, в противном случае — не учитывается (по умолчанию, как мы видим, регистр учитывается). Созданная константа не может быть уничтожена или переопределена.
Например:
<?php
define("pi",3.14);
define("str","Test string");
echo pi;
echo '<br>';
echo str;
?>
Обратите внимание на кавычки, которыми должно быть обрамлено имя константы при ее определении. А также на то, что нельзя дважды определять константу с одним и тем же именем — это породит ошибку во время выполнения программы.
Проверка существования константы PHP
В PHP существует также функция, которая проверяет, существует ли (была ли определена ранее) константа с указанным именем. Вот она.
bool defined(string $name)
Возвращает true, если константа с именем $name была ранее определена.
Впрочем, я ни разу не видел программы, которая задействовала бы эту возможность. Но для полноты картины эту функцию все-таки здесь привожу.
43. Операторы в php
Оператор представляет собой символическое обозначение некоторого действия, выполняемого с операндами в выражении. Многие операторы известны любому программисту, но вы должны помнить, что РНР выполняет автоматическое преобразование типов на основании типа оператора, объединяющего два операнда.
Приоритет и ассоциативность операторов являются важными характеристиками языка программирования. В табл. 3.1 приведен полный список всех операторов, упорядоченных по убыванию приоритета. Приоритет, ассоциативность и сами операторы подробно рассматриваются в разделах, следующих за таблицей.
Таблица 3.1. Операторы РНР
Оператор |
Ассоциативность |
Цель |
( ) |
- |
Изменение приоритета |
new |
- |
Создание экземпляров объектов |
! ~ |
П |
Логическое отрицание, поразрядное отрицание |
++ -- |
П |
Инкремент, декремент |
@ |
П |
Маскировка ошибок |
/ * % |
Л |
Деление, умножение, остаток |
+ - . |
Л |
Сложение, вычитание, конкатенация |
<< >> |
Л |
Сдвиг влево, сдвиг вправо (поразрядный) |
< <= > >= |
- |
Меньше, меньше или равно, больше, больше или равно |
== != === <> |
- |
Равно, не равно, идентично, не равно |
& ^ | |
Л |
Поразрядные операции AND, XOR и OR |
&& || |
Л |
Логические операции AND и OR |
?: |
П |
Тернарный оператор |
= += *= /= .= |
П |
Операторы присваивания |
%= &= |= ^= |
|
|
<<= >>= |
|
|
AND XOR OR |
Л |
Логические операции AND, XOR и OR |
Приоритет операторов
Приоритет является характеристикой операторов, определяющей порядок выполнения действий с окружающими операндами. В РНР используются те же правила приоритета, что и в школьном курсе математики. Пример:
$total_cost = $cost + $cost * 0.06;
Приведенная команда эквивалентна следующей:
$total cost = $cost + ($cost * 0.06);
Это объясняется тем, что оператор умножения обладает более высоким приоритетом по сравнению с оператором сложения.
Ассоциативность операторов
Ассоциативность оператора определяет последовательность выполнения операторов с одинаковым приоритетом. Выполнение может происходить в двух направлениях: либо слева направо, либо справа налево. При ассоциативности первого типа операции, входящие в выражение, выполняются слева направо.
Математические операторы
Математические операторы предназначены для выполнения различных математических операций и часто применяются в большинстве программ РНР. К счастью, их использование обходится без проблем. РНР содержит широкий ассортимент стандартных математических функций для выполнения основных преобразований и вычисления логарифмов, квадратных корней, геометрических величин и т. д.
Операторы присваивания
Операторы присваивания задают новое значение переменной. В простейшем варианте оператор присваивания ограничивается изменением величины, в других вариантах (называемых сокращенными операторами присваивания) перед присваиванием выполняется некоторая операция. Умеренное использование операторов присваивания обеспечивает более наглядный и компактный код.
Строковые операторы
Строковые операторы РНР обеспечивают удобные средства конкатенации (то есть слияния) строк. Существует два строковых оператора: оператор конкатенации (.) и оператор конкатенации с присваиванием (.=), описанный в предыдущем разделе «Операторы присваивания».
Конкатенацией называется объединение двух и более объектов в единое целое.
Операторы инкремента и декремента
Удобные вспомогательные операторы инкремента (++) и декремента (--), приведенные в табл. 3.5, делают программу более наглядной и обеспечивают укороченную запись для увеличения или уменьшения текущего значения переменной на 1. Эти операторы могут располагаться как слева, так и справа от операнда. Действия, выполняемые оператором, зависят от того, с какой стороны от операнда он находится.
Логические операторы
Логические операторы наряду с математическими операторами играют важную роль в любом приложении РНР, обеспечивая средства для принятия решений в зависимости от значения переменных. Логические операторы позволяют управлять порядком выполнения команд в программе и часто используются в управляющих конструкциях (таких, как условная команда if, а также циклы for и while). Логические операторы часто используются для проверки результата вызова функций.
Операторы равенства
Операторы равенства предназначены для сравнения двух величин и проверки их эквивалентности.
Операторы сравнения
Операторы сравнения, как и логические операторы, позволяют управлять логикой программы и принимать решения при сравнении двух и более переменных.
Поразрядные операторы
Поразрядные операторы выполняют операции с целыми числами на уровне отдельных битов, составляющих число. Чтобы лучше понять принцип их работы, необходимо иметь хотя бы общее представление о двоичном представлении десятичных чисел.