Download - архитектура крупных Word press сайтов
Архитектура крупных WordPress сайтов
Евгений КотельницкийХарьков 2014
Евгений Котельницкий
+YevhenKotelnytskyi
@yeeevhenhttp://4coder.info/me
План1. Наши цели
2. Сложность построения больших WP-сайтов
3. Пишем на одном языке
4. Обработка исключений и оповещения об ошибках
5. Модули и архитектура
a. О качестве архитектуры
b. Модули
c. Организация хуков
d. HTML-верстка
e. Статические компоненты
Наши целиЧто мы хотим от проекта?
● Простота поддержки
○ Низкий порог вхождения
○ Низкая себестоимость изменений
○ Минимум ошибок
● Отсутствие проблем с быстродействием
Сложность построения больших WP-сайтов
Сложность поддержки
● Как найти / исправить ошибку?
● Где реализован этот блок?
● Кто так пишет? (стиль написания кода)
● Кто так пишет? (архитектура)
● Я не трогал этот модуль, откуда ошибка?
● Как я перенесу “часть изменений”?
Сложность построения больших WP-сайтов
Быстродействие \ Back-end
● Запросы в PHP циклах
● Повторяющиеся операции
● Структура БД
● Неоптимизированные запросы
Сложность построения больших WP-сайтов
Быстродействие \ Front-end
● Большое количество медиа-файлов
● Растущий с прогрессией CSS
● Проблемы с JavaScript возникают редко
Пишем на одном языке с другими WP-разработчиками
Стандарты кодирования● PHP Coding Standards
● HTML Coding Standards
● CSS Coding Standards
● JavaScript Coding Standards
Пишем на одном языке с другими WP-разработчиками
Используем возможности WordPress
● “wp_remote_…” вместо cURL
● “wp_mail” вместо PHPMailer
● “dbDelta” вместо “SQL Create”
Отладка и оповещение об ошибкахОбработка исключений
Отладка и оповещение об ошибкахОповещения об ошибках
Построение архитектуры
О качестве архитектуры
Архитектура ПО - многоуровневая система абстракций.
Качество абстракции
● Зацепление
● Связность
● Полнота
● Достаточность
● Примитивность
Качество классов и объектов, Гради Буч
Построение архитектуры
Что дают нам Модули?
● “Упрощение”
● Повторное использование
● Бесконфликтная работа команды
Организация хуков
Проблемы
● Поиск реализации
● Очерёдность выполнения
● Конфликты хуков
Решение
“Декларативность” -
Добавим немного правил
HTML-верстка
● Отделяем HTML-шаблоны от PHP
● Не пишем в них JavaScript
● У каждого модуля свои шаблоны
Статические компонентыУ каждого модуля свои
Вопросы?
Спасибо!