Современный PHP без фреймворков. Какой PHP-фреймворк выбрать для изучения? Выбор php фреймворка


Поделюсь своими рассуждениями и вставлю свои пять копеек. В статье не будет ни множества цифр, ни графиков (всяких Google Trends), только личные наблюдения.

Так вот, с выходом последних версий PHP и появлением новых версий популярных PHP-фреймворков (Zend Framework 2, Yii2 (альфа) и т.д.) — интерес к языку PHP усиливается. К слову на текущий момент язык чрезвычайно популярен. В основном среди начинающих веб-разработчиков (на данный момент он используется более чем на 80% всех веб-сайтов), и среди ресурсов со средней посещаемостью.

Есть разумеется примеры сайтов мирового масшатаба, использующих PHP:

Вернемся к вопросу PHP-фрейморков и выбору какой же из них сейчас популярен, востребован и какой следует изучать. Если говорить о западном рынке, то там безусловными лидерами по востребованности и частоте упоминания являются: Zend Framework , CodeIgniter и стремительно набирающий популярность Yii . На крупнейших мировых биржах фрилансеров oDesk и Elance кроме этой тройки часто упоминаются CakePHP и Symfony .

На просторах пост-советского пространства популярны по степени убывания:

  • Zend Framework
  • CodeInginter
  • Symfony
  • Kohana
  • CakePHP

Если резюмировать, то наиболее популярные в мире PHP-фреймворки по предпочтениям программистов и запросам работодателей это Zend Framework , CodeIgniter и Yii . Последний стремительно набирает популярность. Среди разработчиков фрилансеров распространены также Symfony и CakePHP.

Несмотря на рост популярности других скриптовых языков (вроде Python и Ruby), крупные корпорации в большинстве своем все еще останавливают свой выбор на PHP. И руководствуются при выборе платформы такими критериями как мастарибуемость, популярность фреймворка и наличие на рынке специалистов по данной платформе. В области HiLoad язык PHP немного уступает и видимо достиг своего предела. Но появляются компилируемые решения на его основе вроде kPHP, HipHop и т.д.

Что же изучать и на что ориентироваться?

Если у вас есть базовые знания PHP, вы хотели бы развиваться в этом направлении и вы хотите чтобы ваши навыки были полезными для работодателя — стоит в первую очередь присмотрется к первой тройке фреймворков: Zend , CodeIgniter , Yii . Далее стоит определится с тем какой из них будет для вас более «мил» и прост в изучении. И наконец, протестировать их.

Мое личное отношение к феймворкам следующее:

— Zend Framework — популярен но монструозен, есть проблемы с производительностью. Со знанием данного фреймвока найти работу вы сможете без труда, другой вопрос получится ли у вас «легкой войти» в него. Как по мне он сложен в изучении и начинать с него не стоит, ИМХО.

— CodeIgniter — прост и быстр. Но очень отстал в плане функционала от своих конкурентов. С него очень хорошо начинать чтобы разобраться с MVC и прочими премудростями. Но со временем функционала из коробки вам будет не доставать.

— Yii — нечто промежуточное. Чуть менее производителен чем CodeIgniter, зато содержит в себе гораздо больше функционала. Есть хорошая документация, и в целом значительно более дружественен чем Zend.

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

Я начинал с изучения CodeIgniter, полюбил его. Затем мне стало не хватать функционала и я начал искать альтернативу. На текущий момент изучаю и использую в работе Yii. Если вопрос какой PHP-фреймворк выбрать для изучения поставить ребром — то я бы все таки склонился к изучению Yii 1.1. И пусть вас не смущает активная работа над обратно-несовместимым Yii2, до его выхода в продакшн ой как далеко.

Надеюсь я был вам полезен.

  • Перевод
  • Tutorial

У меня есть для вас непростое задание. Когда в следующий раз начнёте новый проект, постарайтесь обойтись без PHP-фреймворка. Я не собираюсь перечислять недостатки фреймворков, и это не проявление синдрома неприятия чужой разработки : в этом руководстве мы будем использовать пакеты, написанные разработчиками нескольких фреймворков. Я всецело уважаю инновации в этой сфере.


Но эта статья не о них. Она о вас. О возможности стать лучше как разработчик.


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


