Осваиваем Composer

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

А именно — начать использовать менеджер зависимостей для PHP — Composer. Он позволит нам легко устанавливать разные полезные вещи на сайт, обновлять их и даже удалять. Если вы уже работали с менеджером пакетов GNU/Linux — то вам всё это будет очень знакомо.

В качестве разминки, удалим Fenom из директории core и установим через Composer. Для этого нужно в корне сайта создать файл composer.json и прописать в нём требуемые пакеты (подробнее можно прочитать на Хабре):

{
	"require": {
		"php":">=5.3.0",
		"fenom/fenom": "2.*"
	}
}
Теперь нужно только скачать composer.phar и запустить его в корне сайта:
php composer.phar install
На modhost.pro и качать ничего не нужно — просто запускаем composer в директории:
composer install
И волшебным образом у нас появляется директория /vendor/ с установленным Fenom. Что же с ним делать дальше?

Читать дальше

Расширение и наследование шаблонов Fenom

На прошлом занятии мы подключили шаблонизатор Fenom к нашей системе и написали простенький шаблон.

Теперь пришло время написать уже нормальные шаблоны для страниц Home и Test, при этом они будут наследовать один общий шаблон Base, в котором будет генерироваться меню сайта.

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

Поэтому, в конце урока вам предлагается выбрать, как именно мы будем работать дальше. На всякий случай, вот как должен выглядеть наш сайт после этого урока — s1889.h3.modhost.pro.

Читать дальше

Подключаем шаблонизатор Fenom

Знаю-знаю, мы собирались работать на чистом PHP, безо всяких фреймворков, но о шаблонизаторах речи не было!

Если серьёзно, то я по всякому прикинул, как заставить наш простенький сайт выводить HTML, и не вписывать его в PHP, а хранить в шаблонах.
Варианта ровно два: написать собственный жуткий глючный велосипед, который будет читать шаблон и заменять в нём плейсхолдеры на значения через str_replace(), или подключить нормальный шаблонизатор.

Так как мы все тут от MODX люди не очень далёкие, так почему бы не освоить работу с Fenom, который в нём с некоторых пор доступен? Думаю, возражений не будет, так что поехали!

Читать дальше

Базовый контроллер и его методы

На прошлом занятии мы набросали основу нашего ядра, а сегодня нам предстоит воспользоваться преимуществами ООП и написать базовый контроллер, от которого будут наследоваться все остальные.

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

К тому же, чем меньше дублируется кода, тем больше гарантий, что этот код работает всегда одинаково. Отсюда следует простой вывод, что дублирования кода быть вообще не должно.
Если вы в двух местах пишете один и тот же метод — у вас проблема с логикой работы приложения.

Итак, приступаем.

Читать дальше

Основы ООП и контроллеры страниц

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

Ядро — это один основной класс, с общими для всех контроллеров методами. А контроллеры — это другие php классы, которые будут отвечать за функционал какого-то раздела сайта.

Контроллеры будут лежать в специальной директории, откуда их запустит основной класс. Запрос приходит на index.php, тот инициализирует основной класс и просит обработать запрос. Ядро определяет, к какому разделу сайта обращён запрос и загружает его контроллер, передавая ему все полномочия на генерацию ответа.

Дальше контроллер проверит параметры запроса и выдаст результат, или редирект на страницу с ошибкой. Позже мы научим наши контроллеры обрабатывать запросы и выдавать ответы через Ajax.

Логическая цепочка выходит такая: index.php -> Сore -> Controllers_Page.

Читать дальше

Вводное занятие

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

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

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

Люди, уже программирующие на PHP, из этих уроков ничего нового не вынесут (ну, может что-то и подсмотрят любопытное, но не факт), так что курс будет интересен исключительно новичкам. Я рассчитываю на то, что вы знаете только базовые функции PHP и умеете писать простейший спагетти-код, то есть PHP вперемешку с HTML и выводом через echo().

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

Первое занятие бесплатное, а дальше будет нужно купить доступ. Всё уже открыто бесплатно.

Читать дальше

Про работу

На данный момент неожиданно выполнил все запланированные работы и появилось свободное время.

Честно говоря, с непривычки, даже какой-то дискомфорт. Пару дней поиграл в Destiny, посмотрел кино и уже не знаю, чем заняться.

Может, организовать новые курсы (на какую тему)? Или написать какое-то новое дополнение (переписать старое), используя Fenom?

У кого есть идеи? Предлагайте!

Читать дальше

mxManager отправлен в AppStore

Вот, вроде бы, и закончилась эпопея длинною в полгода — разработка мобильного приложения mxManager для iOS.
Для сравнения, на это дело я потратил больше времени, чем на первые версии miniShop2 и Tickets вместе взятые.

Были исправлены все недоработки после тестирования бета-версии, ни одной ошибки заявлено не было. Последний штрих — экран блокировки, который защищает пароли ваших сайтов.

Приложение, в итоге, бесплатное. Но для возможности работы с несколькими сайтами вам придётся его разблокировать за 599 279 рублей. Из них лично мне пойдёт только 195, потому что комиссия Apple составляет 30%.

Читать дальше

Работа с ресурсами в mxManager

После четырёх месяцев упорной работы, весь базовый функционал моего приложения, который я запланировал, готов. Это:

  1. Работа с ресурсами, с базовой поддержкой ТВ и CRC.
  2. Работа со всеми элементами: шаблоны, чанки, сниппеты, плагины, категории.
  3. Лог событий сайта
  4. Журнал ошибок
  5. Очистка кэша
Вы сможете создавать, редактировать и удалять ресурсы и элементы, приложения вполне хватит, чтобы быстро исправить опечатку на ходу, или снять с публикации документ.

Первое видео — настройки соединения и структура сайта.
Второе видео — работа с элементами
Третье видео — работа с ресурсами:

Читать дальше

Wyrmwood, дорога мертвецов


Довольно давно стараюсь смотреть кино на языке оригинала с русскими субтитрами. От этого сплошная польза:

  • Слышишь игру оригинальных актёров, а не мастеров дубляжа.
  • Можешь смотреть фильмы сразу после западных релизов.
  • Учишься быстрее читать и соображать.
  • И даже начинаешь понимать английский на слух, понемногу.
Единственный минус — далеко не всегда есть русские субтитры, поэтому я начал понемногу смотреть английские. И после нескольких сеансов пришла идея — а почему бы не пробовать и самому что-то перевести?

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

Итак, встречайте: "Wyrmwood, дорога мертвецов".

Любопытный фильм про зомби в Австралии, который похож одновременно и на «Безумного Макса», и на «Зловещих мертвецов». Много юмора, стрельбы и километры прекрасного асфальта.

Бюджет копеечный, но снято энтузиастами искренне, от души.

Читать дальше