Jump to content

Синтаксис и семантика PHP

Синтаксис семантика и . 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 не заботится о типах переменных аргументов, если аргумент не является типизированным.

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)
    {
        // …
    }
}

См. также

[ редактировать ]
  1. ^ PSR-А?
  2. ^ ПСР-1
  3. ^ ПСР-2
  4. ^ PHP: Список ключевых слов — Руководство
  5. ^ «Разделение инструкций» . Группа PHP . Проверено 16 марта 2008 г.
  6. ^ «PSR-1: Базовый стандарт кодирования — PHP-FIG» .
  7. ^ «Инъекция кода – простой PHP-вирус, содержащийся в изображении JPEG» .
  8. ^ Янг, Сьюзен; Айтель, Дэйв (24 ноября 2003 г.). Справочник хакера: стратегия взлома и защиты сетей . ISBN  9780203490044 .
  9. ^ «Ваша первая страница с поддержкой PHP» . Группа PHP . Проверено 25 февраля 2008 г.
  10. ^ Брей, Тим; и др. (26 ноября 2008 г.). «Инструкция по обработке» . Расширяемый язык разметки (XML) 1.0 (пятое издание) . W3C . Проверено 18 июня 2009 г.
  11. ^ «PHP-теги» .
  12. ^ «PHP: Основной синтаксис» . Группа PHP . Проверено 22 февраля 2008 г.
  13. ^ «Переменные» . Группа PHP . Проверено 16 марта 2008 г.
  14. ^ «Комментарии» . Группа PHP . Проверено 16 марта 2008 г.
  15. ^ «распечатать» . Группа PHP . Проверено 16 марта 2008 г.
  16. ^ "Привет, мир" . Код Новичок . Проверено 25 февраля 2008 г.
  17. ^ «PHP: Операторы — Руководство» . Группа PHP . Проверено 30 января 2021 г.
  18. ^ «PHP: Переключение — вручную» .
  19. ^ Редмонд, Пол. «Выражение соответствия появится в PHP 8» . Новости Ларавел . Проверено 4 октября 2020 г.
  20. ^ «PHP 8.0: Сопоставление выражений» . PHP Смотреть . Проверено 4 октября 2020 г.
  21. ^ «Сопоставить или переключить в PHP» . Техсоус . Проверено 27 июля 2024 г.
  22. ^ «Альтернативный синтаксис управляющих структур» . Группа PHP . Проверено 16 апреля 2010 г.
  23. ^ «PHP: Исключения — Руководство» . Группа PHP . Проверено 30 января 2021 г.
  24. ^ Перейти обратно: а б «Типы» . Группа PHP . Проверено 16 марта 2008 г.
  25. ^ «Буловые значения» . Группа PHP . Проверено 22 января 2021 г.
  26. ^ PHP: Целые числа — Руководство
  27. ^ «Числа с плавающей запятой» . Группа PHP . Проверено 22 января 2021 г.
  28. ^ «Струны» . Группа PHP . Проверено 21 марта 2008 г.
  29. ^ «Сложный (фигурный) синтаксис» . Группа PHP . Проверено 30 января 2021 г.
  30. ^ НУЛЬ
  31. ^ «Массивы» . Группа PHP . Проверено 22 января 2021 г.
  32. ^ PHP: Итерации — Руководство
  33. ^ PHP: проходимость - Руководство
  34. ^ PHP RFC: типы объединения 2.0
  35. ^ Перейти обратно: а б с «Функции» . Группа PHP . Проверено 16 марта 2008 г.
  36. ^ «Удаленные элементы PHP 6» . Группа PHP . Проверено 9 января 2009 г.
  37. ^ «Синтаксис, который мне не хватает в PHP» . Станислав Малышев, Zend Technologies, Ltd. Проверено 9 января 2009 г.
  38. ^ «Пропущенные и именованные параметры PHP» . SEO Egghead Inc. Проверено 9 января 2009 г.
  39. ^ «PHP: Объявления типов — Руководство» . Группа PHP . Проверено 28 февраля 2021 г.
  40. ^ PHP RFC: Стрелочные функции 2.0
  41. ^ «История PHP и связанных с ним проектов» . Группа PHP . Проверено 25 февраля 2008 г.
  42. ^ Перейти обратно: а б «Ссылки на объекты PHP 5» . мйцай . Проверено 16 марта 2008 г.
  43. ^ «Классы и объекты (PHP 5)» . Группа PHP . Проверено 16 марта 2008 г.
  44. ^ «Клонирование объектов» . Группа PHP . Проверено 16 марта 2008 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 776a5e3206d7d593615b2b3593231966__1722416760
URL1:https://arc.ask3.ru/arc/aa/77/66/776a5e3206d7d593615b2b3593231966.html
Заголовок, (Title) документа по адресу, URL1:
PHP syntax and semantics - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)