Листинг 2.13. Оператор конкатенации
<?php
$Query = "SELECT LastName, FirstName " . "FROM Clients " .
"WHERE Disposition = 'Pleasant' " . "ORDER BY LastName ";
print($Query);
 ?> 

Ранее при описании переменных подчеркивалось, что имени переменной всегда предшествует знак доллара. Это справедливо для глобальных, локальных переменных или аргументов функций. Есть оператор, который означает "работать со значением, которое хранится в указанной переменной". Этот прием применим в том случае, когда при создании кода имя переменной, используемой в нем, еще неизвестно. Такой оператор, обозначенный символом доллара, может работать с результатом, полученным другим оператором, обозначенным символом доллара, или с результатом сложного выражения, заключенного в фигурные скобки. Заметим, что косвенная ссылка не поддерживается внутри строк, заключенных в кавычки, или в документах HERE, если при этом не используются фигурные скобки.

| Листинг 2.14. Оператор косвенной ссылки_
<?php
//задать переменные $var_name = "myValue"; $myValue = 123.456; $array_name = "myArray"; $myArray = array(1, 2, 3); //напечатать 123.456" print($var_name . "<br>n");
//напечатать "$myValue", возможно, не то, что требовалось
//$var_name принимает "myValue", но косвенная
//ссылка внутри строк, заключенных в кавычки, не работает,
// а дополнительный символ доллара печатается как есть
print("$var_name<br>n");
//напечатать "123.456"
// для включения сложных переменных в строки //использует специальную форму записи print("{$var_name}<br>n"); //напечатать "3"
print(${$array_name}[2] . "<br>n");
?>

Фигурные скобки группируют переменные аналогично тому, как это делают скобки при выполнении арифметических операций, что позволяет сократить неоднозначность, которая возникает при ссылке на переменные. Они позволяют задавать элементы многомерных массивов внутри строк. Но даже в тех ситуациях, когда это не очень нужно, можно использовать фигурные скобки. В листинге 2.14 показано использование фигурных скобок. Здесь совершенно очевидно, что переменная используется для присвоения имени другой переменной.

| Листинг 2.15. Оператор молчания_
<?php
$a = 7;
$b = 0;
// подавить вывод предупреждения о делении на нуль
@ $c = $a / $b;
 ?> 
Оператор @ подавляет вывод любого сообщения об ошибке, когда он предшествует выражению. Обычно, когда встроенная функция выполняется с ошибкой, анализатор PHP отсылает текст непосредственно в браузер. Иногда это является простым предупреждением. Если требуется подавить любой вывод сообщений об ошибках или предупреждений, непосредственно перед именем функции необходимо поместить оператор @. Оператор @ также можно разместить перед выражением, если вы ожидаете появления такой ошибки, как деление на нуль. С помощью директивы error_reporting можно подавить вывод сообщений об ошибках для всех функций сценария (листинг 2.15).
Оператор ? эквивалентен оператору if и называется троичным оператором, так как он принимает сразу три параметра: выражение, которое оценивается, выражение, которое отрабатывается, если первое выражение возвращает значение TRUE, и выражение, которое выполняется, если первое выражение возвращает результат FALSE. Подробно оператор ? описывается в главе 3, "Операторы управления".
Оператор -> применяется непосредственно для ссылки на методы или свойства объектов, которые обсуждаются в главе 6, "Классы и объекты". В левой части оператора указывается имя класса, а в правой части задается имя функции или переменная внутри класса. Оператор :: позволяет обращаться к члену класса, что дает возможность вызывать методы классов, не создавая при этом экземпляры объектов. В правой части оператора :: задается имя класса заданного диапазона. В левой части может задаваться имя метода или константы. Оператор instanceof проверяет, является ли объект в левой части элементом класса, указанного справа.
Операторы -> и :: можно объединять в цепочки. Выражения $a->$b->c() и ClassA::ClassB::methodC() представляют собой допустимые выражения.
Язык PHP позволяет использовать в левой части оператора :: три специальных имени: self, parent и main. Пространство имен self относится к локальному пространству имен, его нельзя использовать вне определения класса. Пространство имен parent относится к классу, из которого происходит текущий класс. Пространство имен main относится к глобальному диапазону.
Оператор => используется при объявлении массивов (детально он обсуждается в главе 5, "Массивы"). При создании массива с помощью оператора array индекс его элемента можно задать с помощью оператора =>. В левой части этого оператора указывается индекс, а в правой части - значение. Этот оператор используется в операторе foreach.
Для выполнения команд оболочки используется оператор Символ обратной кавычки оператора можно найти на любой клавиатуре слева. Это выражение задает команду оболочки операционной системы. Такие выражения подобны функции shell_exec, которая описана в главе 9, "Операционная система". В листинге 2.16 показан простой пример оператора обратной кавычки.

| Листинг 2.14. Оператор обратной кавычки
<?
//распечатать содержимое каталога print(nl2br(vls -lav));
?>