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

Работайте с лучшими Symfony разработчиками!

Какой фрейм выбрать?

Kohana Рекомендую Kohana как простой, эффективный фреймворк с быстрым циклом разработки.

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

CodeIgniter CodeIgniter умер, но экземпляр был ://#comment_1919287 Объяснять почему кодигнайтер тупиковая ветвь мне лениво. В обзоре он лишь для истории. Шансы у него есть (если он не загнется), но пока я на него забил.

Symfony

[quote=»natbampo»]petrovnn, не подскажешь(если в курсе), а Symphony по сравнению с тобой указанными как по сложности изучения? (узнал просто что в моем городе есть одна фирма где на симфони работают)[/quote]

Симфония — сложная штука. Некоторые хвалят, кто-то на ней работает, но не мало отзывов что она все-же тормознутая в производительности (не мало, это по сравнению с аналогичными отзывами о других фреймах). В основном работа идет через командную строку (я работал с симфонией на линуксе, в родной среде так сказать). Сделал учебный блог. Конечно на CI было проще. Короче симфони мне не понравилась (не потому что плохой фрейм, просто для меня слишком сложный), да и вообще на сайте Yii заявляют что это чуть-ли не самый медленный фреймворк: верить этому сравнению или нет — решать конечно вам, но я думаю что данный график не лишен смысла.

При желании запариться на сложные темы, лучше выбрать Yii — намного более перспективная вещь, по сложности по моим ощущениям сопоставима с Symfony. Для Yii существует библиотека модулей (как для друпала) и даже некоторые модули это порты модулей друпла! например порт друпаловского ImageCache: -cache

Читайте также:  Как сэкономить до ₽40 000 на покупке MacBook Pro с дисплеем Retina

Zend Слишком запутанная структура, и по некоторым отзывам больше тянет на enterprise-версию Pear, чем на фреймворк. Короче использовать как качественную библиотеку — можно, как фрейм — я-бы даже не связывался.

Fat Free Framework (F3) Перспективный микрофреймворк, его обзор на хабре: Небольшой список других микрофреймворков: -micro-frameworks/

Мой выбор: В категории легковесного и компактного фреймворка с быстрым циклом изучения/разработки: Kohana В категории сложного и оптимизированного под масштабные проекты: Yii В категории микро — ради забавы (для статичного сайта из нескольких страниц) я-бы взял Fat Free

Сервисы в 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 — это не что иное, как набор сервисов. А бандлы — это то, что фактически готовит сервисы и помещает их в контейнер.

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

Успехов!

Создание таблиц и сущностей в них

Создаем сущность

bin/console make:entity

Отвечаем на вопросы, подбирая подходящие для себя параметры.

Если понадобится в дальнейшем добавить новое поле в таблицу, то используем эту же команду.

Создаем (или обновляем) таблицу миграции для последующего внедрения в БД

php bin/console make:migration

Читайте также:  Как входить в Windows 10 по паролю с телефона?

В консоли будет указан файл, что-то вроде:

Next: Review the new migration "src/Migrations/"

В нём будут параметры создания таблицы.

Запустим создание (или обновления) таблицы в БД:

php bin/console doctrine:migrations:migrate

Эту же команду стоит запустить на продакшене для обновления таблиц.

Если требуется пересоздать сущности, например в том случае, когда добавление происходит вручную через файл:

bin/console make:entity —regenerate

Zend Framework 2

Zend Framework 2 представляет собой свободный фреймворк на PHP, созданный разработчиками Zend. В настоящее время компания занимается разработкой языка программирования PHP. Этот фреймворк имеет много функциональных возможностей, а также основывается на принципах MVC / OOP (объектно-ориентированное программирование), что позволяет использовать его в крупных проектах.

Установка

Этот фреймворк может быть установлена с помощью Composer. Готовая структура программы может быть взята из скелетного приложения Zend.

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

Фреймворк имеет довольно простые и подробные инструкции.

Гибкость

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

Вторая версия фреймворка соответствует PSR-2.

Примечание

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

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

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

Запросы и ответы.

Когда Вы создаете Slim-приложение, Вы часто работаете непосредственно с объектами запроса и ответа. Эти объекты представляют собой фактический HTTP-запрос, полученный веб-сервером, и возможный HTTP-ответ, возвращенный клиенту.

Каждый маршрут Slim-приложения получает текущие объекты запроса и ответа в качестве аргументов для своей callback-функции. Данные объекты реализуют популярный интерфейс PSR-7. Маршрутизатор манипулирует данными объектами по мере необходимости. В конечном счете, каждый маршрутизатор должен возвращать объект ответа соответствующего формату PSR-7.