2.4. Константы
Константы аналогичны переменным, но задаются только единожды. Некоторые из них создаются PHP автоматически; другие можно создать с помощью функции define, подробнее описанной в главе 11, "Данные". Для получения значения константы символ доллара не используется, и константа никогда не может быть задана в левой части оператора присвоения.
Несмотря на то что это не критично, для обозначения констант используются только прописные буквы. Это позволяет сделать их заметными в сценарии, что можно увидеть на примере листинга 2.8. В главе 8, "Браузер ввода-вывода", показано, что PHP сам во время запуска создает много переменных.

| Листинг 2.8. Использование констант_
<?php
define("STANDARD_GREETING", "Hello, World!");
print(STANDARD_GREETING);
?>

2.5. Операторы
Как указывалось ранее, оператор представляет собой специальный символ, пред­писывающий PHP выполнить математическую или логическую операцию над одним или несколько операндами. Такое выражение, как $result = 2 + 5, содержит три оператора. Оператор $ указывает PHP, что используется переменная result. Оператор = присваивает значение, расположенное в правой части, переменной, размещенной в его левой части. Оператор + производит сложение значений, указанных по обе стороны от него.
Большинство операторов обрабатывают два операнда и поэтому называются бинарными операторами. Операторы, обрабатывающие один операнд, называются унарными операторами. В PHP также имеется один оператор, работающий с тремя операндами, который называется троичным оператором. За небольшими исключениями большинство операторов можно отнести к одной из пяти категорий: арифметические операторы, логические операторы, битовые операторы, операторы присвоения и операторы управления.
Большинство операторов работает с операндами определенного типа. Например, арифметические операторы обычно работают с числовыми аргументами. Что же происходит, если ему предоставить строку? К счастью, PHP в целом и его операторы в частности не делают проблем из несоответствия типов данных.
При получении оператором неожиданного типа PHP делает все от него зависящее для того, чтобы преобразовать его и не потерять при этом смысл операнда. После преобразования из строки в число PHP игнорирует пробелы и завершающие символы. Например, PHP преобразует значения "4.5test" и "4.5" в 4.5. Если PHP не находит никакого числового значения строки, он преобразует строку в нулевое значение. Если PHP ожидает целое число, он отбрасывает все цифры после десятичной точки.
Использование вещественных чисел в операторах, в которых PHP ожидает целочисленных результатов, приводит к отсечению дробной части. Для округления вещественного числа до кратного целого существует и специально для этого предназначенная функция round, детально описанная в главе 13, "Математические функции".
Пустые строки и нуль преобразуются в значение FALSE, если PHP ожидает логическое значение. Строка, содержащая один символ "0 ", преобразуется в значение FALSE. Любые другие строки или числовые значения возвращают логическое значение TRUE. Массивы (они обсуждаются в главе 4, "Функции") возвращают логическое значение TRUE, если они содержат элементы. Вариант с преобразованием массива в логическое значение - явление необычное. Значения NULL всегда возвращают значение FALSE. Ресурсы и объекты всегда возвращают значение TRUE.
Поскольку PHP преобразует все другие типы в логический тип без каких-либо ди­агностических сообщений, необходимо быть очень внимательным. Некоторые функции при ошибочном завершении возвращают значение FALSE, а при успешном завершении - число или строку. Если простая поверка возвращаемого значения свидетельствует о том, что функция возвращает пустую строку или нуль, такой результат будет невозможно отличить от ошибочного завершения работы функции. Операторы === и !=== позволяют избежать такой неоднозначности, но об этом - позднее.
При преобразовании в строки других типов PHP возвращает представление, имеющее определенный смысл. Целые числа становятся строками или числами. Вещественные числа преобразуются в строки с десятичной точкой. PHP возвращает предельно большие или предельно малые числовые значения в экспоненциальном виде. Составные типы преобразуются в строки. Работа со сложными типами как со строками имеет смысл только в отладочных целях. В табл. 2.5 приводятся правила преобразования типов.
Переменные, операторы и выражения>
Переменные, операторы и выражения