Среди языков программирования PHP стоит несколько особняком. Будучи изначально лишь небольшим фреймворком на основе CGI, предоставляющим пользователю некоторые дополнительные возможности для работы с сайтами, он в дальнейшем превратился в самостоятельный язык для разработки. Также он подвергается почему-то критике, считается то ли слишком «простым» языком только для новичков, то ли каким-то «несовершенным». Кто-то даже говорит о том, что он полностью устарел и скоро уйдёт с рынка. Давайте разберёмся, что же он действительно из себя представляет.
Мифы о языке PHP
И в первую очередь давайте развенчаем основные мифы, которые касаются разработки на PHP и самого языка. Первый миф — это то, что код на PHP такой по своей природе, что читать и отлаживать его очень сложно. В первую очередь, конечно, имеется в виду встраиваемый в веб-страницу код, которым часто грешили разработчики лет 10-15 назад. Ну и во вторую очередь — код, написанный только на PHP другими программистами.
Да, тогда такой «смешанный» код php-html был нормой, особенно для различных страничек на основе WordPress. Да и сейчас кое-где можно встретить подобную схему разработки. Однако веб развивается, и сейчас уже взаимодействие PHP-программы с документом в основном строится на основе промежуточного языка Javascript, DOM и html-шаблона, которые делаются отдельно. Это позволяет разделить PHP-код от других конструкций веб-страницы, что положительно сказывается на читаемости и того, и другого.
Второй вопрос — является ли читаемым код на PHP, написанный другими программистами. PHP является типичным объектно-ориентированным языком, что позволяет в короткое время создавать на нём собственные программы, фреймворки, библиотеки. Делает существующие программы более читаемыми. Он поддерживает структурное программирование, позволяя делить программу на подпрограммы со своей собственной читаемой структурой. Более того, все переменные по умолчанию в нём являются локальными, а глобальные легко отследить, просто читая из массива $GLOBALS, что удобно для отладки программы без каких-то специальных средств. Есть и ряд других ограничений, которые мешают создавать сложные, нечитаемые структуры, допускающие неявные ошибки. Язык в современных версиях следует признать хоть и не самым простым, но достаточно дружелюбным к новичкам, с рядом ограничений, которые помогут писать читаемый код.
Так в чём же причина того, что код на PHP многие хейтят за нечитаемость? Дело в том, что этот язык имеет низкий порог вхождения, и изначально позиционировался для создания веб-страниц. А веб-страницы нужны были всегда и всем — учителям, врачам, лётчикам и геологам. В итоге бэкенд на PHP чаще, чем на других, создавался непрофессионалами. Вот как результат мы получили огромный объём некачественного кода, который потом приходилось отлаживать. Если же брать современный PHP, то на других языках написать неотлаживаемый код гораздо проще, например, на том же JS, если это большая программа. Не говоря уже о языках для системного программирования.
Второй миф о PHP это то, что язык является очень простым. Действительно, освоить базовые конструкции «пыхи» любой программист сможет за неделю-другую. Начать писать на нём программу тоже очень просто. Благодаря тому, что сам язык является специализированным для бэкенда, в нём много встроенных функций, которые можно использовать, не имея фундаментальных познаний о том, как работает сеть, как организовано хранение данных в базе и как реализован веб-сервер на той или иной операционной системе. Достаточно базовых знаний. Язык всё сделает за программиста, причём правильно. Однако PHP является прежде всего объектно-ориентированным, в котором полноценно реализованы классы, и это требует определённых навыков в подготовке программиста. Чтобы писать хорошие, эффективные программы на PHP, нужно его долго изучать, иметь опыт работы с ним. Конечно, для настройки небольшой статической веб-странички достаточно будет и базовых познаний.
Третий миф — то, что PHP является медленным языком программирования. Многие, например, проводят его сравнение с Golang, который, являясь многопоточным компилируемым языком, конечно, выигрывает у PHP. Здесь следует сказать, что каждый язык хорош для своих целей. PHP позволяет реализовать отложенные вычисления, генераторы, другие элементы, ускоряющие работу программы и экономящие память. Реализована в нём и многопоточность — правда, что греха таить, несколько хуже, чем в Go. Тем не менее, обрабатывать в секунду несколько сотен или тысяч запросов PHP сможет, а для обычной странички интернет-магазина или интернет-форума этого может быть достаточно. Более полноценно многопоточность реализована в другом языке на основе PHP, Hack, но об этом далее.
Пока же стоит сказать, что быстродействие однопоточной программы на PHP оставляет далеко позади и Perl, и Ruby, и Python, особенно если программист при написании использовал все преимущества, которые даёт ему PHP. Асинхронное программирование, многопоточные вычисления современный PHP вполне себе может реализовать, и он даёт выбор, писать в асинхронном или однопоточном стиле. Опытный программист сможет сделать эффективную многопоточную программу, используя Amp, неопытный — не наделает ошибок, придерживаясь однопоточного алгоритма выполнения.
Следующий миф — это то, что PHP является небезопасным языком, что в нём много «дыр», и это даёт веб-сайтам на нём уязвимость. По поводу надёжности и защищённости языка сразу стоит сказать, что это не так. В самом языке не было найдено серьёзных уязвимостей за последние лет эдак 20. Да, некоторые баги находили, но они быстро устранялись. На сегодняшний день PHP в версии 8.1 и выше является одним из самых надёжных и безопасных языков программирования для Web. И пока таковым и остаётся. Все мы помним, что как только в языке Ruby, тоже очень хорошем языком для бэкенда, нашли уязвимость в фреймворке Rails, как быстро стала таять его популярность, и сейчас он в глубоком кризисе. Подобные события для PHP в последнее десятилетие не происходили. Это и не удивительно. Изначально он создавался языком для веб-программирования, где безопасность должна быть на самом высоком уровне.
И последний миф: PHP устарел и скоро его заменят другие средства разработки. Действительно, PHP зародился в конце прошлого века, ему уже почти под 40. Почтенный возраст, что и говорить. И о том, что PHP скоро заменят на что-то другое, приходилось слышать не раз и не два. Сейчас многие предполагают, что он будет заменён разработкой на Node с её богатыми инструментами Javascript и Typescript. Тут тоже не так всё просто. Сама по себе Node не так уж и хорошо реализует многие технологии, как PHP, а TS и JS имеют лишь псевдоклассы, не реализующие полноценно такую современную технологию, как ООП. Взглянув на другие средства разработки, тоже становится ясно, что такого, которое бы целиком во всём превосходило PHP по количеству библиотек, фреймворков, уже написанных программ в общем-то и нет. А раз так — то программистам на PHP всегда будет в достатке работы, будут создаваться как новые проекты на нём, так и поддерживаться старые.