Возможности PHP
PHP может все. Главная область применения PHP — написание скриптов, работающих на стороне сервера; таким образом, PHP способен выполнять все то, что выполняет любая другая программа CGI, например, обрабатывать данные форм, генерировать динамические страницы или отсылать и принимать cookies. Но PHP способен выполнять намного больше.
- Создание скриптов для выполнения на стороне сервера. PHP традиционно и наиболее широко используется именно таким образом. Для этого вам будут необходимы три вещи. Интерпретатор PHP (в виде программы CGI или серверного модуля), веб-сервер и браузер. Для того чтобы можно было просматривать результаты выполнения PHP-скриптов в браузере, нужен работающий веб-сервер и установленный PHP. Просмотреть вывод PHP-программы можно в браузере, получив PHP-страницу, сгенерированную сервером. В случае, если вы просто экспериментируете, вы вполне можете использовать свой домашний компьютер вместо сервера. За более подробными сведениями обратитесь к главе Советы по установке.
- Создание скриптов для выполнения в командной строке. Вы можете создать PHP-скрипт, способный запускаться без сервера или браузера. Все, что вам потребуется — парсер PHP. Такой способ использования PHP идеально подходит для скриптов, которые должны выполняться регулярно, например, с помощью cron (на платформах *nix или Linux) или с помощью планировщика задач (Task Scheduler) на платформах Windows. Эти скрипты также могут быть использованы в задачах простой обработки текстов. За дополнительной информацией обращайтесь к главе Использование PHP в среде командной строки.
- Создание оконных приложений, выполняющихся на стороне клиента. Возможно, PHP является не самым лучшим языком для создания подобных приложений, но, если вы очень хорошо знаете PHP и хотели бы использовать некоторые его возможности в своих клиентских приложениях, вы можете использовать PHP-GTK для создания таких приложений. Подобным образом вы можете создавать и кросс-платформенные приложения. PHP-GTK является модулем PHP и не поставляется вместе с основным дистрибутивом PHP. Если вы заинтересованы, посетите » сайт PHP-GTK.
PHP доступен для большинства операционных систем, включая Linux, многие модификации Unix (такие как HP-UX, Solaris и OpenBSD), Microsoft Windows, macOS, RISC OS и многие другие. Также в PHP включена поддержка большинства современных веб-серверов, таких как Apache, IIS и многих других. В принципе, подойдёт любой веб-сервер, способный использовать бинарный файл FastCGI PHP, например, lighttpd или nginx. PHP может работать в качестве модуля или функционировать в качестве процессора CGI.
Таким образом, выбирая PHP, вы получаете свободу выбора операционной системы и веб-сервера. Более того, у вас появляется выбор между использованием процедурного или объектно-ориентированного программирования (ООП) или же их сочетания.
PHP способен генерировать не только HTML. Доступно формирование изображений, файлов PDF и даже роликов Flash (с использованием libswf и Ming), создаваемых «на лету». PHP также способен генерировать любые текстовые данные, такие, как XHTML и другие XML-файлы. PHP может осуществлять автоматическую генерацию таких файлов и сохранять их в файловой системе вашего сервера вместо того, чтобы отдавать клиенту, организуя, таким образом, серверный кеш для вашего динамического контента.
Одним из значительных преимуществ PHP является поддержка широкого круга баз данных. Создать скрипт, использующий базы данных, — невероятно просто. Можно воспользоваться модулем, специфичным для отдельной базы данных (таким как mysql) или использовать уровень абстракции от базы данных, такой как PDO, или подсоединиться к любой базе данных, поддерживающей Открытый Стандарт Соединения Баз Данных (ODBC), с помощью одноимённого модуля ODBC. Для других баз данных, таких как CouchDB, можно воспользоваться cURL или сокетами.
PHP также поддерживает взаимодействие с другими сервисами через такие протоколы, как LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (на платформах Windows) и многих других. Кроме того, вы получаете возможность работать с сетевыми сокетами напрямую. PHP поддерживает стандарт обмена сложными структурами данных WDDX практически между всеми языками веб-программирования. Обращая внимание на взаимодействие между различными языками, следует упомянуть о поддержке объектов Java и возможности их использования в качестве объектов PHP.
PHP имеет много возможностей по обработке текста, включая регулярные выражения Perl (PCRE) и много других модулей и инструментов для обработки и доступа к XML-документам. В PHP обработка XML-документов стандартизирована и происходит на базе мощной библиотеки libxml2, расширив возможности обработки XML добавлением новых модулей SimpleXML, XMLReader и XMLWriter.
Есть ещё много других интересных модулей, которые можно просмотреть как в алфавитном порядке, так и по категориям. Есть ещё много дополнительных модулей PECL, которые также могут (а могут и нет) быть документированы в данном руководстве, такие как » XDebug.
Как вы видите, этой страницы не хватит для того, чтобы перечислить все, что может предложить вам PHP. Читайте следующую главу, Установка PHP и обратитесь к главе Справочник по функциям за более подробными сведениями о перечисленных выше модулях.
Язык программирования PHP: рейтинг, сферы применения, прогнозы экспертов
PHP — это язык программирования, который создавали для разработки веб-приложений, но позже он эволюционировал в язык общего назначения.
PHP — язык с динамической типизацией. Это значит, что код на нем прост для чтения и понимания, а разработка — быстрая. PHP — интерпретируемый язык. Это значит, что компьютер понимает код на PHP и воспроизводит программы без предварительного перевода в машинный код.
Подробнее о том, что такое типизация, какая она бывает, а также в чем разница между интерпретируемыми и компилируемыми языками мы рассказываем на бесплатном курсе «Введение в программирование». Пройти курс
Иногда русскоязычные специалисты произносят название как «пхп». Это не совсем верно, но такое произношение и написание закрепилось в профессиональном жаргоне. Поэтому не удивляйтесь, если услышите фразу «язык программирования пхп».
Где используют PHP
Как мы сказали ранее, PHP относится к языкам общего назначения. Однако чаще всего он применяется в разработке веб-приложений.
PHP — это серверный язык, то есть он исполняется на сервере. Написанные на PHP программы получают данные от пользователей сайта, обрабатывают их, взаимодействуют с базами данных, а затем возвращают на сайт обработанную информацию.
На PHP написаны популярные системы управления контентом (CMS), например, WordPress, Joomla!, Drupal. На этом языке также написаны и популярные фреймворки для создания сайтов, например, Laravel, Yii2, Symfony. Наконец, масштабная и популярная соцсеть «ВКонтакте» тоже создана на PHP.
Читайте также: Верстал сайты на коленке, но стремился к большему: история PHP-разработчика
Популярность и рейтинг PHP
Существует несколько рейтингов и исследований, которые вычисляют индекс популярности языков программирования.
Индекс TIOBE рассчитывается по количеству поисковых запросов с названием языка. То есть он отражает интерес пользователей интернета к конкретным языкам программирования. По результатам ноября 2022 года PHP занимает десятое место среди самых популярных языков программирования в этом индексе и опережает Go, Objective-C, Swift, Ruby.
Рейтинг GitHub Octoverse ежегодно учитывает частоту применения языков пользователями GitHub. По данным на ноябрь 2022 года PHP занимает седьмое место в этом отчете. По частоте использования на GitHub этот язык уступает JavaScript, Python, Java, TypeScript, C# и C++.
Если вы живете и планируете работать в регионах, а не в Москве или в Санкт-Петербурге, при оценке популярности PHP учитывайте следующий момент. В регионах именно PHP — простой и быстрый способ влиться в разработку. Этот язык массово используют региональные веб-студии, которые делают сайты на заказ.
Будет ли популярен PHP в ближайшем будущем
Чтобы ответить на этот вопрос, давайте проанализируем рейтинг W3Techs. В начале ноября 2022 года 64,2% всех сайтов в мире работают на платформе WordPress. В январе 2020 года этот показатель составлял 62,1%, а в январе 2019 года — 59,7%. Значит популярность WordPress, который работает на PHP, растет. Доля Joomla! и Drupal в ноябре 2022 года составляет 2,4% и 1,8%, соответственно. Эти CMS тоже написаны на PHP.
Суммарная рыночная доля трех указанных движков составляет 68%. К ней можно прибавить менее популярные CMS, написанные на PHP, а также сайты на фреймворках, например, Laravel или Yii2.
Системы управления контентом развиваются, работающие на них сайты массово не закроются. Поэтому востребованность PHP в обозримой перспективе будет высокой.
Зарплата PHP-программиста
Уровень заработка PHP-разработчика зависит от региона, квалификации специалиста, режима трудоустройства (удаленка или офис, штат или фриланс) и других факторов. Поэтому для определения уровня зарплат в вашем регионе придется изучать информацию самостоятельно.
В конце июня 2022 года компания Superjob проанализировала зарплатные индексы в IT-секторе и выяснила, что самый большой прирост в зарплате оказался у PHP-разработчиков. Такие программисты в среднем зарабатывают в Москве 250 тыс. рублей, в Санкт-Петербурге — 210 тыс., а в Екатеринбурге и Ростове-на-Дону — по 200 тыс. рублей.
Самостоятельно изучить рынок труда в своем регионе можно с помощью специализированных карьерных сайтов. Например, по запросу «PHP-программист» на hh.ru в ноябре 2022 года есть около 1470 вакансий с зарплатной вилкой от 40 тыс. рублей до 305 тыс. рублей.
Сложно ли изучать PHP
PHP — язык с низким порогом вхождения. Речь идет как об особенностях самого языка, так и о доступности информации: в интернете очень много литературы, платных и бесплатных курсов и упражнений по PHP. Новичкам стоит начинать обучение не с изучения языка, а с изучения программирования.
Перспективы PHP: мнения экспертов
Валентин Удальцов: «Мода на языки меняется, но PHP остается в десятке самых популярных»

