Один год с Symfony
Один год с Symfony
Бесплатно!
Минимальная цена
$5.00
Рекомендуемая цена
Один год с Symfony

Эта книга является на 99%

Дата публикации 2017-12-01

О книге

Книгу "Один год с Symfony" написал разработчик из Голландии - Matthias Noback (http://php-and-symfony.matthiasnoback.nl/). Книга в английском варианте доступна на сайте leanpub - https://leanpub.com/a-year-with-symfony). Маттиас, по завершению работы над книгой, сделал её доступной бесплатно, так что вы можете не дожидаться окончания перевода и обратиться к первоисточнику.

Сам же я об этой книге я узнал случайно, из какой-то рассылки, как раз когда она стала бесплатной. Да, она про Symfony2 (на текущий момент еще и довольно ранних версий), но она описывает и более общие принципы разработки нежели просто версию одного фреймворка - такие как "тонкие" контроллеры, слабая связность компонент приложения, повторное использование кода, безопасность и т.д.

Если вы разрабатываете код на PHP - вам точно стоит прочитать эту книгу!

О авторах

Dmitry Bykadorov
Dmitry Bykadorov

In IT since end of 2001. Experienced in software project management, quality assurance, web development. Developing web-apps with PHP/Symfony, Python/Django|Flask, ASP.Net MVC | .Net Core, NodeJs Express|Sails, JavaScript|TypeScript, jQuery, Knockout, Angular 2, Vue, MySQL, PostgreSQL etc.

Matthias Noback
Matthias Noback

Matthias Noback has been building web applications since 2003. He is the author of A Year With Symfony, Principles of Package Design and Microservices for everyone. He is a regular speaker at conferences and regularly posts on his blog. While always striving for better programming practices in general, he’s taken a special interest in application architecture, Domain-Driven Design, testing, and application integration patterns.

Table of Contents

  • От переводчика
  • Предисловие
  • Введение
    • Благодарности
    • Кому предназначена эта книга
    • Соглашения
    • Обзор содержания книги
  • I От запроса до ответа
    • HttpKernelInterface
      • Загрузка ядра
        • Бандлы и расширения контейнера
        • Создание сервисного контейнера
      • От Kernel до HttpKernel
    • События, приводящие к ответу
      • Ранний ответ
        • Слушатели kernel.request, о которых вам нужно знать
      • Определение контроллера для запуска
      • Возможность замены контроллера
        • Примечательные слушатели события kernel.controller
      • Сбор аргументов для выполнения контроллера
      • Выполнение контроллера
      • Вход в слой представления (view)
        • Примечательные слушатели события kernel.view
      • Фильтрация ответа
        • Примечательные слушатели события kernel.response
    • Обработка исключений
      • Примечательные слушатели события kernel.exception
    • Подзапросы
      • Когда используются подзапросы?
  • II Приёмы внедрения зависимостей
    • Что такое бандл (bundle)
    • Приёмы создания сервисов
      • Обязательные зависимости
        • Обязательные параметры конструктора
          • Абстрактные определения для дополнительных аргументов
        • Вызов обязательных set-методов (setters)
          • Вызов методов в абстрактных сервисах
      • Необязательные (опциональные) зависимости
        • Необязательные аргументы конструктора
        • Необязательные вызовы set-методов
      • Коллекции сервисов
        • Вызов нескольких методов
        • Лучшее из двух миров
        • Метки сервисов (tags)
        • Вызов одного метода
        • Замена аргумента конструктора
        • Передаём ID сервисов вместо референсов
      • Делегирование создания
        • Не очень полезно…
        • Иногда всё-таки полезно…
      • Создание сервисов вручную
        • Определение
        • Аргументы
        • Таги
        • Алиасы (псевдонимы)
      • Класс Configuration
      • Динамическое добавление тагов
      • Используем паттерн Стратегия для загрузки сервисов
      • Загрузка и конфигурирование дополнительных сервисов
        • Подчищаем класс конфигурации
      • Конфигурируем сервис, который будем использовать
      • Полностью динамическое определение сервисов
    • Приёмы создания параметров
      • Файл parameters.yml
      • Определение и загрузка параметров
        • Параметры для имени класса
        • Сборка значений параметров вручную
      • Определяем параметры в расширениях контейнера
      • Переопределение параметров при помощи компилятора (compiler pass)
  • III Структура проекта
    • Организация слоёв приложения
      • Тонкие контроллеры
      • Обработчики форм
      • Доменные менеджеры
      • События
        • События уровня хранения (persistence)
    • Состояния и контекст
      • Контекст безопасности
      • Запрос
        • Избегаем зависимостей от текущего запроса
          • Используем слушатель (event listener)
          • Предоставлять объект запроса во время выполнения
          • Использование только нужных значений
  • IV Соглашения по конфигурированию
    • Настройка конфигурации приложения
      • Локальные конфигурационные файлы
        • Храните parameters.yml
        • Добавьте default_parameters.yml
    • Соглашения по конфигурированию
      • Маршрутизатор
        • Правила именования маршрутов
      • Сервисы
      • Метаданные Doctrine
  • V Безопасность
    • Введение
      • Symfony и безопасность
      • Цели: предотвращение и ограничение
        • Минимизация урона
        • Оценка мер по обеспечению безопасности
        • Перед тем как мы начнём…
    • Аутентификация и сессии
      • Инвалидация сессии
        • Угон сесии
        • Долгоиграющие сессии
    • Дизайн контроллеров
      • Защита действий в контроллерах
      • Размещение контроллеров за файрволлом
    • Валидация входных данных
      • Безопасные формы
        • HTML5-валидация
        • Ограничения валидатора
        • Формы без сущности
      • Валидация значений из запроса
        • Атрибуты запроса
          • Параметры маршрута
        • Query (GET) и request (POST) параметры
          • Используем ParamFetcher
      • Очистка HTML
        • Автоматизация очистки
    • Экранирование вывода
      • Twig
        • Контекст экранирования
        • Экранирование вывода функций
        • Экранирование аргументов функций
        • Опасности raw фильтра
    • Быть скрытным
      • Маскируйте ошибки аутентификации
      • Предотвращайте отображение исключений
      • Настройте страницы ошибок
      • Не сообщайте ничего определённого о конфиденциальных данных
  • VI Используем аннотации
    • Введение
    • Аннотация - это простой Объект-Значение (Value Object)
      • Добавляем аттрибуты к вашим аннотациям
        • Передача атрибутов через конструктор
        • Заполнение публичных свойств указанными атрибутами
        • Валидация при помощи @Attributes
        • Валидация при помощи аннотаций @var и @Required
      • Ограничения на использование аннотации
    • Когда стоит использовать аннотации
      • Загрузка конфигураций
      • Контроль процесса выполнения приложения
    • Используем аннотации в вашем Symfony-приложении
      • Реагируем на атрибуты запроса (Request): аннотация @Referrer
      • Предотвращаем выполнение контроллера: аннотация @RequiresCredits
      • Модифицируем ответ: аннотация @DownloadAs
    • Проектирование для повторого использования
    • Заключение
  • VII Быть Symfony разработчиком
    • Повторно используемый код должен иметь слабую связность
      • Разделяйте код копании от кода продукта
      • Разделяйте код на “библиотечный” и “бандловый”
      • Уменьшайте связность с фреймворком
        • Слушатели событий (listeners) вместо подписчиков (subscribers)
        • Аргументы конструктора вместо получения параметров из контейнера
        • Аргументы конструктора вместо получения сервисов из контейнера
        • О производительности
        • Контроллеры, не зависящие от фреймворка
        • Тонкие команды
        • Окружение
    • Повторно используемый код должен быть легко переносимым
      • Управление зависимостями и контроль версий
        • Репозитории пакетов
      • Жесткая привязка к хранилищу (базе данных)
        • Сущности с автоматическим сопоставлением (auto-mapped)
        • Модели, не привязанные к хранилищу
        • Менеджеры объектов
      • Жесткая привязка к файловой системе
        • Использование файловой системы
    • Повторно используемый код должен быть открыт для расширения
      • Настраиваемое поведение
      • Все должно быть заменяемым
        • Используйте интерфейсы
        • Используйте конфигурацию бандла для замены сервисов
      • Добавляйте точки расширения
        • Метки (таги) сервисов
        • События
    • Повторно используемый код должен быть лёгок в использовании
      • Добавьте документацию
      • Создавайте полезные исключения
        • Используйте специальные классы исключений
        • Указывайте детальные и понятные сообщения
    • Повторно используемый код должен быть надёжным
      • Добавляйте достаточное количество тестов
        • Тестируйте классы расширения и конфигурации вашего бандла
  • Заключение
    • Заключение от переводчика

Безусловная 100% гарантия счастья без риска от Leanpub

В течение 45 дней с момента покупки вы можете получить 100% возврат средств на любую покупку в Leanpub всего в два клика. Мы обрабатываем заявки на возврат средств вручную, так что этот процесс может занять несколько дней. Смотрите полные условия.

Пишите и публикуйте на Leanpub

Авторы и издатели используют Leanpub для публикации замечательных ещё незаконченных и уже завершенных книг, как эта. Вы можете использовать Leanpub для написания, публикации и продажи своей книги! Leanpub - мощная платформа для серьезных авторов, сочетающая простой, элегантный письменный и издательский процесс с магазином, ориентированным на продажу продвигаемых электронных книг. Leanpub - волшебная пишущая машинка для авторов: просто пишите в текстовом виде и опубликуйте свою книгу, просто нажимая кнопку. Это действительно проще простого.

Узнать подробнее о написании на Leanpub