Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос нашим менторам. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете
Ключевые аспекты веб-разработки на PHP

Веб внутри PHP

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. Вы увидите, что вывелась строчка 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). Некоторые из них удобны и используются в повседневной практике, другие неудобны, и для них существуют пакеты-заменители.


<span class="translation_missing" title="translation missing: ru.web.courses.lessons.mentors.mentor_avatars">Mentor Avatars</span>

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят менторы из команды Хекслета или другие студенты.

Зарегистрироваться

или войти в аккаунт

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 115 курсов, 2000+ часов теории
  • 800 практических заданий в браузере
  • 250 000 студентов

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Rambler
Логотип компании Bookmate
Логотип компании Botmother

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».