О репутации PHP. Создатель PHP Расмус Лердорф изначально задумывал PHP как шаблонизатор, который позволил бы ему делать веб-страницы. Когда PHP стал полноценным языком программирования, Расмус признался, что никогда не думал, что PHP станет таким популярным языком.
Потом PHP развивали разные разработчики, у которых были свои взгляды и планы на этот язык. Из-за этого со временем в синтаксисе PHP накопилось много нелогичностей и неточностей, которые спровоцировали бурные обсуждения сообществе и слухи о скорой смерти языка. Также был период, когда PHP почти не развивался.
Сейчас же все изменилось. Теперь у PHP есть стабильный цикл релиза, достаточно активная поддержка. Новые версии языка включают и крутые фичи, и рефакторинг, исправляющий старые ошибки. Исходный код языка переехал на Github, что привлекло новых контрибьюторов, а сайт externals.io позволил пользователям языка высказывать предложения по улучшениям в PHP и получать обратную связь. Недавно на базе платформы Open Collective появилась организация PHP Foundation, которая на деньги инвесторов нанимает разработчиков на C и организует работу над языком.
О том, что PHP скоро умрет, говорят уже лет 20. И он до сих пор не умирает. Мода на языки меняется, но PHP остается в десятке самых популярных языков.
О достоинствах языка и перспективах. На PHP создано много сайтов. На этом языке пишут свои сервисы такие крупные компании, как «Авито», Skyeng, Lamoda, «СберЗдоровье» и «Юла».
PHP позволяет начать с малого и постепенно переходить к более сложному. Язык отлично интегрирован с базами данных, системами очередей, и у него есть расширения для работы со всем, что нужно современному бэкенд-разработчику. На PHP можно также практиковать любые архитектурные паттерны: CQRS, EventSourcing, Messaging и другие.
На мой взгляд, PHP вряд ли вытеснит популярные сейчас языки. Но я не сомневаюсь, что ближайшие лет 10 он продолжит жить, пусть и на второстепенных позициях. А дальше все зависит от PHP-разработчиков. Чем больше людей будет присоединяться к сообществу и менять язык к лучшему, тем многофункциональнее и популярнее будет PHP и скорее восстановится его репутация.
О плюсах выбор PHP для новичков. Во-первых, на PHP буквально сразу можно писать все, что душе вздумается, а дальше при желании вырасти до серьезного энтерпрайз-кода и попасть в крупные известные компании.
Во-вторых, у PHP классное комьюнити, постоянные конференции, такие как PHP Russia, много каналов информации, в том числе мой канал Пых, и образовательных курсов.
В-третьих, у PHP-разработчиков неплохая зарплата — в среднем от 180 до 250 тыс. рублей в зависимости от региона и позиции (по данным SuperJob на 2022 год).
Александр Макаров: «На ближайшие 15-20 лет у PHP-разработчиков будет много высокооплачиваемой работы»
О достоинствах языка и новых версиях. PHP — отличный язык для веб-разработки и API. У него хорошая инфраструктура, есть семантическое версионирование, фреймворки под разные хостинги и инструменты мониторинга. PHP находится в десятке лучших языков уже более 20 лет, на нем ведут свои проекты крупные компании, а это значит, что у него хорошие перспективы.
PHP — это язык номер один по перформансу среди интерпретируемых языков в мире. Радует, что с каждой новой версией производительность языка возрастает.
Также у PHP недавно появились альтернативные рантаймы (среды выполнения), типа RoadRunner. Они позволяют срезать расходы ресурсов компаний на инициализацию приложения — на настройку и запуск всех необходимых библиотек и фреймворков.
Кстати, с новыми версиями у PHP появилась возможность включать строгую типизацию. Это сильно помогает в написании кода, так как синтаксис стал более лаконичным.
О перспективах языка. PHP всегда был одним из главных языков веб-разработки, но, я уверен, что в ближайшем будущем он станет языком общего назначения. Уже сейчас на PHP можно не только создавать веб-приложения, но и заниматься системным программированием, автоматизацией рабочего процесса. Также с помощью этого языка программисты разрабатывают IoT-девайсы (интернет вещей), вроде умных чайников.
С самого появления PHP разработчики говорят, что он будет терять позиции, однако другие языки рождаются и умирают, а PHP долгие годы держит одни и те же позиции в рейтингах.
Так что перспективы PHP-разработчика на рынке труды высоки. На ближайшие 15-20 лет у них будет много высокооплачиваемой работы. А дальше, если вдруг что-то случится с языковом сообществом, что вряд ли, можно будет перейти на другой язык. Например, PHP похож по синтаксису на Java, поэтому, если у разработчика будет необходимость, у него получится плавный переход.
О плюсах выбора PHP для новичков. Во-первых, у PHP низкий порог входа. Изучение языка, особенно на начальных этапах, будет простым.
PHP изначально создавали с мыслью, что это будет простой язык. Со временем он усложнился, потому что выросла сложность задач, которые он решает. Однако в этом плюс языка: на PHP можно создавать как простые продукты через простые языковые конструкции, и сложные продукты через сложные конструкции.
И во-вторых, огромный плюс PHP — это его языковое сообщество. Многие языковые комьюнити снобские. То есть если новичок задает там вопрос, его либо посылают читать документацию, либо вовсе не отвечают. В сообществе PHP наоборот: у нас принято брать новичков под руки и постепенно вводить в язык, все рассказывать о нем.
Дмитрий Елисеев: «PHP делает всего одну работу, но делает ее идеально»
О плюсах и минусах языка. Если рассматривать все языки с их разделением по областям применения, то есть языки общего назначения, на которых пишут софт разного типа, и есть специализированные, на которых чаще пишут что-то одно.
PHP в этом плане сильно специализированный, так как он используется только для разработки сайтов. В такой специализации есть как плюс, так и минус.
Минус в том, что PHP приспособлен только к стандартному для него синхронному однопоточному выполнению в рамках веб-сервера, а остальное пока не очень умеет. Так что как только требуется сделать что-то для него нестандартное, то возникает необходимость эмулировать эти вещи или делать остальные части на других языках вроде серверного JavaScript для асинхронности или Go для многопоточности.
А плюс в том, что хоть он и делает всего одну работу, но делает ее идеально. Разработчики самого языка не отвлекаются на посторонние задачи и совершенствуют его только в основном направлении, оптимизируя скорость и привнося только важные для него новшества из других языков. Поэтому в нише скриптовых интерпретируемых веб-языков PHP практически является самым быстрым.
К тому же это язык с синтаксисом из семейства более продвинутых Java и C#, что позволяет PHP-программистам учиться у них и при необходимости легко перейти на любой язык этой группы. С Ruby или Python со своим обособленным синтаксисом это будет сделать проблематично.
О перспективах. В PHP переходят хорошие практики из других языков. Создаются и развиваются профессиональные фреймворки. Так что из языка для любительских сайтов он уверенно переходит в нишу быстрых профессиональных веб-проектов, авторам которых не хочется поднимать тяжелые серверы на Java. Учить PHP сейчас или нет? Каждый раз накатывает новая волна технологий и каждый раз снова и снова «хоронят» PHP фразами, что вот-вот очередные Ruby или NodeJS победят PHP. Но десятки лет проходят, а все никто его не побеждает.
Помимо продвинутого программирования веб-приложений на фреймворках, PHP отличается наличием большого числа CMS для разработки стандартных сайтов. И они никуда исчезать не собираются. Для экзотических задач удобны экзотические языки. А для классических проектов успешно хватает классического PHP. Так что всегда можно сказать, что другие языки приходят и уходят, а PHP, С++ и Java скорее всего вечны. И работы на них всегда будет много.
Стоит ли учить PHP: вывод
PHP в обозримой перспективе останется востребованным языком. Его используют в веб-разработке, на PHP написаны популярные движки для сайтов и фреймворки. Это целая инфраструктура, которая требует постоянного участия программистов. Поэтому специалисты по PHP останутся востребованными на рынке труда.
Станьте профессиональным PHP-разработчиком с нуля за 10 месяцев На Хекслете есть профессия «PHP-разработчик». Пройдите ее, чтобы изучить один из самых известных языков программирования, освоить популярные фреймворки и создать большое портфолио с проектами на GitHub.
Для чего используют PHP и почему его ненавидят
Для чего нужен язык программирования PHP: какие возможности он дает, что можно реализовать с его помощью и в чем главная боль PHP-разработчиков.
PHP — один из самых популярных языков программирования в веб-разработке. Он применяется для создания сайтов и веб-приложений любой сложности: от лендингов и блогов до интернет-магазинов и браузерных игр.
Его преимущества — в широких возможностях и защищенности благодаря закрытому исходному коду. К минусам можно отнести то, что без сервера с интерпретатором код работать не будет (исправлено в новых версиях языка).
Какие задачи можно решить на PHP
Для начала работы создается страница с расширением .php или .html (в зависимости от конфигурации сервера). Исходный код этой страницы содержит теги разметки html и непосредственно PHP-команды. Они заключаются между операторами <? PHP (допустимо писать <?) и ?>. Вот как выглядит подобный код:
Открыв эту страницу, пользователь увидит надпись «Здравствуйте, Петя!». Если вы уже знакомы с программированием, то могли заметить, что $username — это переменная, а команда echo используется для вывода данных на экран.
В PHP поддерживаются применение функций, математические вычисления, работа с переменными (как в примере выше) и массивами, прописывание условий «если — то», создание объектов и многое другое. Чаще всего это используется:
- для отправки форм;
- работы с базами данных;
- создания динамичных страниц;
- использование сессий и cookies;
- загрузки и обработки файлов;
- создания изображений;
- парсинга.
Теперь обо всем этом по порядку.
Формы
Если вы знакомы с html, то знаете, что с его помощью нельзя просто так получить информацию, введенную пользователем. То есть вы можете создать красивую форму, но без PHP или другого подобного языка все данные просто исчезнут, когда он нажмет кнопку «Отправить».
Для начала создается форма подобного вида:
У тега <form> есть два атрибута: action и method. В первом указывается страница, куда будут отправлены данные, а во втором — метод передачи. Всего их два:
- POST — безопасный, но медленный метод. Им пользуются для передачи конфиденциальной информации: пароли, логины, адреса и так далее.
- GET — простой, но уязвимый метод. Вы могли видеть ссылки вида index.php? page=8& category=2. Информация записывается прямо в ссылку, и любой может поменять ее значение или поделиться ею, поэтому лучше не передавать так ничего секретного и позаботиться о дополнительной безопасности.
Из формы на страницу auth.php будут переданы переменные login и password. В зависимости от метода они попадут в супермассив $_POST или $_GET. Дальше на этой странице можно будет сделать с ними все что угодно, в том числе и проверить их наличие в базе данных.
Базы данных
К сайту на PHP подключается база данных. Это во многом упрощает разработку, потому что вся информация будет храниться в таблицах, а не в самом коде. Так быстрее редактировать и добавлять данные на сайт.
Например, сведения о пользователе. Если бы не базы данных, пришлось бы хранить все авторизационные данные в коде, а это не лучший вариант, потому что тогда загрузка длилась бы вечность.
Продолжим пример с авторизацией. Страница auth.php получает логин и пароль. Дальше она может сделать запрос в базу данных, чтобы узнать, существует ли такая комбинация.
Разумеется, это очень упрощенная версия кода, которую вряд ли можно назвать защищенной. На самом деле нужно выполнить множество проверок, чтобы исключить вероятность SQL-инъекции — это когда пользователь пытается ввести некорректную информацию, чтобы получить доступ к базе данных.
Динамичные страницы
Это одна из лучших возможностей PHP. Представьте, что вы создали десять страниц на html. Если вы захотите внести изменение в дизайн, то придется переделывать все десять файлов. А если страниц будет несколько десятков, сотен или даже тысяч, то нужно будет заняться и ими.
На PHP достаточно создать один файл, который будет отвечать за главную страницу, каталог товаров и все остальное.
Чтобы сделать это, используйте метод GET. Если пользователь перейдет по ссылке index.php, он окажется на главной. А если введет index.php? page=articles& то увидит статью с идентификатором пять.
Также можно подключать другие файлы с помощью функции include (). Допустим, у вас есть несколько страниц:
- index.php;
- contacts.php;
- cart.php;
- about.php и так далее.
И вам нужно, чтобы на этих страницах были какие-то общие элементы — например, одинаковые шапка и подвал сайта. Для этого вы можете создать файл с разметкой для этих элементов и подключать его в нужных местах.
Это экономит массу времени и места, потому что не нужно каждый раз прописывать этот код заново.
Также обратите внимание, что подключаемые файлы лучше хранить в отдельной папке. В файле .htaccess нужно запретить доступ к содержимому этого каталога напрямую. Это обезопасит ваш сайт от утечки данных.
Что такое .htaccess?
Это файл конфигурации сервера, который позволяет управлять страницами сайта. В нём можно прописывать настройки редиректа, безопасности и отображения страниц, а также оптимизировать скорость загрузки контента. Обычно файл .htaccess лежит в корневой папке, но может находиться где угодно — тогда настройки в нём будут действовать только на файлы из этого раздела. Создать и редактировать .htaccess можно с помощью любого текстового редактора.
Сессии и куки
Следующая интересная возможность — сессии и куки. Они нужны для того, чтобы не забивать базу данных и хранить часть информации на компьютере пользователя. Например, многие интернет-магазины помещают в куки пользователя данные о посещениях и просмотренных товарах, чтобы потом вывести не «Добро пожаловать! Посмотрите наши гироскутеры!», а «Рады снова вас видеть! Вернулись за гироскутером XYZ?».
Также их можно использовать для создания системы авторизации.
Работать с такими вещами нужно аккуратно, потому что можно забить данными компьютер пользователя или нарушить законодательство некоторых стран. По европейским и российским законам, например, вы обязаны спросить разрешение на использование cookies.
Файлы
Можно реализовать не только загрузку файлов на сервер, но и их редактирование.
Вот пример кода, позволяющий редактировать данные в блокноте:
На PHP вполне можно создать файловый менеджер или текстовый редактор.
Изображения
Используется, например, для реализации капчи, когда нужно, чтобы каждый раз выводилось уникальное число. Для этого создается файл captcha.php, а потом он указывается как ссылка на изображение.
В самом этом файле генерируется случайное число, а потом выводится на изображение. Или можно обрезать картинку, загруженную пользователем. Например, если необходимо подогнать все аватарки под один размер.
Если вы собираетесь использовать этот код, добавьте масштабирование и поработайте над соотношением сторон.
Парсинг
Парсинг — это сбор информации с других сайтов. Например, вы часто могли видеть поиск по сайту, который реализован с помощью Google или «Яндекса».
Так это реализуется с помощью библиотеки PHP Simple HTML DOM Parser. Но, как вы могли заметить, мы получили все ссылки на странице — то есть не только ведущие на найденные сайты, но и ведущие на другие проекты «Яндекса».
Почему программисты ненавидят PHP
Если вы были хоть на одном форуме для программистов, то могли увидеть множество негативных высказываний.
Одна из причин ненависти к PHP — переменные. Если в других языках их нужно объявить заранее, да еще и указав тип, то в PHP можно просто поставить знак «$» в любой части кода.
Сравните код на C:
С одной стороны, это упрощает жизнь. С другой — в переменную можно поместить что угодно и когда угодно. У них нет какого-то типа, а это значит, что число запросто может стать строкой. Если вы этого не хотели, то вместо вычислений вы получите ошибку. Это и дар, и проклятие одновременно.
Следующая причина — смешанный код. PHP приходится использовать в файлах с версткой HTML. Это затрудняет работу с кодом, потому что не всегда можно легко найти нужный фрагмент или понять, где ты находишься сейчас.
Другие языки, вроде JavaScript, можно выносить в отдельный файл и оттуда взаимодействовать со страницей. В PHP же это будет выглядеть так:
То есть исходный код является смесью двух языков. Хотя этого можно избежать, если не писать код в этом же файле, а подключать другие, как это было в примере с подключением шапки и футера.
Еще PHP достаточно прост в изучении, поэтому на нем создано около 83% сайтов по всему интернету. Его простота стала причиной появления миллионов сайтов с кривым кодом. Поэтому можно сказать, что ненависть вызвана неопытными разработчиками.
Новички любят всё усложнять и пишут так:
Хотя можно написать так:
И хотя таких примеров много и в других языках, именно простота PHP послужила благоприятной средой для появления всего этого добра. Если на C# придется постараться, чтобы заставить кривой код работать, то PHP постарается за вас.
Также можно сказать, что определенная доля предвзятости будет всегда. В новых версиях языка исправлено очень много ошибок, но программисты все равно продолжают смеяться над ними, потому что сложилась такая традиция.
В старых версиях была уязвимость, которая позволяла создать переменную через ссылку. То есть если сейчас из ссылки? var=5 мы получим ячейку в супермассив $_GET, раньше создавалась еще и переменная $var. И если программист забывал выполнить проверку всех данных, то его сайт был в опасности. Сейчас этой уязвимости нет, как и многих других, но мнение людей все равно не меняется.
У PHP на самом деле много недостатков:
- неудобная работа с объектами;
- огромное количество встроенных функций, которое замедляет загрузку и ограничивает в выборе имени для своих функций;
- небольшое количество пакетов и фреймворков;
- неудобные регулярные выражения;
- отсутствие многопоточности и так далее.
Многие ошибки исправляются, и с каждой версией их становится меньше, хотя PHP считают «мертвым» языком уже больше 20 лет.
Заключение
PHP — отличный язык, с помощью которого можно реализовать любой функционал. Хоть его и не любят многие разработчики, со своей задачей он справляется отлично. И неразумно игнорировать его просто потому, что так делают многие, — нужно просто подстроиться под несколько недостатков, чтобы воспользоваться огромным количеством преимуществ.
Используем PHP по назначению
Язык программирования PHP берёт своё начало в 1995 году и является продуктом эпохи зарождения современных веб стандартов, таких как http (версия 1.0 — 1996), html (версия 2.0 — 1995), javascript (1995 год), url (1990 — 1994 года). Первоначально аббревиатура php имела расшифровку Personal Home Page Tools, далее трансформировавшись в Hypertext Preprocessor или «препроцессор гипертекста». Об использовании PHP в качестве препроцессора и будет посвящено несколько следующих абзацев.
Интерпретатор PHP позволяет вставлять в любой текст специальные тег <?php ?>, с помощью которого можно подставить в страницу динамический контент, что очень удобно использовать внутри html документов. Полученный результат сразу подаётся на стандартное устройство вывода, известное как stdout (подробнее смотри здесь). Есть возможность буферизовать вывод до востребованности через функцию ob_start, но для нашей первой html страницы это не понадобится. Самый последний стандарт html под номером 5 ввёл несколько новых тегов для упрощения разметки, повышения читаемости и семантичности веба (что бы это не значило). Поэтому сразу воспользуемся всей мощью HTML5 и напишем шаблон страницы со вставками на рассматриваемом препроцессоре.
Сохраним эту страницу в файл index.html. Функционал блога в первой его версии будет предусматривать хранение публикаций в виде html страниц внутри заранее заданной директории (например pages/) и меню позволяющее перейти сразу на нужную публикацию.
Пример публикации, которая будет выведена в ленту блога.
В корне проекта добавим директорию pages/ и сохраним нашу статью под произвольным именем, например как 2018-trends.html.
Теперь нам нужен веб сервер для обработки входящих http запросов от пользователей, и сервер приложения для бизнес логики. Чтобы не плодить лишнии сущности напишем небольшую программу на языке программирования Go, которая будет выступать и в роли веб сервера, и содержать код блога. Для передачи пользовательских запросов из хостовой программы в препроцессор воспользуемся стандартным потоком ввода (stdin), для сериализации данных воспользуемся популярным форматом для сериализации данных — json.
Скрипт для обработки входных данных:
Теперь запускаем на исполнение программу через go run и делаем запрос на страницу через любой браузер, например таким образом:
Результат представлен на КДПВ.
Пытливый читатель может заметить, что мы сильно теряем в производительности запуская на каждый запрос php процесс. Данный момент легко оптимизировать используя механизм pipes и запуская php процесс единожды в фоне, но это уже совсем другая история.