PHP, в отличие от всех остальных языков, содержит веб внутри себя. В то время как в других экосистемах любая работа с вебом — всего лишь набор дополнительных библиотек, а сами языки при этом про веб не знают ничего. PHP знает о вебе все. Это стало одной из ключевых причин его успеха. Создание примитивного интерактивного сайта на php не требует буквально ничего, кроме самого языка. PHP позволяет мешать HTML и свой код в одном файле, а веб-сервер сразу же выведет его как готовую веб-страницу.
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>
Сохраните код выше в файл index.php и в этой же папке запустите встроенный в php веб-сервер php -S localhost:5555
. Затем откройте в браузере адрес localhost:5555 (если вы используете WSL, посмотрите, как получить доступ к сетевым приложениям Linux из Windows). Вы увидите, что вывелась строчка Hello World. Фантастика, да? Подобное не сработает больше ни в одном другом языке программирования. Для запуска примитивной страницы вам придется самостоятельно настраивать веб-сервер, устанавливать и/или импортировать дополнительные библиотеки, писать код, который генерирует соответствующую страницу, причем, возможно, вы не обойдетесь одним файлом.
Весь секрет кода выше в том, что php-файлы могут содержать HTML-разметку, именно по этой причине необходимо использовать тег <?php ?>
. Интерпретатор должен как-то узнавать, где разметка, а где код, который нужно обрабатывать.
Со временем та простая страница превращается в подобный код:
<?php
if ($_POST['process'] === 1) {
$first_name = htmlentities($_POST['first_name']);
$last_name = htmlentities($_POST['last_name']);
if (empty($last_name)){
echo "<p class=\"error\">Your last name cannot be blank</p>";
} else {
echo "<p>Hello there, ".$first_name." ".$last_name."</p>";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Form validation example</title>
<style>
.error{color:red;}
input{display:block; margin-bottom:10px;}
</style>
</head>
<body>
<h1>Form Validation Example</h1>
<h2>Please enter your name</h2>
<form action="validation_example_2.php" method="post">
<label for="first_name">First name:</label>
<input name="first_name" id="first_name" type="text" value="<?php echo($first_name); ?>" />
<label for="last_name">Last name:</label>
<input name="last_name" id="last_name" type="text" value="<?php echo($last_name); ?>" />
<input type="hidden" name="process" value="1" />
<input type="submit" value="Submit" />
</form>
</body>
</html>
Сложность резко возросла, но это еще только цветочки. Код выше выполняет довольно простую задачку. Любой более-менее живой сайт содержит в сотни и тысячи раз больше кода. На этом этапе преимущества, которые дал нам php при старте, превращаются в недостатки. Код не структурирован и перемешан с разметкой, его тяжело менять и отлаживать, вся система быстро деградирует.
Откровенно говоря, профессиональные разработчики не используют php именно таким образом, как описано выше. Современная php разработка мало чем отличается от того, как все происходит в других экосистемах. Почти все, что нужно для веба, берется из сторонних библиотек. Несмотря на это, множество людей продолжают писать код описанным выше способом. Одна из причин заключается в том, что в сети полно обучающих материалов, которые приучают к подобному стилю.
Мы так писать не будем. Все, что было выше, показано исключительно в ознакомительных целях.
Кроме прочего, в php встроено множество функций, предназначенных для работы с исключительно веб-сущностями. Начиная от экранирования тегов, заканчивая работой с куками (cookies). Некоторые из них удобны и используются в повседневной практике, другие неудобны, и для них существуют пакеты-заменители.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Вебинар «Как самостоятельно учиться»