Generated with Avocode. Generated with Avocode. Generated with Avocode. Group 15 close hat Generated with Avocode. Generated with Avocode. Generated with Avocode. Generated with Avocode. Generated with Avocode. Generated with Avocode. path40

5 заблуждений о разработке на PHP

Чем популярнее технология, тем больше домыслов вокруг нее. Мы собрали пять мифов о программировании на PHP.

На PHP легко писать код

Этот язык неспроста считается одним из самых гибких. PHP предоставляет большой спектр инструментов и огромное количество вариантов решения любой задачи. В нем нет статической типизации, и каждой переменной можно присвоить любое значение. Переменную можно взять буквально из воздуха и начать использовать в программе. В языке есть динамические массивы — их не нужно объявлять заранее. Они автоматически расширяются: при добавлении нового элемента происходит выделение памяти. Типизированный и нетипизированный массивы в PHP — это одно и то же, то есть разработчику не нужно заранее определять их вид, допустимы даже смешанные варианты. Например:

$array = array(
1 => "a",
"1" => "b",
1.5 => "c",
true => "d",
);

Синтаксис PHP позволяет много вольностей, из-за чего появилось мнение, что на нем легко писать.

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

По ошибке можно взять из базы данных не результат, а объект запроса. И, будучи уверенным, что в переменной находится результат, проводить над ней какие-то действия. И PHP позволит это сделать, но что получится в итоге — предсказать невозможно. Значения не будут соответствовать действительности, а программа может не выполниться или результат ее работы будет неожиданным.

Не стоит путать два понятия: легко и быстро — это совершенно разные вещи.

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

PHP годится только для сайтов-визиток

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

Популярность языка PHP в индексе Tiobe

Но достаточно оглянуться по сторонам, чтобы увидеть: больших серьезных проектов, использующих PHP, огромное количество. Вот только несколько известных примеров:

  • «Фейсбук»;
  • «ВКонтакте»;
  • «Авито»;
  • Mail.ru;
  • Yahoo!;
  • Wikipedia;
  • BlaBlaCar;
  • TED.

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

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

Разумеется, enterprise-решений реализовать с помощью PHP не получится. Он не подходит и для задач по анализу текста, которые решают с помощью C# — PHP куда медленнее работает с текстом. Но таких программ или, например, проектов по машинному обучению не много. Большинство решений — это передача данных от клиента в базу, и для них PHP отлично подходит.

ООП в PHP нет и применять паттерны бессмысленно

Это миф, корни которого растут еще из PHP 4 и PHP 5.3. В этих версиях действительно не было целостного ООП, только функциональная разработка. И многие специалисты в силу предрассудков посчитали, что PHP — это скриптовый язык, предназначенный исключительно для отображения информации и не более того. Заблуждение о том, что объектно-ориентированное программирование не используют в PHP, до сих пор живо.

Пять принципов проектирования в объектно-ориентированном программировании

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

Из-за гибкости PHP применять паттерны при разработке на нем еще важнее, чем в С# или Java, иначе в коде будет попросту не разобраться.

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

Но на самом деле построение такого кода без SOLID и ООП-подходов — это утопия. Его сможет поддерживать только тот программист, который его написал, но, скорее всего, только первые полгода. Потом он забудет о какой-то части кодовой базы и устранять баги в программе станет невероятно сложно.

PHP идеален для разработки
веб-приложений

Перейдем к обратной стороне медали — чрезмерное почитание языка PHP. Его поклонники считают, что он лучший для всего. Но, к примеру, тот же С# производит обработку строки в 60 раз быстрее. И если требуется написать программу с функционалом «антиплагиата», никто не станет использовать PHP — иначе она будет медленной и неконкурентной. Если нужно создать проект по распознаванию лиц, естественно, PHP тоже не подойдет — для этого есть Python.

PHP — не серебряная пуля в веб-разработке. Например, NASA в проектах использует Node.js. Несмотря на то что Facebook написан на PHP, отдельные модули в нем решены на Python. Поэтому PHP хорош своей нишей: он используется для получения данных из базы, небольшой обработки, сортировки и возвращения пользователю.

Преимущество PHP в том, что процесс написания кода быстрый — через короткий промежуток времени вы уже получаете результат.

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

Разработчик PHP должен уметь верстать

Еще один миф, пришедший «из древности». Раньше PHP-разработчики действительно были универсалами, которые и сайт сверстают, и серверную часть напишут, и SEO настроят. Но, как показывает практика, если ты хочешь быть лучшим во всем, то будешь во всем средним. Специалист по одному конкретному направлению разработки будет превосходить fullstack-программиста в знаниях и опыте.

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

Fullstack-разработчик будет средним по квалификации и в серверной, и в клиентской части сайта. Если проекту нужен программист серверной части, не ждите, что он будет хорошо знать frontend, и наоборот.

Не нужно смотреть на то, что было актуально 10 лет назад. Предъявлять к современным специалистам устаревшие требования как минимум необоснованно.

Заключение

Мы разобрали пять частых заблуждений, связанных с языком PHP. Если хотите знать всю правду о программировании backend-части веб-приложений, добро пожаловать на курс «PHP-разработчик». В ходе обучения вы овладеете необходимыми навыками для работы в IT-компании или на себя.

Курс «PHP-разработчик»
Обширная программа для изучения PHP, состоящая из 4 курсов. Поможет с нуля овладеть популярным языком программирования, устроиться в IT-компанию вашей мечты или стать независимым разработчиком.
  • Живая обратная связь с преподавателями
  • Неограниченный доступ к материалам курса
  • Стажировка в компаниях-партнёрах
  • Дипломный проект от реального заказчика
  • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы
Хочешь получать крутые статьи по программированию?
Подпишись на рассылку Skillbox