Возможно, ваша следующая работа не позволит вам насладиться запуском нового проекта без фреймворка. Многие важные, критические для бизнеса PHP-задачи подразумевают использование уже существующих приложений. И неважно, будет это приложение, построенное на современном фреймворке вроде Laravel или Symfony, на одной из старых платформ вроде CodeIgniter или FuelPHP - либо это удручающе широко распространённое легаси PHP-приложение с «include-oriented архитектурой» : если сейчас вы будете разрабатывать без фреймворка, то окажетесь лучше подготовлены к любом у будущему PHP-проекту.


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


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

Как работает PHP?

Прежде всего важно понять, как PHP-приложения взаимодействуют с внешним миром.


PHP исполняет серверные приложения в цикле запрос/ответ. Всё взаимодействие с приложением - из браузера, командной строки или REST API - приходит в него в качестве запросов. При получении запроса приложение загружается, обрабатывает запрос и генерирует ответ, который передаётся обратно клиенту, а приложение закрывается. И так происходит при каждом обращении.

Контроллер запросов

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


Давайте воспользуемся классическим примером с Hello, world !, обслуживаемым встроенным в PHP веб-сервером , чтобы проверить, всё ли настроено корректно. Если вы этого ещё не сделали, то удостоверьтесь, что в среде установлен PHP 7.1 или выше.


Создадим директорию проекта, в ней сделаем вложенную директорию public , а внутри неё - файл index.php с таким кодом:


Обратите внимание, здесь мы объявляем строгую типизацию - это нужно делать в начале каждого PHP-файла вашего приложения, - потому что подсказки типов (type hinting) важны для отладки и ясного понимания теми, кто будет заниматься кодом после вас.



php -S localhost:8080 -t public/

Теперь откроем в браузере адрес http://localhost:8080/ . Отображается Hello, world ! без ошибок?


Отлично. Переходим к следующему шагу!

Автозагрузка и сторонние пакеты

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


Выход - автозагрузка. Это означает, что, когда вашему приложению нужно использовать какой-то класс, PHP знает, где его найти, и автоматически загружает в момент вызова. Эта возможность существует со времён PHP 5, но стала активно применяться только с появлением PSR-0 (стандарта автозагрузки, сегодня заменён PSR-4).


Можно было бы пройти через тягомотину написания собственного автозагрузчика, но раз мы выбрали Composer для управления сторонними зависимостями, а в нём уже есть очень удобный автозагрузчик, то его мы и будем использовать.

Middleware

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


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


Варианты использования промежуточных слоев:

  • Отладка проблем при разработке.
  • Постепенная обработка исключений в production.
  • Ограничение частоты входящих запросов.
  • Ответы на запросы неподдерживаемых медиатипов.
  • Обработка CORS.
  • Маршрутизация запросов в соответствующие обрабатывающие классы.

Промежуточный слой - это единственный способ реализации инструментов для обработки всех этих ситуаций? Вовсе нет. Но реализации middleware позволяют сделать цикл запрос/ответ гораздо понятнее, что сильно упростит отладку и ускорит разработку.


Мы воспользуемся промежуточным слоем для последнего сценария: маршрутизации.

Маршрутизация

Маршрутизатор применяет информацию из запроса, чтобы понять, какой класс должен его обработать (например, URI /products/purple-dress/medium должен быть обработан с помощью класса ProductDetails::class с передаваемыми в качестве аргументов purple-dress и medium).


Наше приложение будет использовать популярный маршрутизатор FastRoute через реализацию промежуточного слоя, совместимого с PSR-15 .

Диспетчер middleware

Чтобы наше приложение стало работать с каким-либо промежуточным слоем, нам понадобится диспетчер.



composer require relay/relay:2.x@dev

А поскольку спецификация PSR-15 подразумевает, чтобы реализация промежуточного слоя передавала HTTP-сообщения, совместимые с PSR-7 , мы воспользуемся Zend Diactoros .


composer require zendframework/zend-diactoros

Подготовим Relay к приёму промежуточных слоев.


// ... use DI\ContainerBuilder; use ExampleApp\HelloWorld; use Relay\Relay; use Zend\Diactoros\ServerRequestFactory; use function DI\create; // ... $container = $containerBuilder->build(); $middlewareQueue = ; $requestHandler = new Relay($middlewareQueue); $requestHandler->

В строке 16 мы с помощью ServerRequestFactory::fromGlobals() будем собирать всю информацию, необходимую для создания нового запроса и передачи его Relay . Здесь запрос попадает в стек промежуточных слоев.


Теперь добавим FastRoute и обработчика запросов (FastRoute определяет, валиден ли запрос и может ли он быть обработан нашим приложением, а обработчик запросов передаёт запрос тому обработчику, что сконфигурирован для этого маршрута).


composer require middlewares/fast-route middlewares/request-handler

А теперь определим маршрут для класса обработчика Hello, world !.. Здесь мы воспользуемся маршрутом /hello , чтобы продемонстрировать возможность использования маршрута, отличающегося от базового URI.


// ... use DI\ContainerBuilder; use ExampleApp\HelloWorld; use FastRoute\RouteCollector; use Middlewares\FastRoute; use Middlewares\RequestHandler; use Relay\Relay; use Zend\Diactoros\ServerRequestFactory; use function DI\create; use function FastRoute\simpleDispatcher; // ... $container = $containerBuilder->build(); $routes = simpleDispatcher(function (RouteCollector $r) { $r->get("/hello", HelloWorld::class); }); $middlewareQueue = new FastRoute($routes); $middlewareQueue = new RequestHandler(); $requestHandler = new Relay($middlewareQueue); $requestHandler->handle(ServerRequestFactory::fromGlobals());

Чтобы всё заработало, нужно обновить HelloWorld , сделав его вызываемым классом, то есть чтобы этот класс можно было вызвать как функцию .


// ... class HelloWorld { public function __invoke(): void { echo "Hello, autoloaded world!"; exit; } }

Обратите внимание на добавленный exit; в магическом методе __invoke() . Скоро вы поймёте, к чему это.



// ... use Zend\Diactoros\ServerRequestFactory; use function DI\create; use function DI\get; use function FastRoute\simpleDispatcher; // ... $containerBuilder->addDefinitions([ HelloWorld::class => create(HelloWorld::class) ->constructor(get("Foo")), "Foo" => "bar" ]); $container = $containerBuilder->build(); // ... $middlewareQueue = new FastRoute($routes); $middlewareQueue = new RequestHandler($container); $requestHandler = new Relay($middlewareQueue); $requestHandler->handle(ServerRequestFactory::fromGlobals());

Вуаля! При перезагрузке браузера вы должны увидеть Hello, bar world! .

Правильная отправка ответов

Помните, я упомянул о выражении exit в HelloWorld ?


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



Обновим HelloWorld для возвращения Response .


// ... namespace ExampleApp; use Psr\Http\Message\ResponseInterface; class HelloWorld { private $foo; private $response; public function __construct(string $foo, ResponseInterface $response) { $this->foo = $foo; $this->response = $response; } public function __invoke(): ResponseInterface { $response = $this->response->withHeader("Content-Type", "text/html"); $response->getBody() ->write("Hello, {$this->foo} world!"); return $response; } }

Обновим определение контейнера, чтоб HelloWorld предоставлялся со свежим объектом Response .


// ... use Middlewares\RequestHandler; use Relay\Relay; use Zend\Diactoros\Response; use Zend\Diactoros\ServerRequestFactory; use function DI\create; // ... $containerBuilder->addDefinitions([ HelloWorld::class => create(HelloWorld::class) ->constructor(get("Foo"), get("Response")), "Foo" => "bar", "Response" => function() { return new Response(); }, ]); $container = $containerBuilder->build(); // ...

Если мы сейчас обновим страницу, то получим пустой экран. Приложение возвращает из диспетчера промежуточных слоев правильный объект Response , а потом… что?


Просто ничего с ним не делает.


Нам нужен ещё один инструмент: эмиттер. Он находится между приложением и веб-сервером (Apache, nginx и т. д.) и отправляет ваш ответ клиенту, сгенерировавшему запрос. Эмиттер просто берёт объект Response и преобразует в инструкции, доступные для понимания серверным API .


Хорошие новости! Пакет Zend Diactoros , который мы уже используем для управления запросами, включает в себя эмиттер для ответов PSR-7.


Для простоты примера мы используем здесь очень простой эмиттер. Хотя он может быть гораздо сложнее, но в случае больших загрузок реальное приложение должно быть сконфигурировано для автоматического использования потокового эмиттера. Это хорошо описано в блоге Zend .


Обновим public/index.php для получения Response от диспетчера и передачи в эмиттер.


