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