Ключевые аспекты веб-разработки на PHP (7) (Конспект Hexlet)

Веб внутри PHP

  1. Запуск встроенного в php веб-сервера: php -S localhost:5555

HTTP

  1. What happens when you type google.com into your browser’s address box and press enter?
  2. Протокол HTTP (курс Hexlet)
  3. Рекомендуемые книги

Микрофреймворки

  1. Самостоятельная работа
    1. Инициация проекта: composer init
    2. Установка зависимости: composer require slim/slim “^3.0”
    3. Редактирование в исполняемом файле (в данном случае index.php) пути к autoload.php: require ‘../vendor/autoload.php’;

Шаблонизация

  1. XSS атака
  2. Рабочий пример шаблона здесь

СУБД

  1. Поиск установки postgresql: postgresql install ubuntu
  2. Варианты доступа к базе данных
    1. REPL (через командную строку)
      Примеры:
      SELECT * FROM ads; — выбрать все записи
      SELECT title FROM ads WHERE id = 4; — выбрать title для записи с id равным 4
      SELECT telephone FROM ads ORDER BY id DESC; — выбрать все телефоны отсортировав их по полю id в обратном порядке
      INSERT INTO ads (telephone, title) VALUES (“392503”, “Куплю слона”); — вставить в таблицу ads новую запись
      DELETE FROM ads WHERE id = 5; — удалить запись с id равным 5
    2. Подключение через драйвер
      PHP библиотека PDO – набор драйверов для подключения к базам данных
      Пример:
      // PDO Connection to MySQL
      $conn = new PDO(‘mysql:host=localhost;dbname=yourdbname’, ‘username’, ‘password’); // PDO Connection to PostgreSQL
      $conn = new PDO(‘pgsql:host=localhost;dbname=yourdbname’, ‘username’, ‘password’); // A quick Select Query with For Loop
      $result = $conn->query(“SELECT * FROM profile”); foreach ($result as $row) { echo $row[‘id’]; echo $row[‘title’]; echo $row[‘telephone’]; }
    3. SQL – structured query language
    4. Базовые знания
      1. Базы данных. Необходимо уметь устанавливать и настраивать их. Настройка включает в себя оперирование сокетами (в том числе сетевыми), управление пользователями и многими другими вещами (опять знание операционных систем).
      2. Необходимо знать SQL, что включает в себя и основы теории множеств.
      3. Понятия нормализации и денормализации.
      4. Нормальные формы.
      5. Ключи и индексы.
      6. Сериализация и десериализация.
      7. Идемпотентность.
      8. Fluent Interface.
      9. Итератор.
      10. Безопасность: Экранирование, SQL Injection.

ORM

  1. Онтология предметной области
  2. ORM – object-relation mapper
  3. Контекст темы
    1. Entity-relation model
    2. Domain-driven design
    3. ActiveRecord/DataMapper
    4. Identity map/Unit of Work/Dirty
    5. Миграции
    6. Валидация
    7. Метапрограммирование

MVC

  1. Онтология предметной области
  2. MVC – Model-View-Controller
  • M — ядро приложения. В идеале — чистая бизнес-логика. M не знает ничего о других частях приложения и не может на них влиять.
  • C – использует M для выполнения запрашиваемых операций и отвечает за генерацию V.
  • V – получает данные от C и иногда от M, но такое не приветствуется. И уж точно V не должен знать ничего о базе данных. Кстати, этим грешат начинающие разработчики, которые выполняют SQL запросы прямо из шаблонов.

Тесты

  1. Статья
  2. Экстремальное программирование
  3. Список практик
    1. Тестирование
    2. Игра в планирование
    3. Заказчик всегда рядом
    4. Парное программирование
    5. Непрерывная интеграция
    6. Рефакторинг
    7. Частые небольшие релизы
    8. Простота проектирования
    9. Метафора системы
    10. Стандарты оформления кода

Коллекции

  1. Функция высшего порядка для работы с коллекциями

Другое

  1. Список связанных тем
    1. Аутентификация и авторизация (ACL)
    2. OAuth
    3. Валидация
    4. Jobs
    5. Нотификации
    6. Фронтенд ( сборщиками (webpack) и фреймворками (react))
    7. Инфраструктура ( AnsibleTerraformDocker, Docker Compose)
    8. Эксплуатация ( DataDog и Rollbar )

Фреймворки

  1. Самые распостраненные (на 09/2019): Symfony, Laravel и Yii
  2. Список возможностей:
    1. Генерация кода. Любой полноценный фреймворк содержит утилиту cli, позволяющую генерировать код, например, тесты или миграции.
    2. Встроенные механизмы для тестирования. Другими словами, фреймворк даёт возможность начать писать тесты практически без необходимости что либо дополнительное ставить или конфигурировать.
    3. ORM. Либо своя, либо популярная для языка в целом.
    4. Шаблонизатор и хелперы (вспомогательные функции) для повторяющихся задач вывода информации.
      Абстракции для работы с письмами.
    5. Инструменты для интернационализации и локализации. Причём, в идеале, чтобы все остальные части фреймворка также были интегрированы с i18n.
    6. Механизмы, обеспечивающие безопасность, например, CQRS.
    7. Интеграция с frontend инструментами.
    8. Кеширование.