Путеводитель по популярным PHP-фреймворкам для начинающих 

TL;DR Очередной лонгрид на 15-20 минут про то, что Symfony лучше Битрикса почти во всем.

Сервисы в Symfony: коротко, просто и понятно

19:50 | Symfony

Довольно просто и доступно о том, что из себя представляют сервисы и как они работают в Symfony 4 (по материалам symfonycasts).

OS: Ubuntu , Framework: Symfony 4.2.5

Итак, что такое сервис? На самом деле, за этим термином стоит довольно простая идея: сервис — это любой объект, который выполняет какую-то работу. Например, отправляет сообщения, сохраняет данные в базу, парсит RSS и т.д.

Как использовать сервисы? Просто внутри контроллера добавьте в метод дополнительный аргумент и дайте ему подсказку типа, например, LoggerInterface и назовите его как хотите, например $logger:

public function index(LoggerInterface $logger) { // do something $logger->info(‘Some message’); }

Как это работает? Перед тем, как запустить контроллер, Symfony проверяет каждый аргумент, смотрит на подсказку типа и понимает, что нам нужен тот или иной объект. И, кстати, порядок аргументов вовсе не важен.

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

bin/console debug:autowiring

Можно также выполнить поиск по ключевому слову:

bin/console debug:autowiring [<keyword>]

Ок, а что такое autowiring? Это автоматическое подключение, которое позволяет управлять сервисами с минимумом конфигурации. Речь об этом уже была выше — Symfony читает подсказку типа и передаёт нужный объект. Как насчёт пользовательского кода? Откройте файл config/ и обратите внимание на следующие строки:

services: # default configuration for services in *this* file _defaults: autowire: true # Automatically injects dependencies in your services. autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.

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

Стоп! Неужели вообще любой класс зарегистрирован как сервис? Вообще-то нет. Опять обратимся к файлу config/:

services: … # makes classes in src/ available to be used as services # this creates a service per class whose id is the fully-qualified class name App\: resource: ‘../src/*’ exclude: ‘../src/{DependencyInjection,Entity,Migrations,Tests,}’

Читайте также:  Как смотреть онлайн ТВ бесплатно – обзор популярных сайтов

Т.е. все классы в директории src, кроме тех, которые находятся в поддиректориях перечисленных в exclude, будут доступны как сервисы.

Откуда берутся объекты сервисов? Каждый сервис, хранится внутри другого объекта, который называется контейнером (также называемый сервис-контейнером или контейнером инъекции зависимостей). Важный момент: объект сервиса создаётся только тогда, когда Вы его запрашиваете. Если этого не происходит то и сервис не будет создан, что способствует экономии памяти и скорости. Кроме того сервис создаётся только один раз, т.е. каждый раз Symfony будет возвращать один и тот же экземпляр сервиса.

Но как сервисы попадают в контейнер, кто их туда кладёт? Ответ: бандлы. Бандлы подобны плагинам в других программном обеспечении. Ключевое отлие в том, что в Symfony всё является бандлами, включая как ядро фреймворка, так и код написанный для Вашего приложения.

И напоследок: Symfony — это не что иное, как набор сервисов. А бандлы — это то, что фактически готовит сервисы и помещает их в контейнер.

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

Успехов!

Сравниваем CMS, чистый код и фреймворк

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

  1. Можно написать требуемый исходный код с нуля. Главным преимуществом этого варианта, является его вариативность — практически никаких ограничений, можно реализовать любой задуманный функционал, потребуются лишь определенные умения. Главным минусом можно назвать трудоемкость процесса, временные затраты. Также придется приложить очень много усилий для тщательного тестирования полученного продукта — придется найти все его изъяны, чтобы создать идеальный веб-проект.
  2. Использование фреймворков. Существуют определенные ограничения, если проводить параллели с предыдущим способом. Существует основа, в которую нужно добавить определенное количество требуемых компонентов. Данный вариант является рентабельным только для тех, кто хоть немного разбирается в программировании — без определенного количества знаний выполнить поставленную задачу правильно практически невозможно. Для людей, которые не могут воспользоваться представленными способами, есть альтернативный вариант.
  3. Использование готовой CMS. Данный вариант является идеальным для людей, которые мало понимают в сегменте веб-разработки. Вы сможете оперативно создать сайт, соответствующий вашим требованиям. Есть возможность вносить необходимые коррективы через административную панель. Но данный подход не пользуется особой популярностью — главным минусом является огромное количество ограничений.

Исходя из сравнительных характеристик, можно понять, что именно фреймворк — «золотая середина» между написанием сложного кода и применением ограниченной по функционалу CMS. Вы получаете уже готовый каркас для своего проекта, при этом не теряя гибкости в плане функционала. Фреймворки разделяют по принадлежности к языку программирования, к которому они относятся.

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

HTML/CSS-фреймворки: их главные особенности

Bootstrap — этот фреймворк является невероятно популярным и востребованным, его представили еще в начале 2011 года. Адаптивность (адаптивная верстка) — его главное преимущество. Bootstrap позволяет создавать проекты с невероятно отзывчивым, стильным дизайном — проект будет автоматически подстраиваться, учитывая размер экрана компьютера или мобильного устройства пользователя, просматривающего сайт. К преимуществам относится: большое количество стилей, шаблонов, постраничный дизайн — это существенно облегчает создание сайта.

Bootstrap стал столь популярным из-за огромного количества достоинств, в нем практически отсутствуют недостатки. Это не только HTML/CSS-фреймворк, в Bootstrap также включены плагины и готовые стили JS/Jquery. Знание Bootstrap часто является одним из обязательных требований работодателей.Официальная страница

Сравниваем CMS, чистый код и фреймворк

Semantic UI — используется для создания переносимых интерфейсов. Данный фреймворк можно назвать достаточно молодым, однако стоит отметить его постоянное развитие. В нем можно найти огромное количество кнопок и других элементов, необходимых для работы — изображения, иконки, надписи.Официальная страница

Foundation — данный фреймворк является одним из популярных в сегменте front-end-фреймворков. Последние версии отличаются улучшенным функционалом для современных мобильных устройств. Благодаря семантическому подходу, есть возможность использования SCSS, написания более чистого кода в HTML. Данный фреймворк является идеальным для ситуации, когда нужно быстрое прототипирование.Официальная страница

Pure by Yahoo! — в данном фреймворке есть несколько небольших CSS-модулей, которые хорошо подойдут для любого современного проекта. Название фреймворка, характеризует его основную особенность — ничего лишнего, только необходимый, ничем не утяжеленный программный каркас, который прекрасно подойдет для создания сайта.Официальная страница

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

Symfony 2

Так же как и Yii, данный фреймворк может быть использован для создания любого проекта. Его можно назвать довольно большим и сложным для начинающих. Функциональные возможности Symfony соответствуют современным требованиям. Используется в обширных проектах. Drupal CMS также базируется на Symfony.

Читайте также:  Инструкция по работе с BotFather ботом

Установка

Для использования Symfony 2, должен быть установлен язык программирования PHP (версия 5.4 или выше). Вы можете использовать Composer и Symfony Installer для установки.

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

  1. Standard Edition устанавливается по умолчанию
  2. Hello World Edition предназначено для создания тестов
  3. Symfony CMF Standard Edition позволяет добавлять функциональность CMS
  4. Symfony REST Edition подходит для организации RESTful API сервера

Документация

По сравнению с Yii 2 и Laravel, руководство данного фреймворка показалось мне более сложным.

Гибкость

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

Фреймворк соответствует второй версии стандартов PSR, PSR-2.

Где можно использовать этот фреймворк?

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

Документация и сообщество

Документация на 1С-Битрикс довольно объемна, она содержит много информации, которая структурирована по разделам. Доступны текстовые и видео-курсы, блоги разработчиков, форумы с сообществом. Есть документация на разные части платформы, API, компоненты, административный раздел. Вроде бы, информации достаточно много. Однако все это настолько плохо и неудобно структурировано, что искать информацию очень сложно, не говоря уже об отслеживании изменений, которое попросту невозможно.

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

В Symfony же документация устроена довольно лаконично, имеет версионность, ведутся блоги с информацией об обновлениях. Сообщество строится вокруг кода, который открыт для внесения изменений — любой разработчик на планете может внести свой вклад в разработку Symfony. Документация отвечает на 99% возникающих по Symfony вопросов.