// ... use Relay\Relay; use Zend\Diactoros\Response; use Zend\Diactoros\Response\SapiEmitter; use Zend\Diactoros\ServerRequestFactory; use function DI\create; // ... $requestHandler = new Relay($middlewareQueue); $response = $requestHandler->handle(ServerRequestFactory::fromGlobals()); $emitter = new SapiEmitter(); return $emitter->emit($response);

Перезагрузим страницу - мы снова в деле! Пришло время для более надёжной обработки ответов.


В строке 15 заканчивается цикл запрос/ответ и вступает в работу веб-сервер.

Завершение

С помощью 44 строк кода и нескольких широко используемых, тщательно протестированных, надёжных, взаимодействующих друг с другом компонентов мы реализовали программу bootstrap современного PHP-приложения. Он совместим со стандартами PSR-4 , PSR-7 , PSR-11 и PSR-15 , поэтому вам доступен широкий спектр реализаций HTTP-сообщений, DI-контейнеров, middleware и диспетчеров.


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

Теги: Добавить метки

Сегодня вы увидите список PHPфреймворков со всеми их «плюсами» и недостатками. Я очень надеюсь, что данный список будет полезным для вас. Ну что ж, поехали!

Laravel


Необходимая версия PHP – 7

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

Плюсы:

  • Наличие MVC-архитектуры (в том числе для PHP 7)
  • Модульное тестирование (FAST для HHVM)
  • Высокий уровень абстракции
  • Возможности избежать перегрузок с помощью динамических методов
  • Огромное количество встроенных функциональных возможностей
  • Возможность интеграции платежей с системой Stripe
  • Надежная система шифрования данных

Phalcon


Необходимая версия PHP – 5.3

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

Phalcon предоставляет разработчикам инструменты для хранения данных, такие как собственный диалект SQL: PHQL, а также объектно-документное отображение Object Document Mapping для MongoDB. Другие особенности данного фреймворка включают также: шаблонизаторы, форм-билдеры, простоту разработки приложений, предусматривающую поддержку на международном языке и т.д. Phalcon является идеальным вариантом как для создания различных REST API, так и для разработки полноценных веб-приложений.

Плюсы:

  • Высокая скорость и малые перегрузки
  • Уникальность – данный фреймворк создавался в качестве расширения языка программирования С.
  • Очень хорошие встроенные средства защиты
  • Огромное количество документаций
  • Ориентированный на разработчиков

Недостатки:

  • Не работает с HHVM

Symfony


Необходимая версия PHP – 5.5.9

Symfony – это наиболее популярный фреймворк для разработки веб-сайтов и веб-приложений. Компоненты Symfony – это набор не связанных между собой, повторно используемых компонентов, с помощью которых были созданы такие приложения, как Drupal, phpBB и eZ Publish.

Плюсы:

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

Недостатки:

  • Несмотря на наличие хорошей документации данный фреймворк достаточно сложен в освоении.

CodeIgniter

Необходимая версия PHP – 5.4

CodeIgniter – это мощный PHP-фреймворк, который занимает совсем немного памяти. Он был создан для разработчиков, которым необходим простой и элегантный набор разработчика для создания полнофункциональных веб-приложений.

Плюсы:

  • Ориентирован, в первую очередь, на разработчиков
  • Не требует каких-либо дополнительных зависимых объектов или иной поддержки
  • Возможность использовать обычные сервисы веб-хостинга, используя стандартные базы данных, например MySQL
  • Превосходит большинство других фреймворков (не MVC)
  • Наличие хорошей документации, а также LTS (поддержка в течение длительного периода)

Недостатки:

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

CakePHP

Необходимая версия PHP – 5.5.9

CakePHP – это фреймворк, который упрощает и ускоряет процесс разработки приложений, при чем для этого требуется намного меньше кода. Это современный фреймворк для PHP 7, благодаря которому обеспечивается более гибкий уровень доступа к базам данных, а также мощная система кодогенерации. Благодаря данным особенностям разрабатывать как небольшие, так и сложные системы становится проще, быстрей и, разумеется, приятней. Если вы хотите разрабатывать быстро, то CakePHP – это именно то, что вы искали.

