Синтаксис и семантика PHP
Эту статью необходимо обновить . ( июнь 2022 г. ) |
Синтаксис семантика и . PHP интерпретирована , языка программирования , образуют набор правил, которые определяют, как программа PHP может быть написана и
Обзор
[ редактировать ]Исторически развитие PHP было несколько бессистемным. Чтобы противостоять этому, PHP Framework Interop Group (FIG) создала документы Рекомендации по стандартам PHP (PSR), которые с 2009 года помогли обеспечить большую стандартизацию языка. [1] Современные стандарты кодирования содержатся в PSR-1 (Basic Coding Standard). [2] и PSR-2 (Руководство по стилю кодирования). [3]
Ключевые слова
[ редактировать ]Некоторые ключевые слова представляют собой вещи, которые выглядят как функции, некоторые — как константы, но на самом деле они являются языковыми конструкциями. Запрещено использовать любые ключевые слова в качестве констант, имен классов, функций или методов. Использование их в качестве имен переменных разрешено, но это может сбить с толку. [4]
__halt_compiler()
abstract
and
array()
as
break
callable
(начиная с PHP 5.4)case
catch
class
clone
const
continue
declare
default
die()
do
echo
else
elseif
empty()
enddeclare
endfor
endforeach
endif
endswitch
endwhile
eval()
exit()
extends
final
finally
(начиная с PHP 5.5)fn
(начиная с PHP 7.4)for
foreach
function
global
goto
(начиная с PHP 5.3)if
implements
include
include_once
instanceof
insteadof
(начиная с PHP 5.4)interface
isset()
list()
match
(начиная с PHP 8.0)namespace
(начиная с PHP 5.3)new
or
print
private
protected
public
require
require_once
return
static
switch
throw
trait
(начиная с PHP 5.4)try
unset()
use
var
while
xor
yield
(начиная с PHP 5.5)yield from
(начиная с PHP 7.0)
Основные языковые конструкции
[ редактировать ]PHP обычно следует синтаксису C , с исключениями и улучшениями для его основного использования в веб-разработке , где интенсивно используются манипуляции со строками . Переменные PHP должны начинаться с префикса " $
". Это позволяет PHP выполнять интерполяцию строк в строках с двойными кавычками , где обратная косая поддерживается в качестве escape-символа черта . Никакое экранирование или интерполяция не выполняется для строк, разделенных одинарными кавычками . PHP также поддерживает C-подобную функцию sprintf . Код может быть модульным. в функции, определенные с помощью ключевого слова function
. PHP поддерживает дополнительный объектно-ориентированный стиль кодирования с классами, обозначаемыми class
ключевое слово. Функции, определенные внутри классов, иногда называют методами . К структурам управления относятся: if
, while
, do/while
, for
, foreach
, и switch
. Операторы завершаются точкой с запятой, а не окончанием строки. [5]
Разделители
[ редактировать ]Процессор PHP анализирует код только внутри его разделителей . Все, что находится за пределами разделителей, отправляется непосредственно на вывод и не анализируется PHP. Единственные открывающие/закрывающие разделители, разрешенные PSR-1. [6] являются " <?php
" и " ?>
" или <?=
и ?>
.
Целью разделительных тегов является отделение PHP-кода от данных, отличных от PHP (в основном HTML). Хотя на практике это редкость, PHP будет выполнять код, встроенный в любой файл, передаваемый его интерпретатору, включая двоичные файлы, такие как файлы PDF или JPEG, или файлы журналов сервера. [7] [8] Все, что находится за пределами разделителей, игнорируется парсером PHP и передается как выходные данные. [9]
Эти рекомендуемые разделители создают правильно сформированные XHTML и другие XML- документы. [10] Это может быть полезно, если документы с исходным кодом когда-либо потребуется обрабатывать другими способами в течение срока службы программного обеспечения.
Если правильная проверка XML не является проблемой и файл содержит только код PHP, предпочтительно опустить закрытие PHP ( ?>
) тег в конце файла. [11]
Нерекомендуемые теги
[ редактировать ]На некоторых серверах можно использовать и другие разделители, хотя большинство из них больше не поддерживаются. [12] Примеры:
- "
<script language="php">
" и "</script>
" (удалено в PHP7) - Короткие открывающие теги (
<?
) (настроено с помощьюshort_open_tag
это настройка)- Особая форма этого
<?
тег это<?=
, что автоматически повторяет следующий оператор. До PHP 5.4.0 это также контролировалось с помощьюshort_open_tag
, но всегда доступен в более поздних версиях.
- Особая форма этого
- ASP ( Теги стиля
<%
или<%=
) (удалено в PHP7)
Переменные и комментарии
[ редактировать ]Переменные начинаются с символа доллара , и тип не нужно указывать заранее. В отличие от имен функций и классов, имена переменных чувствительны к регистру. Оба в двойных кавычках ( ""
) и строки heredoc позволяют встраивать значение переменной в строку. [13] Как и в C, переменные можно привести к определенному типу, указав тип в круглых скобках. PHP воспринимает символы новой строки как пробелы , как в языке свободной формы . Оператор конкатенации .
(точка). Доступ к элементам массива и установка их осуществляется с помощью квадратных скобок как в ассоциативных, так и в индексированных массивах. Фигурные скобки можно использовать для доступа к элементам массива, но не для их назначения.
PHP имеет три типа синтаксиса комментариев : /* */
который служит блочными комментариями, и //
а также #
которые используются для встроенных комментариев. [14] Во многих примерах используется print
функция вместо echo
функция. Обе функции практически идентичны; основная разница в том, что print
медленнее, чем echo
потому что первый вернет статус, указывающий, был ли он успешным или нет, в дополнение к тексту для вывода, тогда как второй не возвращает статус и возвращает только текст для вывода. [15]
Самая простая программа
[ редактировать ]Обычный пример кода « Hello World » для PHP: [16]
<?php
echo "Hello World!\n";
?>
В приведенном выше примере выводится следующее:
Hello World!
Вместо использования <?php
и echo
оператор, необязательным «ярлыком» является использование <?=
вместо <?php
который неявно повторяет данные. Например:
<!DOCTYPE html>
<html>
<head>
<title>PHP "Hello, World!" program</title>
</head>
<body>
<p><?="Hello World!"?></p>
</body>
</html>
Приведенный выше пример также показывает, что текст, не содержащийся во включающих тегах PHP, будет выведен напрямую.
Операторы
[ редактировать ]PHP поддерживает: арифметические операторы , операторы присваивания , побитовые операторы , операторы сравнения , операторы контроля ошибок, операторы выполнения, операторы увеличения/уменьшения , логические операторы , строковые операторы , операторы массива, операторы условного присваивания . [17]
Структуры управления
[ редактировать ]Условные предложения
[ редактировать ]Если... еще оператор
[ редактировать ]Синтаксис оператора PHP if ... else следующий:
if (condition) {
// statements;
} elseif (condition2) {
// statements;
} else {
// statements;
}
Для одиночных операторов скобки можно опустить, а if при необходимости сжать в одну строку:
if (condition) dosomething();
elseif (condition2) dosomethingelse();
else doyetathirdthing();
Тернарный условный оператор
[ редактировать ]$abs = $value >= 0 ? $value : -$value;
/* Equivalent to */
if ($value >= 0) {
$abs = $value;
} else {
$abs = -$value;
}
Оператор Элвиса
[ редактировать ]Поскольку PHP 5.3 поддерживает оператор Элвиса ( ?:
), в котором можно опустить среднюю часть тернарного оператора.
$c = $a ?: $b;
/* Equivalent to */
$c = $a ? $a : $b;
Нулевой оператор объединения
[ редактировать ]Начиная с версии 7.0 PHP также поддерживает оператор объединения Null ( ??
).
$a = $b ?? $c;
/* Equivalent to */
$a = isset($b) ? $b : $c;
Начиная с версии 7.4 PHP также поддерживает оператор объединения Null с помощью ??=
синтаксис.
$a ??= $b;
/* Equivalent to */
$a = $a ?? $b;
Оператор безопасной навигации
[ редактировать ]Начиная с версии 8.0 PHP также поддерживает оператор безопасной навигации ( ?->
).
$variable = $object?->method();
/* Equivalent to */
$variable = $object !== null ? $object->method() : null;
Оператор переключения
[ редактировать ]Пример синтаксиса оператора переключения PHP выглядит следующим образом:
switch (expr) {
case 0:
// statements;
break;
case 1:
// statements;
break;
case 2:
// statements;
break;
default:
// statements;
}
Обратите внимание, что в отличие от C значения в операторе case могут быть любого типа, а не только целыми числами. [18]
Выражение совпадения
[ редактировать ]PHP 8 представляет match
выражение. [19] Выражение соответствия концептуально похоже на выражение switch
и является более компактным для некоторых случаев использования. [20]
switch
утверждения традиционно отдаются предпочтением для простых сравнений, основанных на значениях, match
операторы обеспечивают большую гибкость и читабельность, особенно при использовании в сложных условиях или шаблонах.
[21]
echo match (1) {
0 => 'Foo',
1 => 'Bar',
2 => 'Baz',
};
//> Bar
Петли
[ редактировать ]Для цикла
[ редактировать ]Синтаксис PHP цикла for следующий:
for (initialization; condition; afterthought) {
// statements;
}
Пока цикл
[ редактировать ]Синтаксис цикла PHP while следующий:
while (condition) {
// statements;
}
Сделать цикл while
[ редактировать ]Синтаксис цикла PHP do while следующий:
do {
// statements;
} while (condition);
Для каждой петли
[ редактировать ]Синтаксис PHP для каждого цикла следующий:
foreach ($set as $value) {
// statements;
}
Альтернативный синтаксис для структур управления
[ редактировать ]PHP предлагает альтернативный синтаксис с использованием двоеточий вместо стандартного синтаксиса фигурных скобок (например, « {...}
"). Этот синтаксис влияет на следующие структуры управления: if
, while
, for
, foreach
, и switch
. Синтаксис лишь незначительно отличается от синтаксиса фигурных скобок. В каждом случае открывающая скобка ( {
) заменяется двоеточием ( :
), а закрывающая скобка заменяется на endif;
, endwhile;
, endfor;
, endforeach;
, или endswitch;
, соответственно. [22] Смешение стилей синтаксиса в одном блоке управления не поддерживается. Пример синтаксиса для if
/ elseif
заявление следующее:
if (condition):
// code here
elseif (condition):
// code here
else:
// code here
endif;
Этот стиль иногда называют синтаксисом шаблона, поскольку его легче читать при объединении PHP и HTML или JavaScript для условного вывода:
<html>
<?php if ($day == 'Thursday'): ?>
<div>Tomorrow is Friday!</div>
<?php elseif ($day == 'Friday'): ?>
<div>TGIF</div>
<?php else: ?>
<div>ugh</div>
<?php endif; ?>
</html>
Обработка исключений
[ редактировать ]Метод обработки исключений во время выполнения в PHP унаследован от C++. [23]
function inv($x)
{
if ($x == 0) {
throw new Exception('Division by zero');
}
return 1 / $x;
}
try {
echo inv(2); // prints 0.5
echo inv(0); // throw an exception
echo inv(5); // will not run
} catch (Exception $e) {
echo $e->getMessage(); // prints Division by zero
}
// Continue execution
echo "Hello"; // prints Hello
Типы данных
[ редактировать ]Скалярные типы
[ редактировать ]PHP поддерживает четыре скалярных типа: bool
, int
, float
, string
. [24]
логическое значение
[ редактировать ]PHP имеет собственный логический тип с именем " bool
", аналогично собственным логическим типам в Java и C++ . Используя правила преобразования логических типов, ненулевые значения интерпретируются как true
и ноль как false
, как в Perl .
Обе константы true
и false
нечувствительны к регистру. [25]
Целое число
[ редактировать ]PHP хранит целые числа в диапазоне, зависящем от платформы. Обычно этот диапазон представляет собой 32-битные или 64-битные целые числа со знаком. [26] Целочисленным переменным можно присваивать десятичные (положительные и отрицательные), восьмеричные , шестнадцатеричные и двоичные обозначения.
$a = 1234; // decimal number
$b = 0321; // octal number (equivalent to 209 decimal)
$c = 0x1B; // hexadecimal number (equivalent to 27 decimal)
$d = 0b11; // binary number (equivalent to 3 decimal)
$e = 1_234_567; // decimal number (as of PHP 7.4.0)
Плавать
[ редактировать ]Действительные числа также хранятся в диапазоне, специфичном для платформы. Их можно указать с помощью нотации с плавающей запятой или двух форм экспоненциальной записи . [27]
$a = 1.234;
$b = 1.2e3; // 1200
$c = 7E-5; // 0.00007
$d = 1_234.567; // as of PHP 7.4.0
Нить
[ редактировать ]PHP поддерживает strings
, который можно использовать с одинарными, двойными кавычками, nowdoc или heredoc . синтаксисом [28]
Строки в двойных кавычках поддерживают интерполяцию переменных:
$age = '23';
echo "John is $age years old"; // John is 23 years old
Синтаксис фигурных скобок: [29]
$f = "sqrt";
$x = 25;
echo "a$xc\n"; // Warning: Undefined variable $xc
echo "a{$x}c\n"; // prints a25c
echo "a${x}c\n"; // also prints a25c
echo "$f($x) is {$f($x)}\n"; // prints sqrt(25) is 5
Специальные типы
[ редактировать ]PHP поддерживает два специальных типа: null
, resource
.
null
тип данных представляет переменную, которая не имеет значения. Единственная ценность в null
тип данных NULL . Константа NULL не чувствительна к регистру. [30] Переменные " resource
Тип « представляет ссылки на ресурсы из внешних источников. Обычно они создаются функциями из определенного расширения и могут обрабатываться только функциями из того же расширения. Примеры включают ресурсы файлов, изображений и баз данных. [24]
Сложные типы
[ редактировать ]PHP поддерживает четыре составных типа: array
, object
, callable
, iterable
.
Множество
[ редактировать ]Массивы могут содержать смешанные элементы любого типа, включая ресурсы, объекты. [31] Многомерные массивы создаются путем назначения массивов в качестве элементов массива. PHP не имеет истинного типа массива. Массивы PHP изначально разрежены и ассоциативны . Индексированные массивы представляют собой просто хеши, в которых в качестве ключей используются целые числа.
Индексированный массив:
$season = ["Autumn", "Winter", "Spring", "Summer"];
echo $season[2]; // Spring
Ассоциативный массив:
$salary = ["Alex" => 34000, "Bill" => 43000, "Jim" => 28000];
echo $salary["Bill"]; // 43000
Многомерный массив:
$mark = [
"Alex" => [
"biology" => 73,
"history" => 85
],
"Jim" => [
"biology" => 86,
"history" => 92
]
];
echo $mark["Jim"]["history"]; // 92
Объект
[ редактировать ]The object
Тип данных — это комбинация переменных, функций и структур данных в парадигме объектно-ориентированного программирования .
class Person
{
//...
}
$person = new Person();
возможность вызова
[ редактировать ]Начиная с версии 5.3 PHP имеет первоклассные функции , которые можно использовать, например, в качестве аргумента другой функции.
function runner(callable $function, mixed ...$args)
{
return $function(...$args);
}
$f = fn($x, $y) => $x ** $y;
function sum(int|float ...$args)
{
return array_sum($args);
}
echo runner(fn($x) => $x ** 2, 2); // prints 4
echo runner($f, 2, 3); // prints 8
echo runner('sum', 1, 2, 3, 4); // prints 10
Итерируемый
[ редактировать ]Iterable
тип указывает, что переменная может использоваться с foreach
петля. [32] Это может быть любой array
или generator
или возразить, что реализация специального внутреннего Traversable
[33] интерфейс.
function printSquares(iterable $data)
{
foreach ($data as $value) {
echo ($value ** 2) . " ";
}
echo "\n";
}
// array
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// generator
$generator = function (): Generator {
for ($i = 1; $i <= 10; $i++) {
yield $i;
}
};
// object
$arrayIterator = new ArrayIterator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
printSquares($array); // 1 4 9 16 25 36 49 64 81 100
printSquares($generator()); // 1 4 9 16 25 36 49 64 81 100
printSquares($arrayIterator); // 1 4 9 16 25 36 49 64 81 100
Типы союзов
[ редактировать ]Типы объединения были представлены в PHP 8.0. [34]
function foo(string|int $foo): string|int {}
Функции
[ редактировать ]PHP имеет сотни базовых функций и тысячи расширений. До версии PHP 5.3.0 функции не были функциями первого класса , и на них можно ссылаться только по имени, тогда как в PHP 5.3.0 введены замыкания. [35] Пользовательские функции можно создавать в любое время без прототипирования. [35] Функции могут быть определены внутри блоков кода, что позволяет во время выполнения принимать решение о том, следует ли определять функцию. Нет понятия локальных функций. Вызовы функций должны использовать круглые скобки, за исключением функций конструктора класса с нулевым аргументом, вызываемых с помощью PHP. new
оператор, где круглые скобки необязательны.
Пример определения функции следующий:
function hello($target='World')
{
echo "Hello $target!\n";
}
hello(); // outputs "Hello World!"
hello('Wikipedia'); // outputs "Hello Wikipedia!"
Вызовы функций могут осуществляться через переменные, где значение переменной содержит имя вызываемой функции. Это проиллюстрировано в следующем примере:
function hello()
{
return 'Hello';
}
function world()
{
return "World!";
}
$function1 = 'hello';
$function2 = 'world';
echo "{$function1()} {$function2()}";
Значение по умолчанию для параметров может быть назначено в определении функции, но до PHP 8.0 не поддерживались именованные параметры или пропуск параметров. [36] Некоторые основные разработчики PHP публично выразили разочарование этим решением. [37] Другие предложили обходные пути для этого ограничения. [38]
Именованные аргументы
[ редактировать ]Именованные аргументы были представлены в PHP 8.0.
function power($base, $exp)
{
return $base ** $exp;
}
// Using positional arguments:
echo power(2, 3); // prints 8
// Using named arguments:
echo power(base: 2, exp: 3); // prints 8
echo power(exp: 3, base: 2); // prints 8
Объявление типа
[ редактировать ]Указание типов параметров функции и возвращаемых значений функции поддерживается начиная с PHP 7.0. [39]
Объявление типа возвращаемого значения:
function sum($a, $b): float
{
return $a + $b;
}
var_dump(sum(1, 2)); // prints float(3)
Ввод параметров:
function sum(int $a, int $b)
{
return $a + $b;
}
var_dump(sum(1, 2)); // prints int(3)
var_dump(sum(1.6, 2.3)); // prints int(3)
Строгая типизация
[ редактировать ]Без включения строгой типизации:
$f1 = fn ($a, $b): int => $a + $b;
$f2 = fn (int $a, int $b) => $a + $b;
var_dump($f1(1.3, 2.6)); // prints int(3)
var_dump($f1(1, '2')); // prints int(3)
var_dump($f2(1.3, 2.6)); // prints int(3)
var_dump($f2(1, '2')); // prints int(3)
При включенной строгой типизации:
declare(strict_types=1);
$f1 = fn ($a, $b): int => $a + $b;
$f2 = fn (int $a, int $b) => $a + $b;
var_dump($f1(1.3, 2.6)); // Fatal error: Return value must be of type int, float returned
var_dump($f1(1, '2')); // prints int(3)
var_dump($f2(1.3, 2.6)); // Fatal error: Argument #1 ($a) must be of type int, float given
var_dump($f2(1, '2')); // Fatal error: Argument #2 ($b) must be of type int, string given
Анонимные функции
[ редактировать ]PHP поддерживает настоящие анонимные функции, начиная с версии 5.3. [35] В предыдущих версиях PHP поддерживал только квазианонимные функции через create_function()
функция.
$x = 3;
$func = function($z) { return $z * 2; };
echo $func($x); // prints 6
Начиная с версии 7.4 PHP также поддерживает синтаксис стрелочных функций ( =>
). [40]
$x = 3;
$func = fn($z) => $z * 2;
echo $func($x); // prints 6
Замыкания
[ редактировать ]Создание замыканий
$add = fn($x) => fn($y) => $y + $x;
/* Equivalent to */
$add = function ($x) {
return function ($y) use ($x) {
return $y + $x;
};
};
с использованием
$f = $add(5);
echo $f(3); // prints 8
echo $add(2)(4); // prints 6
PHP
[ редактировать ]PHP не заботится о типах переменных аргументов, если аргумент не является типизированным.
function sum(...$nums): int
{
return array_sum($nums);
}
echo sum(1, 2, 3); // 6
И набрал вариативные аргументы:
function sum(int ...$nums): int
{
return array_sum($nums);
}
echo sum(1, 'a', 3); // TypeError: Argument 2 passed to sum() must be of the type int (since PHP 7.3)
Генераторы
[ редактировать ]Используя генераторы, мы можем написать код, который использует foreach для перебора набора данных без необходимости создания массива в памяти, что может привести к увеличению затрат памяти или значительному времени обработки для генерации.
Объекты
[ редактировать ]Базовые объектно-ориентированного программирования были добавлены в PHP 3. функции [41] Обработка объектов была полностью переписана для PHP 5, что расширило набор функций и повысило производительность. [42] В предыдущих версиях PHP объекты обрабатывались как примитивные типы . [42] Недостаток этого метода заключался в том, что весь объект копировался, когда переменная была назначена или передана в качестве параметра методу. В новом подходе на объекты ссылаются по дескриптору , а не по значению. В PHP 5 появились частные и защищенные переменные и методы-члены , а также абстрактные классы и финальные классы, а также абстрактные методы и финальные методы . Он также представил стандартный способ объявления конструкторов и деструкторов , аналогичный тому, который используется в других объектно-ориентированных языках, таких как C++ , и стандартную модель обработки исключений . Кроме того, PHP 5 добавил интерфейсы и позволяет реализовать несколько интерфейсов. Существуют специальные интерфейсы, которые позволяют объектам взаимодействовать с системой времени выполнения. Объекты, реализующие ArrayAccess, можно использовать с синтаксисом массива, а объекты, реализующие Iterator или IteratorAggregate, можно использовать с языковой конструкцией foreach . Статические методы и переменные класса в Zend Engine 2 работают не так, как можно было бы ожидать. Нет Функция виртуальной таблицы в движке, поэтому статические переменные привязываются к имени, а не к ссылке во время компиляции. [43]
В этом примере показано, как определить класс, Foo
, который наследуется от класса Bar
. Метод myStaticMethod
это общедоступный статический метод, который можно вызвать с помощью Foo::myStaticMethod();
.
class Foo extends Bar
{
function __construct()
{
$doo = "wah dee dee";
}
public static function myStaticMethod()
{
$dee = "dee dee dum";
}
}
Если разработчик создает копию объекта, используя зарезервированное слово clone , движок Zend проверит, есть ли __clone()
метод был определен или нет. Если нет, он вызовет значение по умолчанию __clone()
который скопирует свойства объекта. Если __clone()
метод определен, то он будет отвечать за установку необходимых свойств в созданном объекте. Для удобства движок предоставит функцию, которая импортирует свойства исходного объекта, чтобы программист мог начать с реплики исходного объекта по значению и переопределять только те свойства, которые необходимо изменить. [44]
Функции
[ редактировать ]В этом примере используется черта для улучшения других классов:
// The template
trait TSingleton
{
private static $_instance = null;
private function __construct() {} // Must have private default constructor and be aware not to open it in the class
public static function getInstance()
{
if (null === self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}
}
class FrontController
{
use TSingleton;
}
// Can also be used in already extended classes
class WebSite extends SomeClass
{
use TSingleton;
}
Это позволяет моделировать аспекты множественного наследования:
trait TBounding
{
public $x, $y, $width, $height;
}
trait TMoveable
{
public function moveTo($x, $y)
{
// …
}
}
trait TResizeable
{
public function resize($newWidth, $newHeight)
{
// …
}
}
class Rectangle
{
use TBounding, TMoveable, TResizeable;
public function fillColor($color)
{
// …
}
}
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ PSR-А?
- ^ ПСР-1
- ^ ПСР-2
- ^ PHP: Список ключевых слов — Руководство
- ^ «Разделение инструкций» . Группа PHP . Проверено 16 марта 2008 г.
- ^ «PSR-1: Базовый стандарт кодирования — PHP-FIG» .
- ^ «Инъекция кода – простой PHP-вирус, содержащийся в изображении JPEG» .
- ^ Янг, Сьюзен; Айтель, Дэйв (24 ноября 2003 г.). Справочник хакера: стратегия взлома и защиты сетей . ISBN 9780203490044 .
- ^ «Ваша первая страница с поддержкой PHP» . Группа PHP . Проверено 25 февраля 2008 г.
- ^ Брей, Тим; и др. (26 ноября 2008 г.). «Инструкция по обработке» . Расширяемый язык разметки (XML) 1.0 (пятое издание) . W3C . Проверено 18 июня 2009 г.
- ^ «PHP-теги» .
- ^ «PHP: Основной синтаксис» . Группа PHP . Проверено 22 февраля 2008 г.
- ^ «Переменные» . Группа PHP . Проверено 16 марта 2008 г.
- ^ «Комментарии» . Группа PHP . Проверено 16 марта 2008 г.
- ^ «распечатать» . Группа PHP . Проверено 16 марта 2008 г.
- ^ "Привет, мир" . Код Новичок . Проверено 25 февраля 2008 г.
- ^ «PHP: Операторы — Руководство» . Группа PHP . Проверено 30 января 2021 г.
- ^ «PHP: Переключение — вручную» .
- ^ Редмонд, Пол. «Выражение соответствия появится в PHP 8» . Новости Ларавел . Проверено 4 октября 2020 г.
- ^ «PHP 8.0: Сопоставление выражений» . PHP Смотреть . Проверено 4 октября 2020 г.
- ^ «Сопоставить или переключить в PHP» . Техсоус . Проверено 27 июля 2024 г.
- ^ «Альтернативный синтаксис управляющих структур» . Группа PHP . Проверено 16 апреля 2010 г.
- ^ «PHP: Исключения — Руководство» . Группа PHP . Проверено 30 января 2021 г.
- ^ Перейти обратно: а б «Типы» . Группа PHP . Проверено 16 марта 2008 г.
- ^ «Буловые значения» . Группа PHP . Проверено 22 января 2021 г.
- ^ PHP: Целые числа — Руководство
- ^ «Числа с плавающей запятой» . Группа PHP . Проверено 22 января 2021 г.
- ^ «Струны» . Группа PHP . Проверено 21 марта 2008 г.
- ^ «Сложный (фигурный) синтаксис» . Группа PHP . Проверено 30 января 2021 г.
- ^ НУЛЬ
- ^ «Массивы» . Группа PHP . Проверено 22 января 2021 г.
- ^ PHP: Итерации — Руководство
- ^ PHP: проходимость - Руководство
- ^ PHP RFC: типы объединения 2.0
- ^ Перейти обратно: а б с «Функции» . Группа PHP . Проверено 16 марта 2008 г.
- ^ «Удаленные элементы PHP 6» . Группа PHP . Проверено 9 января 2009 г.
- ^ «Синтаксис, который мне не хватает в PHP» . Станислав Малышев, Zend Technologies, Ltd. Проверено 9 января 2009 г.
- ^ «Пропущенные и именованные параметры PHP» . SEO Egghead Inc. Проверено 9 января 2009 г.
- ^ «PHP: Объявления типов — Руководство» . Группа PHP . Проверено 28 февраля 2021 г.
- ^ PHP RFC: Стрелочные функции 2.0
- ^ «История PHP и связанных с ним проектов» . Группа PHP . Проверено 25 февраля 2008 г.
- ^ Перейти обратно: а б «Ссылки на объекты PHP 5» . мйцай . Проверено 16 марта 2008 г.
- ^ «Классы и объекты (PHP 5)» . Группа PHP . Проверено 16 марта 2008 г.
- ^ «Клонирование объектов» . Группа PHP . Проверено 16 марта 2008 г.