5 заблуждений о разработке на PHP
Чем популярнее технология, тем больше домыслов вокруг нее. Мы собрали пять мифов о программировании на PHP.
vlada_maestro / shutterstock
На PHP легко писать код
Этот язык неспроста считается одним из самых гибких. PHP предоставляет большой спектр инструментов и огромное количество вариантов решения любой задачи. В нем нет статической типизации, и каждой переменной можно присвоить любое значение. Переменную можно взять буквально из воздуха и начать использовать в программе. В языке есть динамические массивы — их не нужно объявлять заранее. Они автоматически расширяются: при добавлении нового элемента происходит выделение памяти. Типизированный и нетипизированный массивы в PHP — это одно и то же, то есть разработчику не нужно заранее определять их вид, допустимы даже смешанные варианты. Например:
Синтаксис PHP позволяет много вольностей, из-за чего появилось мнение, что на нем легко писать.
Но если речь идет о проекте серьезнее одностраничного сайта или простого интернет-магазина, то гибкость и динамическая типизация превращают PHP в очень сложный язык для разработки. В частности, программист не увидит алгоритмические и синтаксические ошибки, поскольку язык позволяет их допускать. Поэтому отлаживать PHP-программы, в которые закрался баг, довольно сложно.
По ошибке можно взять из базы данных не результат, а объект запроса. И, будучи уверенным, что в переменной находится результат, проводить над ней какие-то действия. И PHP позволит это сделать, но что получится в итоге — предсказать невозможно. Значения не будут соответствовать действительности, а программа может не выполниться или результат ее работы будет неожиданным.
Не стоит путать два понятия: легко и быстро — это совершенно разные вещи.
Поэтому в работе над большими проектами с PHP нужно быть крайне внимательным. Можно совершить ошибку, которую будет очень сложно найти. Несмотря на это, его используют для высоконагруженных проектов: программировать на PHP гораздо быстрее, чем при помощи статических языков. Заметьте, что «разрабатывать быстро» — не то же самое, что и «легко».
PHP годится только для сайтов-визиток
Несмотря на более чем 20-летнюю историю активного развития, даже сегодня многие считают его неполноценным языком программирования. До сих пор в умах некоторых разработчиков живет миф, что на PHP делают только простые одностраничные сайты и «визитки».
Но достаточно оглянуться по сторонам, чтобы увидеть: больших серьезных проектов, использующих 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 лет назад. Предъявлять к современным специалистам устаревшие требования как минимум необоснованно.