Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress Plugins
Code

Объектно-ориентированная автозагрузка в WordPress, часть 3

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Object-Oriented Autoloading in WordPress.
Object-Oriented Autoloading in WordPress, Part 2

Russian (Pусский) translation by Yuri Yuriev (you can also view the original English article)

In the last tutorial мы исследовали исходное состояние нашего автозагрузчика и прошли процесс object-oriented анализа и дизайна. Теперь наша цель в том, чтобы связать вместе всё, что мы охватили в этом и предыдущих курсах.

Во-вторых, целью наших действий на этом занятии будет то, что мы проведём много времени, прохаживаясь по классам, разглядывая, как скреплены их составные части, внедряя их в плагин и наблюдая за применением object-oriented программирования и за тем, как правило единой ответственности приводит к более точному, удобному решению.

Прежде, чем приступим

Полагаю, что вы в курсе темы нашего обучения. Если нет, будьте добры изучить первую и вторую части. Тогда вы сможете следовать дальше.

Если вы новичок, рекомендую прочитать the initial series полностью, чего уж. Когда будете готовы, то окажетесь в нужной позиции для завершения курса, где в этом уроке мы делаем заключительную правку исходного кода.

Чем мы займёмся дальше

Суммируя сказанное и для пущей уверенности, что мы все на одной странице, смотрите, что мы сделали:

  • пересмотрели определения класса интерфейса
  • увидели, как класс реализует интерфейс
  • пересмотрели принцип единой ответственности
  • анализировали существующий автозагрузчик
  • задали направление для нашей object-oriented версии автозагрузчика
  • и сделали дизайн базовой реализации для object-oriented версии автозагрузчика

На данный момент мы готовы к обмену существующего автозагрузчика на object-oriented исходный код. Однако, обратите внимание, что это будет не просто вопрос изменения файлов.

Что мы хотим делать

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

На слух кажется, что будет много работы, но если анализ и дизайн предыдущего урока сделаны правильно и аккуратно, мы легко сделаем всё перечисленное.

Ваша среда разработки

Прежде, чем заняться реализацией планов, предлагаю краткий обзор необходимого вам инструментария. В техническом смысле, это то же самое, чем вы пользовались на протяжении прежних уроков, но я хочу убедиться в полной комплектности.

  • локальный сервер, совместимый с вашей ОС
  • каталог, из которого размещается WordPress 4.6.1
  • текстовый редактор или IDE
  • понимание WordPress Plugin API

Теперь можно начинать.

Объектно-ориентированная реализация

В этой части мы вернёмся к коду, который исследовали в предыдущем уроке; рассмотрим каждый файл по отдельности вместе со всей документацией.

В итоге мы включим его в свой проект, так что в конце урока сможем использовать вместо процедурного кода, который применялся ранее.

Обратите внимание, что каждый следующий файл должен быть поименован по списку и иметь inc директорию. Кроме того, они доступны к загрузке по синей кнопке на боковой панели.

class-autoloader.php

class-namespace-validator.php

class-file-investigator.php

class-file-registry.php

Включение файлов, запуск автозагрузчика

Теперь, когда у нас есть созданные файлы, сделаем два небольших изменения:

  1. Нам нужно включить все классы в папку inc.
  2. Мы должны избавиться от старого кода автозагрузчика.
  3. Надо начать пользоваться новым автозагрузчиком через spl_autoload_register функцию.

В итоге, конечная версия autoload.php будет выглядеть так:

И он будет выполнять точно то, что мы обрисовали выше.

Но подождите, я получил сообщение об ошибке!

Проделано уже много работы. Вы улучшили структуру исходного автозагрузчика под использование object-oriented программирования. Вы документировали свои классы и функции. Вы создали новые файлы, удалили код из старых файлов и приготовились убедиться, что всё сделанное удалось.

Так, как и все разработчики, вы обратились к браузеру и обновили страницу, только затем, чтобы увидеть сообщение об ошибке:

Undefined function error message

К счастью, это легко исправить. Проблема в том, что мы попытались добавить наш метабокс слишком рано. Чтобы исправить ошибку, обновим init метод в Meta_Box для включения этого:

И тогда введём функцию, которая подцепится к работе, которую мы только что сделали:

Вот теперь вы сможете исполнить новый код безо всяких проблем, предупреждений, без уведомления и без ошибок.

Заключение

Выполняя работу, могло показаться, что её очень много — так и было! Но хорошая новость в том, что она охватила большую территорию, размером в три урока и построена на трудах из предыдущей серии. В этом смысле было пройдено много новых тем и изучены новые техники.

Не забывайте, что я регулярно пишу для Envato Tuts+ и вы можете найти все мои прежние курсы на my profile page. Кроме того, я часто обсуждаю развитие софта для WordPress на моём блоге и на Twitter, так что заходите туда свободно.

На этом - изучайте код, написанный нами в курсе (возможно, один из наиболее важных) и смотрите, как использовать новые техники в вашей сегодняшней или будущей работе.

Ресурсы

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.