Плюсы:

  • Современный фреймворк, который поддерживает версии PHP 5.5+
  • Мощная система кодогенерации, возможность быстрой разработки
  • Очень хорошо подходит для разработки коммерческих веб-приложений (лицензия MIT)
  • Встроенный доступ к базе данных, а также кэширование, валидация и аутентификация
  • Обширные инструменты хранения включают межсайтовый скриптинг
  • Предотвращение межсайтовых атак с внедрением сценария, а также с помощью SQL-внедрения
  • CSRF, а также валидация формы
  • Наличие хорошей документации
  • Активно развивается

Недостатки :

  • Не так хорошо подходит для разработки Restful API, как Laravel или другие указанные выше фреймворки

Zend


Необходимая версия PHP – 5.6, 7.0

Zend – это фреймворк, который представляет собой набор профессиональных PHP-расширений с более чем 158 миллионами инсталляций. Данный фреймворк используется для разработки веб-приложений и сервисов с помощью PHP 5.6+ и гарантирует 100-процентный объектно-ориентированный код, используя широкий ассортимент свойств языка программирования.
Фреймворк Zend использует Composer для внедрения зависимостей пакетов; PHPUnit – для тестирования всех пакетов; Travis CI – в качестве службы для непрерывного интеграционного тестирования.

Плюсы:

  • Идеальный вариант для разработки коммерческих приложений
  • Объектно-ориентирован
  • Множество компонентов для валидации, «фидов» и форм
  • Содержит несвязанные компоненты

Недостатки:

  • Не так пригоден для быстрой разработки приложений, как другие фреймворки

FuelPHP


Необходимая версия PHP – 5.3.3

FuelPHP – это простой, гибкий, ориентированный на пользователей фреймворк для PHP версий 5.3+, вобравший в себя все наилучшие идеи других фреймворков, который только что был выпущен!

Плюсы:

  • Кэширование необязательно
  • Аутентификация пакетов
  • Возможность постоянной разработки
  • Маршрутизация URL
  • Новая версия будет полностью объектно-ориентированной и может быть установлена с использованием компоновщика, а после одной установки могут поддерживаться несколько приложений

Недостатки:

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

Slim


Необходимая версия PHP – 5.5

Slim – это микро-фреймворк для PHP, который поможет вам быстро разрабатывать небольшие, но мощные веб-приложения и API.

Плюсы:

  • Является самым быстрым доступным RESTful-фреймворком
  • Наличие достаточного количества документации для успешного начала работы с данным фреймворком
  • Идеальный вариант для разработки небольших RESTful API
  • Активно развивается

Недостатки:

  • Предлагается небольшое количество возможных надстроек для компоновщика при установке

Phpixie


Необходимая версия PHP – 5.3

Phpixie – это один из наиболее популярных комплексных PHP-фреймворков. Он включает по умолчанию отличные инструменты для криптографии и для обеспечения безопасности, поддержку MongoDB, возможность «обмена» кодом с компоновщиком.

Плюсы:

  • Относительно новый фреймворк
  • Фреймворк, с которым просто начать работать
  • Документация содержит примеры использования кода
  • Хорошая система маршрутизации
  • Возможность быстро компилировать код
  • Является HMVC-ориентированным

Недостатки:

  • Небольшое количество модулей
  • Нет поддержки компонентов, которые были созданы независимо от зависимых объектов

Fat-Free


Необходимая версия PHP – 5.5

Это мощный, но простой в использовании мини-фреймворк для PHP, созданный для того, чтобы помочь вам разрабатывать динамические и надежные веб-приложения, и что самое главное – делать это очень быстро!

Плюсы:

  • Занимает минимальное количество памяти
  • Прост в изучении
  • Быстро справляется с оптимизацией для маршрутизации URL-адресов, кэш-моделями, кодом
  • Хорошо подходит для многоязычных приложений
  • Готовая поддержка для SQL или No SQL
  • Наличие баз данных
  • Множество программных пакетов, в том числе юнит-тестирование, изображения
  • Обработка исходных файлов, оптимизация JavaScript/CSS, проверка данных, наличие Open id и многое другое

Недостатки:

  • Слишком много всего для микро-фреймворков
  • По сравнению с указанными выше фреймворками не имеет новых опций
  • Допускает повторения кода, в отличие от других MVC-фреймворков, в которых данная проблема решена

Yii 2.0

