Самый простой фреймворк php. Как выбрать тот самый PHP-фреймворк. Сравнительное тестирование

Однако, работая фрилансером, часто встречаю сайты на самописных системах. Программисты пишут их не от хорошей жизни. В зависимости от степени простоты(сложности) проекта чрезмерно или наоборот недостаточно, применение готовой системы, и на ее переделки уходит больше времени, чем на создание сайта с нуля. К примеру, для сайта одностраничника не нужно тяжелой системы типа Joomla или фреймворка типа Yii , а у CMS типа Texpattern может не хватить функционала. Плюс задачи, которые ставит заказчик, могут быть весьма специфичными, и достаточно тяжело реализуемыми на готовой системе.

Для примера можно взять работы с моделями в . Речь идет об ActiveRecord. У Yii на официальном сайте есть отличный мануал по созданию блога . Если придерживаться его, и делать все, как написано, то через пару часов изучения, можно получить полноценный блог. С категориями, метками, пользователями и административной панелью.

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

Как сказал один наш комик - "тут начинается вестерн". То, что в SQL бы заняло 3 строчки кода, в Active Record займет пару ночей чтения мануалов, и экспериментов. Потому что, на первый взгляд тривиальная задача, вдруг вызывает необъяснимый баг Yii, о котором слышали полтора человека и оба китайцы. Пример не надуманный, те кто программировал на Yii используя Actve Record поддержат.

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

В мире CMS тоже далеко ходить не надо. При работе над модулем Яндекс карт для Joomla нужно было подключить в админке сайта javascript файл. Недельное изучение системы ничего не дало. Такого функционала в модулях попросту нет. Надо сказать, что я выкрутился используя функционал расширенных полей подключил нужный файл. Но то, сколько времени у меня на это ушло, несоизмеримо с тем, если бы система была построена по моим законам, и я знал, что и где в ней подключается.

Об этом расскажу в этой статье. Как написать php фреймворк с нуля. Опишем основные техники проектирования MVC фреймворков на чистом php без использования сторонних библиотек.

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

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

Однако и плюсы тоже есть, система будет полностью под вашим контролем. Никаких ограничений API и требований системы. Только чистый vanilaPHP и ничего лишнего.

Оставим лирику, приступим наконец к коду.

Точка входа

Любой сайт, CMS или фреймворк начинается с точки входа. Обычно это index.php в корне сайта. Но мы не будем так делать. Чтобы программист, который работает с нашим фреймворком сразу разобрался, что все данные идут через точку входа, назовем файл main.php. Тогда будет очевидно - все запросы перенаправляются через.htaccess

AddDefaultCharset utf-8 RewriteEngine on php_value upload_max_filesize 50M php_value post_max_size 50M php_value display_errors 1 DirectoryIndex main.php?controller=index ErrorDocument 404 /main.php?controller=error RewriteRule ^index.html$ main.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ main.php?route=$1

Первые 8 строк - это вспомогательные настройки, которые пригодятся для фреймворка в будущем. Мы установили кодировку utf-8 по умолчанию, сайт будет работать на ней. Включили модуль apache Rewrite, для того чтобы перенаправить все не статичные запросы на main.php. Это и делают 3 последние строчки. Вся строка запроса, которая идет после домена, будет передана в переменную $_GET["route"]. Т.е. запрос http://sitename.ru/kolesa/perellli/?id=5 превратится в http://sitename.ru/main.php?route=kolesa/perellli/ &id=5

Дальнейшие манипуляции с разбором URL производятся с помощью PHP. Это распространенный прием, вы легко можете воспользоваться им в других системах. Так работает и Yii. Но наш фреймворк в отличие от Yii без.htaccess работать не сможет.

Файл main.php не должен делать много, он лишь определит константы путей, подключит фреймворк и запустит приложение

start();

Структура

Теперь продумаем структуру нашего фреймворка. Удобно, чтобы его файлы лежали в отдельной папке. Сделаем такую структуру

Application -- controllers -- models -- views -- config.php - ideal -- classes -- framework.php -- config.php .htaccess main.php

в папке ideal будет лежать наш идеальный =) движок, а в папке application файлы пользователя.

в файле framework.php определим автозагрузчики классов, для того чтобы не писать руками каждый раз include "classname.php"; Я уже писал про эту технику

в этом файле будут еще и другие системные действия. Но пока хватит и этого.

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

Теперь опишем класс App, он находится в папке classes движка.Его метод start и будет запускать наше приложение.

parse(); $controller = app::gi(Router::gi()->controller."Controller"); $controller->__call("action".Router::gi()->action); } }

