Некоторое время назад был опубликован цикл статей, посвящённых разработке собственных плагинов для CMS WordPress.
Данный цикл рассматривает все основные вопросы, связанные с созданием плагина. Начиная с написания каркаса и заканчивая публикацией на WordPress.org. Однако в нём был приведён, если так можно сказать, «классический» подход к написанию плагина, основанный на функциях. В тоже время существует более современный. На основе объектно-ориентированного программирования (ООП).
Цель этой статьи – дополнить основной цикл и устранить указанный недостаток.
В качестве примера, перепишем созданный ранее плагин в соответствии с парадигмой ООП.
В результате получим следующий класс плагина:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php class TotalOldRevCleaner { public function admin_form() { $textRes=GetTextResource(); ?> <div class="wrap"> <h2>total-old-revisions-cleaner</h2> <hr /> <form method="post" onsubmit="if(!TRCIsCheck()){return false}" > <input id="TRC_checkbox" type="checkbox" name="clean" /> <label><?php echo $textRes->GetCaption(); ?></label> <br /> <?php wp_nonce_field( 'cleaning-action' ,'ca_nonce' ); ?> <input type="submit" name="ok" value="<?php echo $textRes->GetButtonText(); ?>" /> </form> </div> <?php }//Конец admin_form public function plugin_admin_menu() { add_options_page('total-old-revisions-cleaner', 'total-old-revisions-cleaner', 8, basename(__FILE__), array($this,'admin_form')); } public function add_plugin_admin_menu() { add_action('admin_menu', array($this,'plugin_admin_menu')); } } |
Для того чтобы придать плагину работоспособность просто создадим объект этого класса и вызовем его метод add_plugin_admin_menu.
1 2 |
$cleaner = new TotalOldRevCleaner(); $cleaner->add_plugin_admin_menu(); |
Из приведённого кода можно заметить два основных отличия от «классической» версии.
- Изменилась передача функций в стандартные функции API WordPress.
Так как эти функции теперь метода класса, их необходимо передавать через массив с указанием текущего объекта. Как, например, здесь:
1add_action('admin_menu', array($this,'plugin_admin_menu')); - При использовании объекта класса плагина используется только один открытый метод, несмотря на то, что таких методов несколько.
Последнее обусловлено архитектурой WordPress и PHP, но, в первую очередь, самой парадигмой ООП. Дело в том, что если метод класса передаётся в функции WordPress API, то к нему обязательно должен быть открытый доступ. В противном случае, функция API WordPress не сможет корректно отработать.
В остальном реализация плагина на основе ООП ничем не отличается от той, чтобы была основана на обычных функциях.
Какой подход выбрать? Это решает каждый разработчик самостоятельно в каждой конкретной ситуации.
С одной стороны ООП позволяет значительно оптимизировать работу плагина и сам процесс его создания. С другой стороны, если применять ООП необдуманно (например, просто «ООП ради ООП»), то можно добиться и противоположного эффекта.
Поэтому, применение ООП, как и любых других парадигм и методологий должно быть, прежде всего, обоснованным, а не следствием различных субъективных факторов.
Ссылки на предыдущие статьи цикла:
Добавить комментарий