# Специфика синтаксиса **Глобальные переменные:** ```php define(); ``` **Переменные переменных** ```php $foo = "bar"; $$foo = 'bаz"; ``` После выполнение второго оператора у переменной $bar будет значение "baz". Значение переменной foo рассматривается как имя переменной. **Переменные-ссылки** ```php $black = &$white ``` **Области видимости переменной:** - Локальная область: переменные, объявленные в функции, локальны для функции. Но созданная внутри цикла - все равно функция. - Глобальная: перед переменной поставить global ```php function updateCounler() { global $counter; $counler++; } $counter = 10; updateCounter(); echo $counter; ``` В массиве $GLOBALS хранятся глобальные переменные, доступные напрямую ```php function updateCounter() { $GLOBALS[counter]++; } ``` - Статическая переменная сохраняет значение между вызовами функции. Объявляется через static isset() проверяет, существует ли переменная, unset() уничтожает переменную. **Операторы**
Приор.ОператорОписание
21clone, newсоздание нового объекта
20\[индекс массива
19~побитное отрицание
++инкремент
--декремент
(int), (bool), (float), (string), (array), (object), (unset) Приведение типов ``` $b = (int) $a; ```
@подавление ошибок
18isinstanceofпроверка типа
17!Логическое отрицание
16\* / %Умножение, деление, остаток от деления
15+ - .Сложение, вычитание, конкатенация строки
14<< >>Побитный сдвиг влево, побитный сдвиг вправо
13< <= > >=Меньше, меньше или равно, больше, больше или равно
12== != <> === !==Равно, не равно, тип и значение равны, тип и значение не равны
11&Побитное и
10^Побитное исключающее или
9|Побитное или
8&&Логическое и
7||Логическое или
6?:Условный оператор
5= += -= и т д Присваивание
4andЛогическое и
3xorЛогическое исключающее или
2orЛогическое или
1,разделитель списка
**Префиксный и постфиксный способ записи** ```php $m = ++$var;//увеличит значение на 1 и вернет значение $m = $var++;//вернет значение и увеличит значение на 1 ``` **Выполнение команд оболочки** Обратные кавычки. ```php $listing = `ls -al /tmp`; ``` **Условные операторы** Стандартный синтаксис: ``` if (условие) {действия} else {действия} ``` Тенарный синтаксис: ```php if($active) { echo "да";} else { есhо "нет";} ``` Альтернативный синтаксис: ```php Имя:Sophia Фaмилия:lee Пожалуйста войдите. ``` Switch ```php switch ($name) { case 'one': //do something break; case 'two': //do something break; } ``` ```php switch ($name): case 'one': //do something break; case 'two': //do something break; endswitch; ``` **Циклы** ```php while (условие) { //операторы } ``` ```php while (условие): //операторы endwhile; ``` continue / break - следующая итерация / выход из текущего цикла. break 2 - выход из 2 текущих циклов. ```php do оператор while (условие); ``` ```php for ($counter=0; $counter<10; $counter++){ оператор } ``` Счетчик по массиву ```php foreach ($mass as $elem) { оператор } ``` ```php foreach ($mass as $key => $val) { оператор } ``` Альтернативный способ: ``` foreach ($mass as $key => $val): оператор endforeach; ``` **Обработка ошибок** ```php function inverse($x) { if (!$x) { throw new Exception('Деление на ноль.'); } return 1 / $x; } try { echo inverse(5) . "\n"; echo inverse(0) . "\n"; } catch (Exception $e) { echo 'PHP перехватил исключение: ', $e->getMessage(), "\n"; } ``` **Включение кода** include - включение статического кода ```php содержимое страницы ``` require - включение динамического кода ```php require "codelib.php"; mysub(); //определено в codelib.php ``` Лучше: ```php content ``` **Подавление ошибок:** ```php @include ``` Если в файле конфигурации РНР (php.ini) включена опция allow\_url\_fopen, вы можете включать файлы, находящиеся на удаленных узлах, ука­зав URL вместо пути к файлу ```php include "http://www.exomple.com/codelib.php"; ``` include\_once и require\_once - однократная загрузка в пределах скрипта Область видимости включаемых файлов = области видимости точки включения.