Планируем что поделать на втором занятии по PHP.
Насколько правильно и клево написан код WordPress Plugin Boilerplate?
Например, в файле class-plugin-name-loader.php
видно, что сначала описываются просто переменные, а в методе __contruct()
они заполняются данными.
Также в class-plugin-name.php#L151
версия и название плагина передается в другой класс, где они сохраняются еще раз - мне кажется это не надо делать или могут быть причины для такой конструкции?
Пара моих простейших плагинов — bbPress Permalinks with ID и Mark User as Spammer. Качество кода, стилистика, может быть есть грубые ошибки или что-то в этом роде?
Начал делать плагин-адаптацию сервиса Recaptcha от Google и застрял. Кучу классов сделал, пытаясь раскидать по ним функционал, но, похоже, сам и запутался. Вопрос: насколько адекватно я стал раскидывать функционал и как вообще правильно разбить вот такое маленькое «приложение» на базовые составляющие (подробнее см. дальше).
Плагин реализует использование сервиса Recaptcha от Google (блок с картинкой, для защиты от спама). Составляющие части плагина:
- Страница настроек («схема» того, что из себя представляют настройки в WordPress).
- Класс с методами для взаимодействия с API Google.
- Класс для вывода формочки капчи в любом месте сайта.
- Класс, который по умолчанию прикручивает все выше описанное для формы регистрации в WordPress.
Что значит вот такая конструкция (оригинал)? Какие-то хитрые аргументы передаются.
public function __construct(Workshop $workShop1, Workshop $workShop2) {
parent::__construct($workShop1, $workShop2);
}
Что такое namespaces
? Стоит ли их использовать и как?
Как удалять классы? Просто удалить класс я так понимаю нельзя, но экземпляр класса? unset()
, видимо, не то, что надо. А если удалять переменную, в которую «клалось» нечто new ClassName
, то мы удаляем лишь указатель.
На сайте Симфонии написано, что Джумла написана на этом фреймворке. Как это понимать? :)
На чем запускать проекты локально? Есть ли какие-то заготовки для Vagrant (эта же тема затрагивается ниже)?
Взять любой фреймворк и сделать на нем простенький сайтик на одну-две страницы. В процессе должны увидеть и столкнуться:
- Как красиво и «правильно» начинать репозиторий (я, в принципе, это умею делать, но хочется посмотреть как делать «правильно», может о чем-то не знаю или что-то делаю не правильно, не видел как кто-то другой пользовался репозиториями).
- Запустим Vagrant или что-то другое. Наверняка есть готовые образы для разработки на разных фреймворках, чтобы не тратить полнедели на настройку веб-сервера. Например, для WordPress есть VVV с огромным списком предустановленного софта необходимого для разработки под WP.
- Не будем скачивать zip-чики, а с помощью Composer сложим мозайку.
- Сделаем простую страничку, на которой можно оставить свой адрес эл. почты. И здесь мы столкнемся с некоторыми интересными вещами, которые доставляют много боли, если делать это с помощью «flat php» (без фреймворков и тупо функциями в лоб).
1. Создание форм на страницах. А что если таких одинаковых форм надо 10 штук на странице? А если еще и AJAX прикрутить понадобится (у каждой формы должен быть свой
ID
или что-то такое)? 2. Прикручиваение CSS-фреймворков к PHP-фрейморкам. Взять, к примеру, Boostrap и добавить к нашей формочке пару классов, чтобы красивее было. 3. Прием данных на сервере и обработка. 4. Вывод пользовательских данных. Фильтрация, XSS. 5. Для упрощения урока результат (адрес эл. почты) можно записывать в файл на диске, если база данных это слишком. 6. Обработка несуществующих страниц (404). 7. Одновременное добавление данных в один файл (БД). Что-то нужно сделать, чтобы наше приложение не падало, если файла нет, если файл открыт и занят другим процессом (записывается адрес от другого посетителя сайта) и т. п.