ГЛАВА 5. Характеристика языка PHP
Описывается история возникновения, становления и развития языка PHP. Что нового было сделано за последние годы.
Что нового в PHP 7?
Среди новинок PHP 7 следует отметить:
- новые операторы
<=>
и??
(см. главу 7); - обработка ошибок реализована через механизм исключений, помимо существующего класса
Exception
, введен дополнительный классError
, который позволяет перехватывать стандартные ошибки PHP (см. главу 26); - анонимные классы (см. главу 23);
- поддержка скалярных типов аргументов и возвращаемых значений в функциях (см. главу 11);
- введен специальный синтаксис
\u{00FF}
для поддержки UTF-8 символов (см. главу 13); - массивы-константы (см. главу 10);
- допускается использование конструкции
list
(см. главу 10) совместно с объектами, реализующими интерфейс ArrayAccess (см. главу 29); - предопределенный класс
IntlChar
для обеспечения поддержки символов UTF-8 (см. главу 27); - класс
Generator
, представляющий генераторы PHP, получил методgetReturn()
, позволяющий извлечь значение, возвращаемое ключевым словомreturn
(см. главу 12); - делегирование генераторов с использованием ключевых слов
yield from
(см. главу 12); - регулярные Perl-выражения дополнены новой функцией
preg_replace_callback_
array()
(см. главу 20); - новые функции
random_int()
(см. главу 15) иrandom_bytes()
(см. главу 13); - параметры сессии теперь можно передавать через необязательный аргумент функции
session_start()
(см. главу 34).
Помимо нововведений, часть устаревших конструкций и расширений были окончательно удалены из PHP. Среди них можно отметить:
- альтернативные теги
<%
и%>
, а также<script language="php">
и</script>
, которые можно было использовать вместо тегов<?php
и?>
; - регулярные POSIX-выражения (ereg-функции), вместо них рекомендуется использовать регулярные Perl-выражения (см. главу 20);
- расширение mysql, вместо него следует использовать либо объектно-ориентированное расширение mysqli, а лучше еще более новое расширение PDO (см. главу 37);
- не допускается использование конструктора в стиле PHP 4, когда имя метода совпадает с именем класса (см. главу 22);
Основы
файл листинга /phpbasics/sq.php
- PHP-скрипт может вообще не отличаться от обычного HTML-документа. Имея те же теги тест и т.д. пока не встретит открывающего тега
<?php
и закрывающего?>
- Между php тегами текст интерпретируется как программа и в HTML-документ не попадает.
- Если же программе нужно что-то вывести, она должна воспользоваться оператором
echo
.
Получается, PHP устроен так, что любой текст, который расположен вне программных блоков, ограниченных
<?php
и?>
, выводится в браузер непосредственно, т. е. воспринимается как вызов оператора echo (последняя аналогия очень точна, и мы остановимся на ней чуть позже).
PHP комментарии
// Однострочный
# Другой однострочный
/* Многострочный
Комментарий */
Переменные и строки
$dat = date("d.m y");
//переменной с именем $dat присваивается значение, которое вернула функция date() (возможности этой функции будут подробно описаны в части III)
- все переменные в PHP должны начинаться со знака
$
, потому что "так проще для интерпретации". - нет необходимости явно описывать переменные (как в C)
- нигде не указывается их тип (строка, число и т. д.). Интерпретатор сам решает, что, где и какого типа.
- В конце каждого оператора должна стоять точка с запятой (
;
)
Далее ставим операторы echo, выводящие текстовые строки, а также дату и время.
// Следующие записи равнозначны:
echo "<p>Текущая дата: $dat года</p>\n";
/*
любая переменная начинаетсяся с символа $,
что позволяет интерпретатору вставить ее прямо в строку символов на место $dat
(конечно, в любую строку, а не только в параметры echo)
*/
// Можно и так - конструкция echo не ограничена по числу параметров:
echo "<p>Текущая дата: ", $dat, " года</p>\n";
echo "<p>Текущая дата: " . $dat . " года</p>\n";
Пример цикла
for ($i = 1; $i <= 5; $i++) {
echo "<li>$i в квадрате = " . ($i * $i);
echo ", $i в кубе = " . ($i * $i * $i) . "</li>\n";
}
В первой строке находится определение цикла for
(счетчик $i
, которому присваивается начальное значение 1, инкрементируется на единицу на каждом шаге, пока не достигнет шести). Затем следует блок, выполняющий вывод одной пары "квадрат-куб".
Мы намеренно сделали вывод в две строки, а не в одну, чтобы показать, что в PHP применяются те же самые правила группировки операторов, что и в C. А именно: несколько операторов можно сделать одним сложным оператором, заключив их в фигурные скобки, как это сделано выше.
Результат
<li>1 в квадрате = 1, 1 в кубе = 1</li>
<li>2 в квадрате = 4, 2 в кубе = 8</li>
<li>3 в квадрате = 9, 3 в кубе = 27</li>
<li>4 в квадрате = 16, 4 в кубе = 64</li>
<li>5 в квадрате = 25, 5 в кубе = 125</li>