Люди начинают понимать потенциал WordPress в качестве основы приложения, а не просто системы управления контентом или платформы для ведения блогов, и эта серия посвящена тому, как WordPress можно использовать для таких проектов.
Одна из самых важных вещей, на которые стоит обратить внимание, заключается в том, что WordPress не является окончательным решением для создания веб-приложений. На самом деле, я не думаю, что какое-либо основание или структура должны быть окончательным решением.
Вместо этого у нас есть несколько различных вариантов, каждый из которых подходит для лучших ситуаций, чем другие, и WordPress ничем не отличается. На протяжении всей этой серии мы продолжим рассмотрение того, как веб-приложения можно создавать с помощью WordPress, и какие ситуации лучше всего подойдут для фундамента. Тем не менее, мы должны продолжить наше обсуждение того, как работает WordPress, чтобы мы могли начать говорить о том, как создавать приложения на его основе.
В предыдущей статье мы обсуждали, сколько фреймворков предлагают MVC-подход к разработке, но мы также смотрели на управляемую событиями модель WordPress. В этом посте мы подробнее рассмотрим парадигму, основанную на событиях, которую использует WordPress, и почему это важно.
Правда в том, что многие люди знакомы с этой парадигмой, они просто не знакомы с соглашениями об именах. К концу этой статьи у нас должно быть четкое понимание того, что такое программирование, управляемое событиями, как оно работает, как оно реализовано в WordPress и как мы должны думать об этом, исходя из других шаблонов, таких как Model-View -Controller.
Событийное программирование
В последнем посте мы суммировали программирование на основе событий со следующей идеей:
Вместо этого программирование на основе событий работает исходя из того, что «что-то произошло». Отсюда и название действий в жаргоне WordPress (конечно, у нас также есть фильтры, но я кратко расскажу о них).
И это хорошо для рабочего определения событий, особенно на высоком уровне. Однако, если вы хотите более подробно взглянуть на то, как это выглядит с практической точки зрения — то есть с точки зрения того, как WordPress реализует это, — возможно, лучшее, что вы можете сделать, это понять события .
Но даже более того, важно понимать жизненный цикл страницы WordPress, где происходят события и как мы, как разработчики, можем подключиться к ним для выполнения определенной задачи.
Понимание событий
Как мы уже упоминали, в программировании, управляемом событиями, идея событий заключается просто в том, что что- то произошло . Мы продолжаем повторять это, но что это действительно означает?
В контексте загрузки одной страницы происходит ряд вещей:
- JavaScript и таблицы стилей получены
- Запросы выполняются к базе данных для получения данных
- Информация из базы данных отображается в контексте разметки
- Страница представлена пользователю
- …и так далее
Все это можно считать событиями, но каждое из них состоит из своего собственного набора более мелких событий, то есть вы можете получить действительно подробную информацию о том, когда что-то происходит.
Возьмем, к примеру, идею рендеринга типичного публичного запроса для страницы на платформе WordPress. Если вы посмотрите на связанный документ Кодекса , вы заметите, что происходит примерно 50 действий, и это не включает в себя действия, относящиеся к публикации или странице.
Каждое из этих действий можно считать событием, и в мире программирования, управляемого событиями, события обычно раскрываются таким образом, что они позволяют нам подключаться к ним и манипулировать информацией до ее передачи клиенту.
Отсюда и название крючков.
Конечно, в WordPress хуки бывают двух видов: действия и фильтры. Несмотря на то, что эта серия статей не посвящена твердому учебнику по каждому из них, важно признать разницу в них, связанную с работой с WordPress.
действия
Действия — это тип перехвата, который означает, что что-то произошло, и когда это происходит, у нас есть возможность зарегистрировать нашу собственную функциональность, чтобы мы могли внедрить наш собственный код (или даже предотвратить определенные вещи).
Как я резюмировал в своей серии «Действия и фильтры» :
Действия — это события в жизненном цикле страницы WordPress, когда происходят определенные вещи — определенные ресурсы загружены, определенные средства доступны, и, в зависимости от того, как рано произошло действие, некоторые вещи еще не загружены.
Важно понимать доступные действия, чтобы вы знали, когда лучше всего подключаться к данному событию, чтобы не мешать работе страницы, потенциально искажать другие данные, поступающие в нисходящем направлении, или чтобы вы были правильно обработка информации в нужное время и в нужном месте.
фильтры
Фильтры, с другой стороны, тип ловушки, которая позволяет нам получать определенный фрагмент данных, манипулировать им, а затем возвращать его обратно в WordPress, прежде чем отображать его в браузере.
Например, если вы посмотрите на фильтр the_content
, то вы заметите, что если вы подключите функцию к этому конкретному действию, ваша функция получит содержимое. Это означает, что вы сможете манипулировать контентом, вставляя в него информацию, удаляя из него информацию или что-то подобное, прежде чем передать его обратно в WordPress для рендеринга в браузер.
Аналогично, я суммировал фильтры в своей серии «Действия» и «Фильтры» следующим образом:
Фильтры — это функции, через которые WordPress передает данные в определенные моменты жизненного цикла страницы. Они в первую очередь отвечают за перехват, управление и возврат данных перед их отображением в браузере или сохранением данных из браузера в базу данных.
Итак, с учетом всего сказанного, действия и фильтры — это оба типа событий, происходящих в жизненном цикле WordPress, которые позволяют нам подключаться к ним и вставлять наш собственный код для выполнения до его отображения в браузере.
Короче говоря, термин «крючки» является общим термином, который относится как к действиям, так и к фильтрам, каждый из которых служит своей цели.
Аналог MVC?
Теперь, одна из наиболее распространенных вещей, которые я видел от людей, происходящих из разных областей, таких как Rails, CakePHP, ASP.NET или других сред MVC, — как сопоставить их концептуальную модель MVC с событиями. управляемая модель WordPress.
Под этим я подразумеваю, что они пытаются найти аналогии с моделями, представлениями и контроллерами в управляемой событиями парадигме. Например, некоторые могут попытаться сделать следующее:
- «Если представления предназначены для демонстрации данных, то, безусловно, это то, для чего нужны шаблоны в WordPress». Да, в некоторой степени, но шаблоны также подвержены влиянию различных хуков, и они вызывают определенные функции.
- «Если для управления данными между базой данных и представлениями используются хуки , то они похожи на контроллеры». Вроде того, но они также могут представлять специфичную для данных логику, аналогичную модели, и их также можно использовать просто в качестве помощников для форматирования информации, которая больше похожа на помощников, чем на реальные контроллеры.
- «Но если шаблоны или представления могут вызывать контроллеры или хуки, то где же это оставить модель?» Точно, вы можете рационализировать сходства сколько угодно, и вы можете рационализировать некоторые хорошие, но правда в том, что WordPress не MVC.
В связи с этим я настоятельно рекомендую стараться не думать о WordPress в контексте другого паттерна. У него свой шаблон. Думайте об этом в этих терминах.
Дело не в модернизации!
Короче говоря, переход на WordPress из другой среды, в которой используется другой шаблон проектирования или другая парадигма, это хорошо, но речь идет не о том, чтобы WordPress соответствовал вашему предыдущему опыту.
Вы не можете переоборудовать один шаблон проектирования в другой и ожидать качественных результатов.
Программное обеспечение не работает так.
Вместо этого, так же, как вы делаете с другими платформами, вы должны думать о том, как работает WordPress, чтобы правильно строить вещи на и для WordPress. Позже в этой серии статей мы рассмотрим, почему WordPress делает надежный вариант для веб-приложений, но перед этим я думаю, что важно понять шаблон, который реализует WordPress, и как наилучшим образом использовать его преимущества.
Практические примеры событий
В следующем посте мы рассмотрим несколько примеров того, как мы можем подключиться к событиям, предоставляемым WordPress. Они будут очень вводными, и большинство опытных разработчиков WordPress, вероятно, уже знают многих из них; однако, он предоставит солидный набор примеров того, как действия и фильтры — и, следовательно, события — работают в WordPress.
После этого мы продолжим наше обсуждение возможностей и возможностей, которые WordPress предлагает для создания веб-приложений.