@Allexio
Программист-путешественник.

Какой подход программирования на PHP выбрать в 2020 году?

Всем привет!

Я тут вопрос задавал относительно своего старого кода. Спасибо огромное за критику и конструктивные советы.

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

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

Спасибо!
  • Вопрос задан
  • 257 просмотров
Решения вопроса 3
glaphire
@glaphire Куратор тега PHP
PHP developer
Простейшее веб приложение уже не отразит суть всех тенденций. Или его сложно будет назвать простейшим) Правильно советуют phptherightway, из этого обязательно стоит отметить:
- стандарты psr
- сборка проекта через composer, знание самых популярных пакетов и где их искать
- знакомство с IoC (Di) контейнером
- знание хотя бы одной популярной ORM
- уверенная работа в IDE (погуглить основные лайфхаки пхпшторма)

Обычно пара официальных вводных курсов по фреймворкам знакомит со всеми этими вещами. Yii2 давно отстает от тенденций
Ответ написан
maksim92
@maksim92 Куратор тега PHP
Нашёл решение — пометь вопрос ответом!
Как вы поняли, на этот вопрос сложно ответить кратко. В программировании, на любом языке большой список материалов изучения, который постоянно пополняется. Всё зависит от Ваших задач и задач Ваших клиентов. Для кого-то главный фактор - быстрота разработки. Для кого-то — простота. Для кого-то стоимость разработки. Для кого-то важна развиваемость проекта написаного кода. Например, есть люди, зарабатывающие настройкой и поддержкой проектов на Wordpress. Поэтому я бы выделил такой путь программиста на PHP:
  1. Самописный код
  2. CMS (Wordpress, Joomla)
  3. Разработка на фреймворке
  4. Разработка на микрофреймворке

Так как Вы раньше использовали подходы CMS Wordpress, то Вам стоит пойти на следующий этап — разработка на фреймворке. В этом Вы совершенно правильно мыслите.

Фреймворк (framework, «каркас», «конструкция») — это динамически пополняемая библиотека языка программирования, в которой собраны его базовые модули. Фреймворки создаются для упрощения процессов разработки приложений, сайтов, сервисов. Чтобы не писать модуль в приложении с нуля, гораздо проще обратиться к готовым шаблонам фреймворков, которые и формируют рабочую среду разработчика.

Достоинства PHP-фреймворков:

  • Производительность. Фреймворки ускоряют разработку. Например, PHP-фреймворк избавляет вас от необходимости писать запросы к базам данных. В фреймворках реализованы базовые функции CRUD, которые необходимы для работы с базами данных.
  • Масштабируемость. Написанные на фреймворках приложения легко масштабируются.
  • Удобство. Код фреймворков лаконичный, поэтому с ним просто работать. Поддерживать легче проект на фреймворке, чем на нативном PHP.
  • Простота. В PHP-фреймворках используются шаблоны проектирования (например, MVC). Это значительно упрощает разработку, делая процесс быстрее.
  • Безопасность. Приложения на фреймворках лучше защищены, чем приложения на чистом PHP.
  • Экономичность. В фреймворках реализован принцип DRY. Это позволяет разработчикам писать меньше кода.

Какие есть PHP фреймворки для новичков?

Конечно, PHP фреймворков больше, но не все подходят новичкам. Поэтому, можно выделить два популярных фреймворка у новичков:
  1. Laravel
  2. Yii2

Путь к изучению фреймворка:

  1. Почитать документацию PHP. Начиная изучение с прочтение документации у вас отложится в подсознании какие-то «якоря», которые будут у вас всплывать в процессе изучения и которые помогут быстро находить в документации нужную информацию. Как минимум вы будете знать, что такое есть, а то некоторые узнают о функциях php спустя многие года. Это позволит вам использовать полноценно функционал, а не ограничиваться пару функциями из примеров.
  2. Изучить ООП. Программировать на PHP можно двумя подходами: функциональным и объектно ориентированным. Последний более популярный и распространенный. Фреймворки написаны используя этот паттерн. Поэтому, перед изучением фреймворка нужно иметь понимание этого подхода. Посмотрите «Неделя ООП» от Дмитрия Елисеева и попробуйте написать свой ООП-код
  3. Установить фреймворк. Начните с установки фреймворка и попробуйте разработать что-то простое, например, Блог или Новости. Yii2 совсем не сложный. Читая документацию, даже без знаний программирования можно сделать что-то простое.
  4. Задаваться вопросами и находить на них ответы. Дальше у вас будет возникать много вопросов. Постарайтесь сначала самостоятельно находить на них ответы: гуглите, смотрите документацию, а уже потом спрашивайте у сообщества.
  5. Перепишите сайт на другой фреймворк. Попробуйте созданный на Yii2 проект переписать на другой современный фреймворк: Laravel или Symfony. Вы получите хорошую практику и навык, который Вам так же поможет в будущем.