Преимущества:

  • Простота установки
  • Yii является полностью объектно-ориентированным фреймворком и использует все преимущества продвинутых PHP функций
  • Yii framework можно легко настроить под свои нужды. Практически каждый компонент фреймворка является расширяемым
  • Yii тесно интегрирован с Codeception
  • Yii поставляется с компонентом Security, который предоставляет несколько методов для помощи в создании более безопасного приложения
  • Yii дает нам несколько инструментов, которые помогают нам уменьшить затрачиваемое время на не приоритетные задачи и сконцентрироваться над основной задачей
  • Легко настроить для лучшей производительности

Недостатки:

  • Сильная связанность классов. Все в системе наследуется от CComponent. Доступ к моделям через статические методы, что позволяет их юзать даже там, где не нужно.
  • Интеграция шаблонизатора (Twig, Smarty) довольно слабая, по сравнению с нативными шаблонами. А нативные использовать не охота.

Aura


Необходимая версия PHP – 5.4

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

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

Плюсы:

  • Занимает мало памяти
  • Наличие руководств для начала работы с фреймворком
  • Идеально подходит для работы с небольшими REST API
  • Находится в фазе активной разработки
  • Надстройки включают: HTTP-кеширование и Flash

Вот и все! Надеюсь данный список и описание всех PHP фреймворков будет вам полезно. Какой из PHP фреймворков вы используете? Дайте знать в комментарий

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

Сравнение чистого PHP и PHP фреймворка может быть похоже на математику.

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

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

Так что я имею в виду?

Нативный PHP - Математика с бумагой

Хороший студент может решить задачу за несколько шагов. Уровень точности - от 75% до 100%.

Посредственный студент сможет или не сможет решить задачу, он запишет несколько шагов для решения одной и той же задачи. Здесь уровень точности - от 50% до 75%.

Плохой студент не сможет решить задачу вовсе. Тем не менее, он будет записывать много и много шагов для решения проблемы. Уровень точности - от 0% до 50%.

Научный калькулятор

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

Проблема с чистым PHP

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

Почему выбирают фреймворки?

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

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

Модификация проекта

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

Тогда неужели чистый PHP так плох ?

Абсолютно нет. Чистый PHP помогает понять логику фреймворка. Ваше логическое мышление может быть улучшено с помощью чистого PHP . Однако нативный PHP становится плохим только тогда, когда он попадает на стол плохого программиста. Не погружайтесь в фреймворк без опыта кодирования на чистом PHP . Также, убедитесь, что вы прочитали полную документацию по фреймворку, прежде чем начинать кодирование в нем, так как в настоящее время стало “модно”, использовать нативный PHP внутри фреймворка, но это абсолютно неверный путь использования такого полезного инструмента.

А вообще, проще всего разобраться с тем, что такое фреймворки можно с помощью моего курса .

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

Laravel

Данный фреймворк прошел стремительный путь от просто многообещающего до одного из лидеров PHP-движения. Краткое описание выглядит следующим образом: открытый код, работа с архитектурной моделью MVC, удобный и понятный интерфейс, расширенная функциональность.

Последний пункт проявляется в следующих возможностях:

  1. Поддержка сторонних модулей, коих немалое количество, что значительно расширяет стандартные возможности фреймворка.
  2. Обратная маршрутизация, позволяющая вам не тратить время на обновление ссылок при работе - всё происходит автоматически.
  3. Шаблоны проектирования Eloquent ORM, что помогает в определении строгих отношений между объектами БД.
  4. Автоматическая загрузка классов. Это, с одной стороны, уменьшает объем кода из-за отсутствия необходимости писать include…, с другой стороны - неиспользуемые классы не подключаются со всеми вытекающими.
  5. Модульное тестирование - наличие большого числа тестов для предотвращения наслоения ошибок.
  6. Система управления версиями БД. Если вы предполагаете часто несущественно обновлять свой продукт - данная функция позволит вам не тратить время на однотипные записи.

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

CodeIgniter

Данный фреймворк, которому уже более 11 лет, снискал славу благодаря непритязательности относительно используемых ресурсов, простоте, удобству, огромному количеству документации, рассчитанной на разработчиков любого уровня, отсутствию ограничений. В свое время Laravel создавался именно как конкурент CodeIgniter, так что до недавнего времени это был всеобщий ориентир.