Класс наследует абстрактный класс Singleton . Удобство в том, что экземпляр любого класса, который наследует от Singleton, можно получить из любого места программы через его метод gi() К примеру, экземпляр нашего приложения можно получить App::gi(). Этот метод вернет единственный экземпляр класс App. Один экземпляр может создать проблему, когда нужно использовать несколько баз данных. Поэтому к классу db его лучше не применять.

В коде появляются класс Router. Он будет парсить переменную $_GET["route"] и и возвращать контроллер и action - т.е. метода этого контроллера. Так как пока мы пишем лишь каркас, то этот класс ничего делать не будет. Лишь заполнит свои соответствующие поля.

controller = $_REQUEST["controller"]; if(isset($_REQUEST["action"])) $this->action = $_REQUEST["action"]; } }

Каркас фреймворка готов. Теперь создадим один жизненно важный контроллер application/controllers/UserController.php

Пользователи нужны в любой системе.

Он пока ничего не делает. Лишь создает модель User и выводит свое представление на экран. Модель User наследует класс classes/Model.php

data[$name])?$this->data[$name]:null; } function __set($name,$value){ $this->data[$name] = $value; } }

и код модели application/models/User.php

Как видите он тоже ничего особого не делает.

Hello name?>!!!

Таким образом структура нашего фреймворка примет такой вид

Application -- controllers --- UserController.php -- models --- User.php -- views --- user ---- index.php -- config.php - ideal -- classes -- framework.php -- config.php .htaccess main.php

Запустив в адресной строке

http://sitename/index.html?controller=user&action=index в браузере мы увидим заветное

Hello Valeriy!!!

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

Мы продолжаем рассказывать о самых популярных и полезных инструментах для работы с языками. На этот раз речь пойдет о 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 - прекрасный фреймворк с высокой производительностью, незначительно нагружающий память и файловую систему. Минус - проект достаточно сырой и с большим количеством подводных Си-камней.

Поделюсь своими рассуждениями и вставлю свои пять копеек. В статье не будет ни множества цифр, ни графиков (всяких 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, до его выхода в продакшн ой как далеко.

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

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

Давайте рассмотрим 9 лучших фреймворков с помощью которых вы сможете создавать удивительные адаптивные сайты.

1. Symfony 2

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

Symfony — это открытый проект, размещенный на GitHub , и более 300 000 программистов работали и улучшали свой код с его помощью.

Symfony 2 состоит из набора многоразовых PHP-компонентов , которые легко устанавливаются на большинство платформ. И, как известно, он очень стабилен и гибок.

2. Phalcon

Это фреймворк, написанный на C , самая быстрая PHP-платформа. Он предлагает большое количество новейших функций, таких как маршрутизация, просмотр шаблонов, кеширование и ORM , контроллеры, язык запросов и т. д.

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

3. Laravel

Laravel — самый популярный фреймворк 2016 года. Это также и самый простой для изучения фреймворк. Самой мощной его функцией является собственный механизм шаблонов, называемый «Blade », который не потребляет дополнительных ресурсов на вашем сайте.

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

4. Yii

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

Когда речь заходит об обеспечении безопасности, Yii работает просто удивительно . Gii , доступный в рамках Yii , это мощный генератор кода. Благодаря ему вы можете легко создавать формы, модули, CRUD , модели и т. д.

5. CodeIgniter

Надежный полнофункциональный инструмент для создания веб-приложений. Он занимает всего 2 МБ места на диске, а руководство для пользователей подробно описывает компоненты, благодаря которым можно легко обойти сложный MVC .

CodeIgniter предоставляет инструмент подстановки с шаблонами и плагинами.

6. Cake

Наш рейтинг фреймворков PHP продолжает современная среда, которая также поддерживает 9 языков, хотя она была выпущена еще в 2005 году. CakePHP 3.3 позиционируется, как мощный фреймворк.

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

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

7. ZendPHP

Данный фреймворк был выпущен 9 лет назад, и до сих пор не теряет актуальности. Это объектно-ориентированный фреймворк, поэтому лучше всего использовать его для наследования или интерфейсов. Его последняя версия оптимизирована под PHP7 , но также прекрасно поддерживается и PHP 5.5 .

Zend заменил стек MVC более простой альтернативой, построенной на шаблонах промежуточного программного обеспечения, таких как Apigility .

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

8. FuelPHP

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

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

9. Slim

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

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

Перевод статьи «9 Best PHP Frameworks to Build Awesome Responsive Websites » дружной командой проекта .