PHP micro-frameworks (PHP микрофреймворки)

PHP микрофреймворки

PHP микрофреймворки

Недавно выступал с докладом «PHP micro-frameworks«. Вот ссылка на саму презентацию. А текст к каждому слайду публикую ниже. Текст писал для себя, поэтому на самом докладе объяснений вышло больше, чем в тексте.

Чтобы не потерять смысл, соверую в параллельной вкладке открыть презентацию, а здесь читать текст к каждому слайду (embed code не стал вставлять, чтобы не раздувать страницу).

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


1) Здесь было вступительное слово.

2) За несколько последних лет в PHP стеке было проделано огромное количество работы, сделанной огромным количеством умных людей. И всё это превратилось в сложные и многословные решения. Решения, которые состоят из кучи файлов, кучи вложенных директорий и кучи правил. Очень часто мы можем видеть PHP-библиотеки/компоненты, которые выглядят примерно вот так (см. слайд).

3) Что такое фреймворк примерно все представляют? Давайте попробуем определить что такое “микрофреймворк”. Не сложно догадаться, что это что-то поменьше, чем просто фреймворк. Так вот, микрофреймворк – это «каркас» приложения, включающий в себя как правило какие-то роутеры и типовые задачи, которые уже решены. Ключевая часть слова здесь – «микро«. Очень облегченный, очень маленький, очень быстрый инструмент.

4) Допустим у нас стоит очень простая задача: создать сайт-визитку компании, которая занимается производством бумаги. Это типичные страницы: главная, о нас, контакты, отзывы клиентов и тому подобные. Начинаем думать на чем реализовать и в этот момент мы понимаем, что WordPress – это не кошерно, т. к. мы крутые ребята. Брать какой-нибудь Zend Framework, чтобы сделать эти пару страниц и пару форм, тоже не хочется — слишком громоздкое решение. Собственно говоря, чтобы не писать ничего с нуля в данном случае, можно взять любой из доступных микрофреймворков.

5) От простого (сайта-визитки) до вещей посложнее. Допустим у нас стоит не очень простая задача: нужно разработать какую-то сложную систему. И, допустим, многие узлы должны быть показаны заказчику перед тем, как начнётся их разработка.

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

6) Идём дальше. Допустим, нам нужно реализовать небольшой веб-сервис для приложений на Android и iOS. Это будет своего рода CRUD — система для манипуляции с данными. Микрофреймворки — это лучшее решение в данном случае. Почему — об этом поговорим чуть позже.

7) Микроферймворки — очень хороший инструмент, когда перед вами стоит задача написать какой-то мэйлер или возможно какой-то другой промежуточный компонент системы.

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

9) Известный разработчик Ed Finkler, Lead Developer в GraphStory (Enterprise Graph Databases in the Cloud) в свое время придумал манифест для работы с микрофреймворками. Этот манифест спокойно можно использовать как путеводитель в вашей PHP-разработке. Возможно, вы тоже найдёте для себя в этом что-нибудь полезное.

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

10) Как правило для работы нужен PHP >= 5.3, чтобы работать с кодогенераторами, пространствами имён и анонимными функциями.

11) Давайте вернёмся к начинке микрофреймворков. Что они включают в себя роутинг я уже сказал ранее. Что ещё? Внутри есть, как правило, ещё базовая реализация MVC (модели, контроллеры), обработка HTTP-запросов, обработка ошибок. Это, в основном, самый минимум, который необходим, чтобы быстро запустить ваше приложение.

12) Существует много микрофреймворков. Может показаться, что их даже больше, чем обычных фреймворков. На этом слайде жирным я выделил самые популярные. Это Lumen, Silex, Slim и Phalcon. Предлагаю более детально рассмотреть некоторые из них. Я решил выбрать два: Lumen и Silex. Lumen — потому что он самый “молодой” из всех представленных, а Silex — потому что я лично с ним работал.

Хорошо, давайте разберёмся с каждым из них.

13) Lumen — это очень быстрый micro RESTful framework, созданный разработчиками Laravel. По сравнению с другими микрофреймворками из предыдущего списка, Lumen — это достаточно молодой микрофреймворк, разработанный для сверх-быстрых микро-сервисов и APIs.

Почему он так называется — «Lumen»? Потому что компоненты Laravel, как известно, носят название Illuminate.