Несмотря на простоту, как у любого популярного фреймворка, у CodeIgniter также есть парочка полезных особенностей:

  1. Большая поддержка сообщества CodeIgniter Reactor, в том числе библиотеки, модули, шаблоны и документация.
  2. Шаблоны для работы с БД, которые очень похожи на синтаксис SQL.
  3. Возможность кэширования на стороне сервера.
  4. Использование менеджера пакетов для быстрого подключения библиотек из командной строки.

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

Symfony

Несмотря на то, что релиз третьей версии состоялся еще в 2015 году, именно вторая версия Symfony единолично удерживает 3-е место по популярности среди фреймворков. Причина здесь схожа c CodeIgniter - скорость работы и общая простота. Но чтобы это не шло в разрез с функциональностью, пользователю предлагается выбрать одну из 3 версий для профильной работы:

  1. Standard Edition - для знакомства и выполнения общих задач. На ней основан дистрибутив Hello World Edition, который содержит ровно один скрипт оптимизации для дальнейшего использования в бенчмарках.
  2. Symfony CMF - адаптация для разработчиков, работающих с CMS-системами.
  3. REST Edition - оптимизация для работы с REST-архитектурой (интернет-магазины, поисковые системы и т.д.).

Стереотипно считается, что Symfony - это фреймворк для любителей командной строки. Действительно, встроенный интерфейс SensioGeneratorBundle поможет вам из одной строки текста получить целый скелет для вашего кода.

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

Yii

Yii во многих рейтингах преподносится как главный конкурент Symfony. Основания для этого действительно есть: оба языка работают с полным стеком, у обоих исходники на GitHub, оба достаточно качественно представляют шаблонную разработку. Однако в то время как Symfony предоставляет лишь модель и контроллер, в Yii реализована полноценное MVC-взаимодействие. Кроме того, интерфейс в Yii куда удобнее, генерация кода с помощью браузерного элемента Gii здесь немного мощнее, да и вообще по факту Yii позволит вам сэкономить больше времени на разработке, а приложение будет работать чуть быстрее.

Nette Framework

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

  1. Один из самых производительных PHP-фреймворков .
  2. Прекрасно подойдет для новичков, кривая обучения достаточно плавная.
  3. Мощные инструменты в помощь: Tracy - для отслеживания ошибок, Latte - быстрый и интуитивно понятный генератор шаблонов, Tester - утилита для качественного тестирования вашего приложения в приближенных к реальным условиям.
  4. Возможность коллективной работы нескольких разработчиков над одним проектом.
  5. Прекрасная документация и дружелюбное сообщество (и не только на чешском языке).

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

Короткой строкой

CakePHP - популярный клон Ruby on Rails, только ориентированный на PHP. Все преимущества также схожи.

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

Phpixie - одной из главных «фишек» данного фреймворка является обновление. Больше не надо ждать несколько месяцев новую ревизию. Обнаружили -> подгрузили исправление -> работаете дальше. Принцип примерно такой.

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

Slim - этот фреймворк простой для изучения и начала работы с PHP, но практически не востребован во взрослом профессиональном мире веба.

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

Выбор редакции
Откуда вышел на свет глава Национальной гвардии, экс-охранник Владимира Путина Виктор Золотов, разбирался Sobesednik.ru.Попал точно в...

НПО «Квантовые технологии» — не первый опыт Романа Золотова в бизнесе. Несколько лет назад он входил в совет директоров Корпорация...

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

Крепость Орешек — один из важнейших плацдармов обороны Российской империи вплоть до Второй мировой войны. Долгое время выполняла роль...
09сен2019 Серия - Young Adult. Нечто темное и святое ISBN: 978-5-04-103766-6, Young Adult. Нечто темное и святоеАвтор: разныеГод...
© Оформление. ООО «Издательство „Э“», 2017 © FLPA / Rebecca Hosking / DIOMEDIA © Mike Hayward Archive / Alamy / DIOMEDIA © Kristoffer...
Я жду, пока ко мне вернется голос. Вероятно, вместе с ним вернутся слова. А может быть, и нет. Может быть, некоторое время придется...
Автор Карина Добротворская Любить больно. Будто дала позволение освежевать себя, зная, что тот, другой, может в любую минуту удалиться с...
КАК УЗНАТЬ СВОЕ ПРЕДНАЗНАЧЕНИЕ ПО ДАТЕ РОЖДЕНИЯ!Советуем внимательно изучить этот нелегкий материал, примерить его к себе и внести...