Почему Yii2 подойдёт новичку?

  • Потому что в Yii2, за последние 5 лет, ничего не поменялось. С одной стороны — минус, для изучения — плюс. Ответов и решений полно и они не устарелые, а значит рабочие. Вы хоть что-то сделаете без особых знаний и навыков. Для учебы Yii2 хватит, но не для нового проекта. Как подрастете — возьмёте современный фреймворк или перепишите на Yii3 который будет в конце 2020 или начале 2021.
  • Потому что Yii2 — это RAD фреймворк (для быстрой разработки). Это значит, что в этом фреймворке заложены принципы простоты и быстроты разработки. Для сложных проектов это проблема, а для Вас же — плюс.
  • Потому что он монолитный. Вам не придётся устанавливать кучу дополнительных пакетов, включая библиотеку UI на Bootstrap, jQuery . Вы сможете быстро установить и начать пользоваться Yii фреймворком
  • Потому что Yii2 может сгенерировать код по базе данных используя UI. В Yii2 есть Gii генератор, который прямо по схеме базе данных генерирует вам код в визуальном режиме, поэтому программисты работают быстрее, что не только экономит время, но и уменьшает стоимость разработки.
  • Потому что Yii2 имеет большое русскоговорящее сообщество и целую толпу ярых фанатов.
  • Потому что Yii2 быстрый и безопасный. В этом инструменте также заложен принцип Don't repeat yourself, т.е. неповторения кода. А с помощью Ajax и JQuery фреймворк облегчает создание высокомасштабируемых веб-приложений. Хотя и jQuery в 2020 году устарела.

Критика в сторону Yii2:

  • Тенденции 2020 года — писать чистый код на голом PHP с переносимыми компонентами, не привязываясь к канонам какого-то конкретного фреймворка. Чтобы в итоге не стать заложником одного фреймворка. Yii2 не следует этим канонам. Фреймворк внутри на 99% противоречит SOLID.
  • Yii2 вышел в 2014-ом году как немного переписанная версия Yii1.1 из 2011-го. Он до сих пор ориентируется на PHP 5.4. Все шесть лет он архитектурно не развивался. С 2018-ого его разработка заморожена. Так что сейчас Вы начнёте практиковаться на заброшенном два года назад фреймворке шестилетней давности, написанном по канонам Yii1 девятилетней давности. Если выйдет Yii3, то там многих из этих канонов уже не будет. Если это одноразовый проект, который один раз написали и забыли, то делать можно на чём угодно и как угодно. Но если проект делают надолго, то чтобы обезопасить себя от сложности таких постоянных переписываний выбирают сразу более свободные и независимые подходы.
  • Для классического frontend — фреймворк всюду тащит свои встроенные ассеты с jQuery. И чтобы перейти на WebPack надо это из всех мест вычищать. А если делать отдельный JS-фронт, то для построения API половина фреймворка оказывается не нужна.
  • Если вам хватает технологий Yii, JQuery и PHP 5.4 шестилетней давности, то получайте удовольствие. Если нравится свежий подход с настоящим DI-контейнером, типами PHP 7.4, PSR и свежим JS/TS с WebPack.
  • Версии Yii 2.1 фреймворка не планируется. Всё обратно несовместимое в 2.0 не проходит. Переход на Yii будет очен затруднён или вовсе невозможен.

Подитожим. Ваши знания находятся примерно на уровне 2015-2016 годов, как мне кажется. И тут Вам придется решать самому: либо пойти по плавному развитию, пробуя сначала Yii2, со старыми подходами, но ближе к вашим знаниям, а потом перейти на Laravel или Symfony, либо сразу пойти в 2020 год и использовать Laravel или Symfony, которые соответствуют современным подходам, но дальше от Ваших знаний. Можете попробовать установить все и решить для себя на каком фреймворке будете проходить изучение.

Рекомендую к прочтению:
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@part_os
я вам рекомендую пройти курсы вот в этой школе Pr-of-it
сам в 2016 году сменил работу и прошёл там курс PHP-2
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы