4. Основы языка PHP – Курс PHP
Пример PHP-программы
В предыдущем уроке мы рассматривали традиционную программу “Hello, world”
<?php
echo "Hello, world!"
?>
Одной из главной особенностью языка программирования PHP является тот факт, что его код может располагаться вперемешку с HTML-кодом. А для того чтобы интерпретатор PHP различал HTML и PHP коды, последний заключается в специальные теги <?php
и ?>
, между которыми располагаются конструкции и операторы языка PHP.
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Простейший PHP-скрипт</title>
</head>
<body>
<?php
echo "Hello, world!"
?>
</body>
</html>
Конструкция echo
в PHP используется для вывода одной или нескольких строк в стандартный вывод, который обычно отправляется клиенту, например, в браузер.
Однако, стоит обратить внимание на важный аспект программирования на серверных языках, таких как PHP. Скрипты, которые расположены между тегами <?php
и ?>
, выполняются на сервере, а результат их работы отправляется клиенту в виде обычного текста (HTML, JSON и т.д.). Клиент, как правило, получает только конечный результат работы скрипта, а не сам PHP-код.
При просмотре исходного кода HTML-страницы, отправленного сервером, обычно видно уже обработанный результат PHP-скрипта, а не исходный код PHP. Это делается для безопасности, так как исходный код PHP содержит конфиденциальную информацию, которую не следует раскрывать клиентам.
Таким образом, скрипты PHP выполняются на сервере, обрабатывают данные, формируют HTML (или другие типы) страницы и отправляют клиентам только результаты своей работы, в чем легко убедиться, посмотрев исходный код HTML-страницы:
<!doctype html>
<html lang="ru ">
<head>
<meta charset="UTF-8">
<title>Простейший PHP-скрипт</title>
</head>
<body>
Hello, world!
</body>
</html>
Начальные и конечные теги
Для того чтобы PHP-интерпретатор мог правильно разделить HTML и PHP-коды, программа должна быть расположена между открывающим тегом <?php
и закрывающим тегом ?>
. Даже если в коде не используется HTML-разметка, наличие PHP-тегов обязательно, иначе PHP-код будет выведен в браузер “как есть”, без его интерпретации. Кроме того, PHP поддерживает специальный сокращенный синтаксис тегов <?= ... ?>
, который позволяет выводить результат одиночного PHP-выражения.
<!DOCTYPE html>
<html>
<head>
<title>PHP Example</title>
</head>
<body>
<h1><?= "Hello, world!"; ?></h1>
</body>
</html>
Из примера видно, что для вывода строки “Hello, world!” на веб-странице можно использовать сокращенный синтаксис <?= ... ?>
, который автоматически выводит результат в стандартный поток.
Важно отметить, что в HTML-странице можно вставить несколько раз PHP-код. В следующем примере показаны две такие вставки: первая устанавливает название страницы (<title>
) в HTML-разметке, а вторая определяет содержимое страницы (<body>
).
<!DOCTYPE html>
<html>
<head>
<title><?= Вывод текущей даты ?></title>
</head>
<body>
<?php
echo "Текущая дата: <br>";
echo date(DATE_RSS);
?>
</body>
</html>
Если после завершающего тега ?>
нет никакого вывода, его можно опустить:
<?php
echo "Hello, world!";
Кроме того, стандарт кодирования PSR-12, который определяет форматирование кода на PHP, рекомендует не использовать завершающий тег ?>
везде, где это возможно.
Когда интерпретатор PHP обнаруживает символ, например пробел, он считает, что начинается вывод HTTP-документа, и формирование предшествующего ему HTTP-заголовка завершено. Поэтому последующие попытки отправить HTTP-заголовки вызовут ошибку. Если же не использовать завершающий тег ?>
, такие ошибки будут исключены.
Точка с запятой
Выражение – это совокупность конструкций в языке программирования, завершающаяся точкой с запятой. В PHP выражения отделяются друг от друга точкой с запятой, но иногда можно опускать этот разделитель. Например, в листинге 4.4 после строки “Вывод текущей даты” точка с запятой опущена, потому что в этой вставке между <?php
и ?>
размещено только одно выражение, и его не нужно отделять от других.
Однако во второй вставке <?php
и ?>
после каждой из конструкций echo
размещена точка с запятой. Если забыть указать этот разделитель, интерпретатор PHP посчитает выражение на новой строке продолжением предыдущего и не сможет корректно разобрать скрипт.
Последнее выражение перед завершающим тегом ?>
можно не снабжать точкой с запятой. Например, в листинге 4.4 можно было бы и не указывать точку с запятой после выражения echo date(DATE_RSS);
. Однако рекомендуется всегда ставить точки с запятой после каждого выражения, чтобы избежать потенциальных ошибок при добавлении новых операторов.
Переводы строк в коде не влияют на его интерпретацию – выражение может быть разбито на несколько строк, и интерпретатор PHP будет считать, что выражение закончено лишь после того, как обнаружит точку с запятой или завершающий тег ?>
.
Фигурные скобки
Фигурные скобки позволяют объединить несколько выражений в группу, которую обычно называют составным выражением.
<?php
{
echo 5 + 5;
echo 5 - 1;
echo "Hello!"
}
Как видим из примера, выражения внутри скобок располагаются с отступом.
Отступы в коде, хотя и не обязательны, повышают читаемость программы. Согласно стандарту кодирования PHP (PSR-12), рекомендуется использовать отступы в 4 пробела. Если вы привыкли использовать символ табуляции, редактор следует настроить на замену табуляции пробелами.
Составное выражение в PHP используется в совместной работе с условными операторами (например, if
и else
) и операторами цикла. Оно представляет собой блок кода, заключенный в фигурные скобки {}
. Этот блок может содержать одно или несколько простых выражений. В последующих уроках мы рассмотрим более подробно работу с условными операторами.
В листинге 4.8 приведен пример использования ключевых слов if
и else
с составным выражением. Задача скрипта – случайно выводить в окно браузера либо зеленое слово “Истина”, либо красное слово “Ложь”. Без использования фигурных скобок, ключевое слово if
распространяло бы свое действие только на одно выражение. Использование же составного выражения позволяет распространить его действие на несколько простых выражений, что в данном случае нужно для вывода двух разных цветов в зависимости от условия.
<?php
if (rand(0, 1)) {
?>
<div style='color:green'><?= 'Истина' ?> </div>
<?php
} else {
?>
<div style='color:red'><?= 'Ложь' ?> </div>
<?php
}
Как видно из листинга 4.8, составное выражение может быть прервано тегами <?php
и ?>
, а затем продолжено. Однако есть исключения, например, составное выражение, используемое для формирования класса, нельзя разбивать тегами <?php
и ?>
.
Комментарии
Современные языки программирования предоставляют более удобный способ взаимодействия с программами для людей по сравнению с машинными кодами, ассемблером и ранними высокоуровневыми языками программирования. Тем не менее, архитектура компьютера влияет на конструкции языка, и программист, создавая код, придерживается компьютерной логики. Это может привести к созданию сложных структур, требующих дополнительного объяснения на обычном языке. Для таких объяснений и служат комментарии в коде.
В PHP существует несколько способов вставки комментариев:
Комментарий | Описание |
// … | Комментарий в стиле С++, начинающийся с символа двух слешей и заканчивающийся переводом строки |
# … | Комментарий в стиле скриптовых языков UNIX, начинающийся с символа диеза # и заканчивающийся переводом строки |
/* … */ | Если два предыдущих комментария ограничены лишь одной строчкой, то комментарий в стиле языка С /*…*/ является многострочным |
Начиная с PHP 8.0, последовательность #[
не рассматривается как начало комментария, посколько эта последовательность используется для атрибутов.
Пример использования всех трех видов комментариев приведен в листинге 4.9. Обратите внимание, что комментарии в PHP действуют только внутри тегов <?php ... ?>
. Если символы комментариев будут находиться вне этих тегов, то они будут отображаться браузером как обычный текст.
<?php
/*
Многострочный комментарий
Можно писать сколько угодно строк
*/
echo 'Hello'; //однострочный комментарий
echo 'world'; # и это тоже
Комментарии можно вставлять не только после точки с запятой, но и в середине выражения:
<?php
echo strstr( // эту функцию мы рассмотрим позднее
'Hello, world', 'H');
Включение PHP-файла
До настоящего момента мы работали только с одним PHP-скриптом. Однако в PHP есть возможность подключать скрипты друг к другу с помощью двух конструкций: include
и require
. Обе конструкции принимают один аргумент – путь к файлу, который нужно включить, и результатом их работы является вставка содержимого указанного файла в то место, где они вызываются в исходном скрипте. Если включаемый файл также является PHP-скриптом, то его содержимое сначала вставляется в исходный скрипт, а затем результирующий скрипт интерпретируется:
<?php
echo 'Основной скрипт <br>';
include 'include.php';
echo 'Основной скрипт <br>';
Файл include.php содержит следующий код:
<?php
echo 'Включаемый файл<br>';
?>
<h3>Текст необязательно должен выводиться оператором echo</h3>
В результате запуска скрипта в браузер будет выведен текст:
Основной скрипт
Включаемый файл
Текст необязательно должен выводиться оператором echo
Основной скрипт
Различие include
и require
заключается в их реакции на отсутствие включаемого файла. Include
выводит предупреждение, но весь последующий код продолжает выполняться, а require
останавливает работу скрипта.
Резюме
В этом уроке мы рассмотрели основы PHP и получили начальное представление о том, как выглядит типичный скрипт на PHP. В следующем уроке рассмотрим переменные и типы данных.
Подписывайтесь на мой телеграмм канал, чтобы оперативно узнавать о выходе новых уроков и не только https://t.me/SamuraisGoal
Заходите в чат для обсуждений https://t.me/SamuraisGoalChat
Так же буду рад видеть на своем личном ТГ канале, там я делюсь своими достижениями и просто мыслями https://t.me/ZxKillPublic