Размер чистого фреймворка на диске — что-то около 10 МБ. Не такой уж он и маленький. Из плюсов можно выделить: хорошая документация, он быстрее 90% других микрофреймворков, простой синтаксис для понимания.

14) Микрофреймворк появился в прошлом году. Создатель — разработчик широко известного и, наверное, наиболее популярного в западном мире фреймворка LaravelTaylor Otwell.

15) Здесь я собрал небольшую статистику по тому, сколько звёздочек у микрофреймворка на GitHub, сколько вопросов на Stackoverflow и какая статистика на packagist, чтобы показать есть ли интерес к данному инструменту.

16) Внутри — компоненты Laravel 5. Модели Eloquent, авторизация Auth, шаблоны Blade, а также валидация, кэш, middleware, DIC и прочее.

Роутинг основан на библиотеке FastRoute, что позволяет ему быть довольно шустрым.

17) Пример кода на Lumen. Так может выглядеть файл, в котором реализован несложный механизм роутинга. Обратите внимание на строку 5 — правила можно группировать. Интересным также является второй параметр в каждом методе — это вызов определённого экшена определенного контроллера, который отвечает за конкретное правило роутинга. Сейчас посмотрим как это реализовано на примере.

18) Слева представлена типичная модель, справа — контроллер. В модели ничего особенно — идёт просто перечисление полей в таблице book. Давайте посмотрим на контроллер. Помните второй параметр с предыдущего слайда? Посмотрите как реализован метод index. Именно этот экшен отвечает за обработку GET-запроса /api/v1/book.

В остальных методах нет ничего особенного или сложного. Вся та же работа с ORM, все тот же json response.

19) Silex. Созданный в известной в РНР кругах Sensio Labs. Silex — возможно самый лучший и самый популярный PHP micro-framework. Его связь с Symfony гарантирует стабильную имплементацию с множеством доступных ресурсов. Вы можете спокойно подключить тот бандл, который вам нужен для вашего проекта.

Разработчики взяли большой взрослый фреймворк, убрали оттуда все лишнее, оставили возможность интеграции с компонентами Symfony. Получилась очень маленькая и удобная вещь. Кстати, Silex можно спокойно использовать и для больших проектов. Плюс для разработчиков на Symfony это оказалось хорошим решением, потому что им не надо переучиваться. А как мы знаем, Symfony – достаточно популярный продукт.

20) Появился в 2011 году. “Silex” с английского переводится как “кремнезём”.

21) Тоже небольшой обзор статистики с github, packagist и stackoverflow.

22) Silex имеет хорошую систему расширений, которая базируется на DIC Pimple. На слайде представлен список встроенных сервис-провайдеров, которые доступны в Silex. Например, в качестве шаблонизатора используется Twig — тоже разработка Sensio Labs, а в качестве ORM — популярная Doctrine. Для работы с письмами есть втроенный Swiftmailer.

23) Пример кода. Здесь показан самый простой вариант использования входного скрипта на Silex. По сравнению с Lumen, в роутинге есть отличия.

24) Здесь показан пример возвращаемого результата анонимной функцией — это рендинг результата в twig-файл. А также возможность использовать несколько типов запросов в одном экшэне, используя match. В данном примере метод может обрабатывать как GET, так и POST запросы.

25) Ну и пример того, как можно работать с ошибками.

26) Небольшой пример кода на Slim. Очень напоминает Silex. (На самом докладе я немного детально рассказал о Slim 3-й версии. Почему на неё стоит обратить внимание — можете посмотреть в интернете).

27) И пример кода на Phalcon. Тоже примерно всё тоже самое. (На самом докладе я немного детально рассказал о Phalcon, т. к. это самый быстрый фреймворк для PHP. Почему это так — можете посмотреть в интернете).

28) Как всегда, много всего, но что выбрать непонятно.

Во-первых, если верить тестам, то по скорости среди микрофреймворков тройка лидеров расположена следующим образом: Lumen, Slim, Silex. Однако, я встречал тесты обычных людей, у которых результаты были несколько другими и Lumen уступал Slim. Поэтому здесь точно сказать что либо трудно.

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

Поэтому, выбор остаётся за вами.

29) Кстати, микрофреймворки есть также и для тестирования. Здесь в качестве примера я выбрал Testify.php — micro unit testing framework. В том же PHPUnit, скорее всего, мы используем только часть всего возможного функционала и возможностей. Testify.php предлагает в своем составе только самый необходимый набор функционала для быстрого unit тестинга.

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

30) Здесь было прощание и вопросы. Кстати, презентация также доступна по ссылке, указанной на слайде.

PHP micro-frameworks (PHP микрофреймворки)
5 votes, 4.20 avg. rating (86% score)

12 thoughts on “PHP micro-frameworks (PHP микрофреймворки)

  1. Привет Бодя. Крутая статья получилась, было очень интересно почитать =)

  2. Пройдите 1 регистрацию, сделайте 2 действия
    и получайте от 8950 рублей каждые сутки в автоматическом режиме.

    Мы гарантируем:
    — Первый заработок в течении 60 минут.
    — Стабильный доход 24 часа в сутки.
    — Поступление денег без задержек.
    — Для России, стран СНГ и Европы.
    — Без вложений и установки ПО.
    — Специально для новичков и людей без опыта.

    Более подробная информация у нас на сайте. ( http://www.prosto.zarplatt.ru )

  3. Пройдите 1 регистрацию, сделайте 2 действия
    и получайте от 8950 рублей каждые сутки в автоматическом режиме.

    Мы гарантируем:
    — Первый заработок в течении 60 минут.
    — Стабильный доход 24 часа в сутки.
    — Поступление денег без задержек.
    — Для России, стран СНГ и Европы.
    — Без вложений и установки ПО.
    — Специально для новичков и людей без опыта.

    Ознакомтесь с условиями у нас на сайте. ( http://prosto.zarplatt.ru/ )

  4. Опубликовано видео, в котором демонстрируется «объективность» наблюдателей миссии ОБСЕ в Донбассе.
    Лучше всего о результатах работы миссии сказал один из местных жителей, чей разговор с наблюдателем попал на видео.
    «Вы ездите туда-сюда, смотрите, а смысл какой?», — задал он риторический вопрос.

    Источник http://top-n.ru/vse-novosti-dnya/politika/5159-vsya-pravda-o-rabote-obse-na-donbasse-video.html

  5. Blogging tidaklah lengkap tanpa pengunjung. Tentu anda sendiri dapat meningkatkan traffic blog anda, banyaknya pengunjung yang datang ke blog anda, namun jika dengan aktifitas blogging yang biasa, anda tidak akan mendatangkan banyak traffic. Artikel ini akan menjelaskan secara garis besar, 6 langkah yang bisa anda gunakan untuk mendapatkan traffic untuk blog anda.1. Buatlah artikel yang baru dan berkualitas secara rutin. Hal ini akan mendatangkan dua keuntungan. Keuntungan pertama yaitu pengunjung anda akan tertarik dengan artikel yang anda karena berkualitas, dan akan dikunjungi secara rutin, kedua banyaknya artikel dan keyword serta frase pada blog anda akan membuat blog anda mudah terindeks oleh mesin pencari. Hal ini juga dapat membuat penjualan online anda dan meningkatkan peringkat di mesin pencari.2. Optimalkan judul artikel/konten blog anda. Gunakan frase yang tepat agar mudah terindeks di mesin pencari. Karena pengunjung yang datang dari mesin pencari adalah mereka yang menggunakan frasa kalimat, maka cobalah untuk mengoptimalkan judul blog ini dengan frasa-frasa tertentu. Sehingga ranking di mesin pencari tetap tinggi karena frasa anda tepat pada saat orang mencari apa yang mereka cari. 6 Tips Untuk Meningkatkan Traffic Blog Anda

  6. , dan akan dikunjungi secara rutin, kedua banyaknya artikel dan keyword serta frase pada blog anda akan membuat blog anda mudah terindeks oleh mesin pencari. Hal ini juga dapat membuat penjualan online anda dan meningkatkan peringkat di mesin pencari.2. Optimalkan judul artikel/konten blog anda. Gunakan frase yang tepat agar mudah terindeks di mesin pencari. Karena pengunjung yang datang dari mesin pencari adalah mereka yang menggunakan frasa kalimat, maka cobalah untuk mengoptimalkan judul blog ini de

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *