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

Раствор, который «скрепляет» интернет

Именно так охарактеризовал PHP один мой знакомый, занимающийся созданием интернет-ресурсов уже более десятка лет. И он прав, наверное, процентов на 200% (а может и больше).

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

Доказывать роль PHP в создании интернет – вещь неблагодарная. Тут, как говорится, могут начать выступать сторонники других серверных языков. Мол, «препроцессор гипертекста» (так расшифровывается аббревиатура PHP) уже отжил свое. Многие из его функций реализованы даже в …

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

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

Если вас интересует, почему так скаканул Java, то отвечу: благодаря мобильной операционке Android, приложения под которую разрабатываются на этом языке.

Собственные грабли

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

Как язык программирования PHP для начинающих я не рассматривал в принципе. Он казался чересчур запутанным. Вот другое дело ASP.NET: коммерческий язык, основанный на C#. Ох, какие воздушные замки я тогда строил! И для этого были все предпосылки:

Технология разработана таким «гигантом мысли», как Microsoft.

Наличие специализированного ПО – мощного редактора Visual Studio.

Обширная и хорошо описанная документация.

Надежда на «здоровое» будущее.

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

А вот язык программирования PHP с нуля мне сразу не дался. Честно, я пытался с ним подружиться (надо же было, как-то сдавать экзамен). Но при изучении его основ он показался мне черствым и даже холодным.

В общем, занялся я ASP.NET. Состряпал первый свой сайтик. Ну, в среде разработки вроде все функционирует. Кроссбраузерность проверил в нескольких популярных браузерах. Думаю, пришло время и «повоевать». Так сказать, показать свое «детище» всей стране (как минимум). Вот тут и оказались» грабли».

Мои попытки найти в Рунете хостинг с поддержкой ASP.NET так и не увенчались успехом. Было, конечно, несколько платных площадок, но цены за размещение на них сайта были явно не «студенческие».

Кое-как нарыл я в «Буржунете» бесплатный вариант хостинга (кстати, спонсируемого Microsoft). Ну «поклацал», насладился широтой своей мысли, а дальше дело не пошло. И все из-за того, что большая часть сайтов уже тогда делалась на PHP.

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

Но лучше применять комплексный подход – добавить еще и толковый . Это позволит оттачивать свое умение сразу на практических примерах. И мой вам совет – поменьше занимайтесь копипастом кода! Почему, сейчас поясню.

Когда вы будете набирать примеры скриптов самостоятельно, то быстрее привыкните и запомните особенности синтаксиса PHP. Что касается литературы, то выбирайте самоучитель с основами программирования на PHP. И желательно, чтобы автор выкладывал код всех приводимых примеров на своем ресурсе в Сети.

Также сразу перед началом обучения скачайте и установите Open Server. Этот программный пакет включает в себя все среды, которые потребуются вам для написания и тестирования кода.

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

Билл Карвин, работает веб-разработчиком более 20 лет

Совсем недавно сайт Stack Overflow опубликовал свой ежегодный обзор ведущих трендов Stack Overflow Developer Survey 2017 . В нем PHP все еще занимает одну из ведущих ролей.

  • JavaScript - 62.5%
  • SQL - 51.2%
  • Java - 39.7%
  • C# - 34.1%
  • Python - 32.0%
  • PHP - 28.1%
  • C++ - 22.3%
  • C - 19.0%
  • TypeScript - 9.5%
  • Ruby - 9.1%

PHP все еще используется чаще, нежели Ruby. Да простят меня фанаты языка Ruby, так как эта информация в первую очередь связана с популярностью языка программирования, нежели с удобством его использования.

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

Должны пройти десятки лет, прежде чем некогда популярный язык исчезнет. До сих пор существуют приложения, разработанные на таких языках, как Perl, Pascal, BASIC и даже COBOL. Может быть, эти языки сейчас почти не используются в разработке новых проектов, но созданные с помощью них приложения продолжают существовать.

Нирбхай Наик, Digital Marketing

Если бы этот вопрос был задан 2-3 года назад, то ответ был бы несомненно положительным. Основная причина плохой репутации - не самый удобный дизайн. Кроме того, многим разработчикам не нравятся те изменения, которые претерпел этот язык за последние 10 лет.

Но сейчас, PHP7 вполне может стать спасением.

Итак, что же улучшилось в PHP 7? По сравнению с предыдущей версией, в PHP 7 было внесено огромное количество изменений в лучшую сторону. Вот некоторые из них:

  • Улучшенная производительность
  • Оператор «космический корабль»
  • Null-коалесцентный оператор
  • Типы скалярных параметров
  • Подсказки по возвращаемым типам
  • Анонимные классы

И многое другое. Новые функции могут вернуть PHP к жизни, но для этого нам придется подождать и понаблюдать за тем, каким образом разработчики будут применять новшества в PHP 7.

Куда же движется PHP7?

PHP7 – это настоящее спасение для PHP. Несомненно, что дизайн раньше PHP оставлял желать лучшего.

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

Что говорит TOBIE INDEX о будущем PHP ?

Tobie Index – это индекс, оценивающий популярность языков программирования на основе подсчета результатов поисковых запросов.

Как видно из картинки выше, PHP медленно движется вверх, благодаря PHP7. Если бы мы рассматривали данное изображение в 2014 г., то мы бы точно могли сказать, что PHP вскоре исчезнет. После 2004, когда язык получил звание года, его популярность стабильно снижалась. График выглядит поразительным, показывая, что в начале разработчикам понравилось то, что может предложить PHP, но после более новые и перспективные технологии вытеснили его.

WordPress переходит на JavaScript

А теперь давайте поговорим о далеко не радужных перспективах, ожидающих PHP в будущем. WordPress, самая популярная CMS (система управления контентом), медленно переходит на JavaScript. WordPress, покрывая 25% вебсайтов в интернете, выказал явный интерес по отношению к JavaScript.

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

Ситуация на рынке

Было бы глупо попытаться предсказать будущее языка программирования, не принимая во внимание предпочтения профессиональных разработчиков программного обеспечения. Если вы PHP-разработчик или работаете в IT-фирме, то вы наверняка имеете представление о том, какое место на рынке занимает PHP.

В настоящее время на рынке существуют следующие тенденции касаемо языка PHP:

  • PHP-разработчиков намного проще найти, нежели экспертов в других языках программирования.
  • Нанять специалиста в сфере PHP намного дешевле.
  • Из-за наличия достаточного количества специалистов обслуживание и поддержка продуктов на данном языке не является дорогостоящей
  • PHP, вероятно, один из самых простых для изучения языков программирования. Это позволяет компаниями нанимать молодых перспективных специалистов и обучать их соответствующим образом.
  • Существует огромное количество фреймворков и CMS (систем управления содержимым), работающих на PHP. Например, WordPress, Joomla, Magento, Drupal и др.
  • Принимая во внимание все вышеназванные пункты, можно точно сказать, что PHP вряд ли исчезнет в ближайшее время. В конце концов, пользователям совершенно все равно, какая технология используется для создания приложения. Для них главное, чтобы оно работало.

    Что вам делать, если вы PHP -разработчик?

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

    Хорошим советом в этом случае будет изучить еще один язык. Это поможет чувствовать себя более безопасно в будущем.

    Выводы

    Умер ли PHP? Вряд ли. Исчезнет ли этот язык в будущем? Тяжело сказать, так как на это будет влиять слишком большое количество факторов.

    Влад Ка, пишет о веб-разработках

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

    Язык PHP может быть использован для целого ряда задач: к примеру, ReactPHP позволяет разработчику запускать полноценный постоянно обрабатывающий запросы сервер. С помощью PHP можно создавать длительные процессы. Кроме того, существует огромное количество инструментов для поддержки и управления этими процессами (например, supervisord).

    Вильям Харли, разработчик. Работает с веб-разработкой с 1996

    Согласно некоторым источникам (Historical trends in the usage of server-side programming languages, March 2017) на PHP работает около 80%+ всего доступного интернета. Эта цифра разнится в зависимости от методологии сбора данных, но так или иначе, это очень высокий показатель!

    Ричард Кеннет Энг, использует Fortran, Tandem TAL, C/C++, C#, Obj-C, Java, Smalltalk, Python, Go

    Большинство сайтов в мире существуют на PHP. Вряд ли владельцы и создатели сайтов собираются выбросить потраченные деньги на ветер.

    PHP всегда входил в десятку языков программирования по версиям самых разных изданий: TIOBE, RedMonk, IEEE Spectrum, PYPL, CodeEval, HackerRank и др.

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

    Язык мертв только тогда, когда никто им не пользуется. Вряд ли это то, что происходит сейчас с PHP.

    Вахрох Вейн, разработчик на Delphi / PHP / C++ Builder / JS / C#, а также трейдер ценных бумаг

    В последние годы популярность этого языка уменьшалась. А в это время разработчики переписывали его в соответствии со стандартами 201X. К слову, в отличие от Phyton, PHP был переписан без потери обратной совместимости (99% сохранение) существующей кодовой базы.

    С появлением PHP 7+, язык получил современные функциональные возможности (синтаксис, конструкции), и теперь с ним крайне приятно работать. Кроме того, большинство позабыло, что JavaScript, приняв на себя дизайн передней части, повлиял на все базовые языки программирования, кроме PHP.

    Макс Чистоклетов, увлекается разработкой на языках Haskell / Scala

    Зависит от того, что вы подразумеваете под словом «исчезнет». Приложения, написанные на PHP, не возьмут и не исчезнут однажды (или даже в течение пары месяцев). Поэтому нет.

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

    Я бы посоветовал ознакомиться с таким явлением, как Lindy effect - Wikipedia . Я думаю, оно сможет дать приблизительное понимание того, как долго может жить существующая технология.

    Хорошо известно, что PHP - это мёртвый язык программирования и его 22-летняя экосистема фактически стала бесполезна, когда появился Node и новые асинхронные фреймворки на его основе. Превосходство Node очевидно, потому что все знают, что однопоточные асинхронные программы более лучше по умолчанию. И быстрее.


    «Но Саймон! Почему?!", вы, вероятно, прокричите увидев этот текст на экране. И вот почему:

    Перспективы трудоустройства

    PHP-разработчики не пользуются спросом. По прошествии 22 лет, все компании, использующие PHP, сразу же отказались от него, как только был выпущен Node v0.0.1, потому что этот стек разработки мгновенно стал лучшим. Кроме того, всем известно, что для успешного запуска (забудем про Slack) вам нужно создавать веб-интерфейсы на Node, а данные сохранять в MongoDB.


    Иначе просто невозможно добиться успеха.


    Приведем немного научных™ фактов, чтобы доказать эти утверждения:

    $заголовок = ‘PHP-разработчики не могут найти работу чтобы содержать свои семьи’;

    Экосистема языка

    Экосистема, вероятно, является самым важным фактором в принятии решения не использовать язык программирования. К счастью для нас, PHP существует достаточно давно, и его экосистема полна крупных, хорошо поддерживаемых и полнофункциональных фреймворков, которые все ненавидят - это и Laravel, своего рода эквивалент Rails, или энтерпрайз решения на подобии Symfony и Zend.


    В отличие от PHP, разработчикам Node не нужно беспокоиться о том, чтобы найти фреймворк, который придётся ненавидеть, потому что каждый просто пишет свой собственный. Создавая свои собственные фреймворки, разработчик может действительно выделиться на фоне конкурентов, изобретая колесо таким образом, который имеет смысл только для него самого (разработчика). Эта практика также удваивает гарантию сохранения работы, что очень важно, как показано в результатах научных™ исследований, приведенных выше. Также, это утраивает Фактор Крутости Разработчика™ (Developer Cool Factor™).


    Ошеломляющее свидетельство превосходной экосистемы Node можно увидеть на графике ниже:



    $заголовок = ‘Чем больше фреймворков - тем лучше’;

    Временные затраты

    Реальный уровень производительности разработчика можно измерить только оценив как он тратит собственное время. Видно, что разработчики PHP больше времени тратят на написание кода и построение функциональных приложений, чем на культивацию Фактора Крутости Разработчика™ и получение звёзд на GitHub. Это, очевидно, отразится на них негативно при работе в стартапе, ведь они используют свое время непродуктивно. Все мы знаем что звёзды GitHub - это количественный способ оценки навыков разработчика.


    Неспособность PHP-разработчиков внести свой вклад в сообщество показана ниже:





    $заголовок = ‘Выслушивать жалобы - менее продуктивно, чем жаловаться. Факт.’;

    Вещи, которые вы не сможете сделать являясь PHP-разработчиком
    • Программировать асинхронно (по-настоящему!);
    • Получить простую и понятную последовательность параметров функций стандартной библиотеки;
    • Создать свой собственный шаблон приложения React TODO MVC;
    • Реализовать полноценный бэкенд на стороне сервера с фронтендом на стороне клиента;
    • Создавать собственные утечки памяти;
    • Сделать пробел значимым;
    • Добиться потери данных между запросами;
    • Решить проблему голода во всём мире;
    • Программировать на JavaScript;
    • Признаться людям, что вы - PHP-разработчик.
    PHP как инструмент для бизнеса

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



    $заголовок = ‘Node замечательный и эффективный инструмент зла’;

    Заключение

    Каждый разработчик знает, что самый быстрый и эффективный путь к получению чего-либо - это много жаловаться и каждый раз начинать всё с нуля. Рынок всегда будет ждать запуска вашего стартапа, ведь в первую очередь нужно закончить создание собственного фреймворка.
    Кроме того, почему мы должны беспокоиться о перекладывании работы и полагаться на сообщество с открытым исходным кодом, когда мы можем просто всё сделать сами?

    PHP – это широко используемый язык сценариев общего назначения с открытым исходным кодом.

    Говоря проще, PHP это язык программирования, специально разработанный для написания web-приложений (сценариев), исполняющихся на веб-сервере.

    Аббревиатура PHP означает “Hypertext Preprocessor (Препроцессор Гипертекста)". Синтаксис языка берет начало от C, Java и Perl. PHP достаточно прост для изучения. Преимуществом PHP является предоставление веб-разработчикам возможности быстрого создания динамически генерируемых web-страниц.

    Возможности PHP

    Существуют три основных области, где используется PHP.

    Создание скриптов для выполнения на стороне сервера. PHP наиболее широко используется именно таким образом. Все, что для этого понадобится, это парсер PHP (в виде программы CGI или серверного модуля), веб-сервер и браузер. Чтобы просматривать результаты выполнения PHP-скриптов в браузере, необходим работающий веб-сервер и установленный PHP.

    Создание скриптов для выполнения в командной строке. Вы можете создать PHP-скрипт, способный запускаться вне зависимости от веб-сервера и браузера. Все, что потребуется - парсер PHP. Такой способ использования PHP идеально подходит для скриптов, которые должны выполняться регулярно, например, с помощью cron (на платформах *nix или Linux) или с помощью планировщика задач (Task Scheduler) на платформах Windows. Эти скрипты также могут быть использованы в задачах простой обработки текстов. Дополнительная информация находится здесь.

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

    История PHP

    Истоки PHP лежат в старом продукте, имевшем название PHP/FI . PHP/FI был создан Расмусом Лердорфом в 1995 году и представлял собой набор Perl-скриптов для ведения статистики посещений его резюме.

    Расмус Лердорф (англ. Rasmus Lerdorf; р. 22 ноября 1968) - датский программист (ныне живущий в Канаде), написавший в 1994 году набор скриптов на Perl/CGI.

    Развитие web еще только начиналось, никаких специальных средств для решения таких задач не было, и к автору хлынул поток сообщений с вопросами. Лердорф начал бесплатно раздавать свой инструментарий, названный «Personal Homepages Tools» - («Инструменты для персональных домашних страниц»). Очень скоро потребовалась большая функциональность и Расмус пишет новую, намного более обширную версию на C, работающую с базами данных и позволяющую пользователям разрабатывать простейшие web-приложения. Расмус Лердорф решил выложить исходный код PHP/FI на всеобщее обозрение, исправление ошибок и дополнение.

    PHP/FI (Personal Home Page / Forms Interpreter - Персональная Домашняя страница / Интерпретатор Форм) включал в себя базовую функциональность сегодняшнего PHP. Он имел переменные в стиле Perl, автоматическую интерпретацию форм и возможность встраиваться в html-код. Собственно синтаксис языка имел много общего с Perl, хотя и был намного проще и ограниченнее.

    В 1997 выходит PHP/FI 2.0 . Вторая версия C-имплементации обозначила группу пользователей: несколько тысяч людей по всему миру, с примерно 50 000 доменами, что составляло около 1% всего числа доменов Интернета. Несмотря на то, что разработкой занималось уже несколько людей, PHP/FI 2.0 все еще оставался крупным проектом одного человека.

    Официально PHP/FI 2.0 вышел только в ноябре 1997 года, после проведения большей части своей жизни в бета-версиях. Вскоре после выхода его заменили альфа-версии PHP 3.0.

    PHP 3.0 была первой версией, напоминающей PHP, каким мы знаем его сегодня. В 1997 году Энди Гутманс (Andi Gutmans) и Зив Сураски (Zeev Suraski) переписали код с начала: разработчики сочли PHP/FI 2.0 не пригодным для разработки приложения электронной коммерции, над которым они работали для проекта Университета. Для совместной работы над PHP 3.0 с помощью базы разработчиков PHP/FI 2.0 Энди, Расмус и Зив решили объединиться и объявить PHP 3.0 официальным преемником PHP/FI, разработка же PHP/FI была практически полностью прекращена.

    К концу 1998, PHP использовался десятками тысяч пользователей. Сотни тысяч web-сайтов сообщали о том, что они работают с использованием языка. В то время PHP 3.0 был установлен приблизительно на 10% серверах Интернета!

    PHP 3.0 был официально выпущен в июне 1998 года после 9 месяцев публичного тестирования.

    К зиме 1998 года, практически сразу после официального выхода PHP 3.0, Энди Гутманс и Зив Сураски начали переработку ядра PHP. В задачи входило увеличение производительности сложных приложений и улучшение модульности базиса кода PHP. Расширения дали PHP 3.0 возможность успешно работать с набором баз данных и поддерживать большое количество различных API и протоколов, но PHP 3.0 не имел качественной поддержки модулей и приложения работали не эффективно.

    Новый движок, названный "Zend Engine" (www.zend.com) (от имен создателей: Zeev и Andi), успешно справлялся с поставленными задачами и впервые был представлен в середине 1999 года. PHP 4.0 , основанный на этом движке и принесший с собой набор дополнительных функций, официально вышел в мае 2000 года, почти через два года после выхода своего предшественника PHP 3.0. В дополнение к улучшению производительности, PHP 4.0 имел еще несколько ключевых нововведений, таких как поддержка сессий, буферизация вывода, более безопасные способы обработки вводимой пользователем информации и несколько новых языковых конструкций.

    Пятая версия PHP была выпущена разработчиками 13 июля 2004 года. Изменения включают обновление ядра Zend (Zend Engine 2), что существенно увеличило эффективность интерпретатора. Введена поддержка языка разметки XML. Полностью переработаны функции ООП, которые стали во многом схожи с моделью, используемой в Java. В частности, введён деструктор, открытые, закрытые и защищённые члены и методы, окончательные члены и методы, интерфейсы и клонирование объектов. В последующих версиях также были введены пространства имён, замыкания и целый ряд достаточно серьёзных изменений, количественно и качественно сравнимых с теми, которые появились при переходе на PHP 5.0 .

    Шестая версия PHP 6.0 разрабатывалась с октября 2006 года. Было сделано множество нововведений, как, например, исключение из ядра регулярных выражений POSIX и «длинных» суперглобальных массивов, удаление директив safe_mode, magic_quotes_gpc и register_globals из конфигурационного файла php.ini. Одним из основных новшеств должна была стать поддержка Юникода. Однако в марте 2010 года разработка PHP6 была признана бесперспективной из-за сложностей с поддержкой Юникода. Исходный код PHP6 перемещён на ветвь, а основной линией разработки стала версия 5.4.

    В 2014 году было проведено голосование, по результатам которого следующая версия получила название PHP 7 . Выход новой версии планировался в середине октября 2015 года. В марте 2015 года Zend представили инфографику в которой описаны основные нововведения PHP 7.

    Архитектура PHP

    PHP является интерпретатором с встроенным блоком трансляции, оптимизирующим ход интерпретации.

    Использование интерпретатора (а значит и PHP) имеет свои неоспоримые преимущества:

    1. Нет необходимости заботится об освобождении выделенной памяти, не нужно закрывать файлы по окончании работы с ними – всю рутинную работу сделает интерпретатор, поскольку программа выполняется под его бдительным контролем;

    2. Не нужно думать о типах переменных, а также не нужно объявлять переменную до его первого использования;

    3. Отладка программ и обнаружение ошибок существенно упрощаются – интерпретатор полностью контролирует этот процесс;

    4. В контексте веб-приложений, интерпретатор также имеет еще очень важное преимущество – нет опасности «зависания» сервера при неправильной работе программы.

    Синтаксис PHP

    Синтаксис PHP подобен синтаксису языка Си. Некоторые элементы, такие как ассоциативные массивы и цикл foreach , заимствованы из Perl.

    Для работы программы не требуется описывать какие-либо переменные, используемые модули и т. п. Любая программа может начинаться непосредственно с оператора PHP.

    Простейшая программа на PHP выглядит следующим образом:

    Помимо ограничителей , допускается использование дополнительных вариантов, таких как и .

    Переменные и типы данных

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

    К скалярным типам данных относятся:

    целый тип (integer),
    вещественный тип данных (float, double),
    логический тип (boolean),
    строковый тип (string),
    и специальный тип NULL.

    К нескалярным типам относятся:

    «ресурс» (resource),
    массив (array),
    объект (object),

    К псевдотипам относятся:

    mixed любой тип
    number число (integer либо float)
    callback (string или анонимная функция)
    void отсутствие параметров

    Диапазон целых чисел (integer) в PHP зависит от платформы (обычно, это диапазон 32-битных знаковых целых чисел, то есть, от −2 147 483 648 до 2 147 483 647). Числа можно задавать в десятичной, восьмеричной и шестнадцатеричной системах счисления.

    Диапазон вещественных чисел (double) также зависит от платформы (для 32-битной архитектуры диапазон позволяет оперировать числами от ±1.7×10−308 до ±1.7×10+308).

    PHP предоставляет разработчикам логический тип (boolean), способный принимать только два значения TRUE («истина») и FALSE («ложь»). При преобразовании в логический тип число 0, пустая строка, ноль в строке «0», NULL и пустой массив считаются равными FALSE. Все остальные значения автоматически преобразуются в TRUE.

    Строка может быть определена тремя различными способами.

    • одинарными кавычками
    • двойными кавычками
    • heredoc-синтаксисом

    Простейший способ определить строку - это заключить ее в одинарные кавычки (символ "). Чтобы использовать одинарную кавычку внутри строки ее необходимо предварить символом обратной косой черты (\), т. е. экранировать. Если обратная косая черта должна идти перед одинарной кавычкой либо быть в конце строки, необходимо продублировать ее. Нет необходимости экранировать саму обратную косую черту.

    Если строка заключена в двойные кавычки ("), PHP распознает большее количество управляющих последовательностей для специальных символов:

    heredoc-определение (PHP):

    Переменные внутри heredoc интерпретируются. Если вы хотите точно определить конец имени, заключайте имя переменной в фигурные скобки.

    $s = и . Кроме того, до версии 6.0 допускается использование ограничителей языка программирования ASP (конструкции и могут быть выключены в конфигурационном файле php.ini).

    Имена переменных начинаются с символа $, тип переменной объявлять не нужно. В отличие от имён функций и классов, имена переменных чувствительны к регистру. Переменные обрабатываются в строках, заключённых в двойные кавычки, и heredoc-строках (строках, созданных при помощи оператора $b; // Обращение к полю a объекта, т.к. $b = "a"

    $obj->$c(); // Вызов метода function_name() объекта

    Суперглобальные массивы. Суперглобальными массивами (англ. Superglobal arrays) в PHP называются предопределённые массивы. Большая часть этих массивов содержит входные данные запроса пользователя (параметры GET-запроса, поля форм при посылке методом POST, куки и т. п.).

    Все суперглобальные массивы кроме $GLOBALS и $_REQUEST имеют устаревшие аналоги с длинными именами, которые доступны вплоть до пятой версии PHP (в шестой версии планируется их исключение). Таким образом, обращения $_GET["year"] и $HTTP_GET_VARS["year"] идентичны.

    Массив всех глобальных переменных (в том числе и пользовательских).

    $_SERVER (устаревший аналог -- $HTTP_SERVER_VARS)

    Содержит переменные окружения, которые операционная система передает серверу.

    $_ENV (уст. $HTTP_ENV_VARS)

    Текущие переменные среды (англ. Environment variables). Их набор специфичен платформы, на которой выполняется скрипт.

    $_GET (уст. $HTTP_GET_VARS)

    Содержит параметры GET-запроса, переданные в URI после знака вопроса «?».

    $_POST (уст. $HTTP_POST_VARS)

    Ассоциативный массив значений полей HTML-формы при отправки методом POST. Индексы элементов соответствуют значению атрибута name элементов управления HTML-формы.

    $_FILES (уст. $HTTP_POST_FILES)

    Ассоциативный массив со сведениями об отправленных методом POST файлах. Каждый элемент имеет индекс идентичный значению атрибута «name» в форме и, в свою очередь, также является массивом со следующими элементами:

    ["name"] -- исходное имя файла на компьютере пользователя.

    ["type"] -- указанный агентом пользователя MIME-тип файла. PHP не проверяет его и поэтому нет никаких гарантий что указанный тип соответствует действительности.

    ["size"] -- размер файла в байтах.

    ["tmp_name"] -- полный путь к файлу во временной папке. Файл необходимо переместить оттуда функцией move_uploaded_file. Загруженные файлы из временной папки PHP удаляет самостоятельно.

    $_COOKIE (уст. $HTTP_COOKIE_VARS)

    Ассоциативный массив с переданными агентом пользователя значениями кук.

    Содержит элементы из массивов $_GET, $_POST, $_COOKIE. С версии PHP 4.1 включает $_FILES.

    $_SESSION (уст. $HTTP_SESSION_VARS)

    Содержит данные сессии.

    Объектно-ориентированное программирование . PHP поддерживает широкие объектно-ориентированные возможности, полная поддержка которых была введена в пятой версии языка.

    Класс в PHP объявляется с помощью ключевого слова class. Методы и поля класса могут быть общедоступными (public, по умолчанию), защищёнными (protected) и скрытыми (private). PHP поддерживает все три основные механизма ООП -- инкапсуляцию, полиморфизм и наследование (родительский класс указывается с помощью ключевого слова extends после имени класса). Поддерживаются интерфейсы (ставятся в соответствие с помощью implements). Разрешается объявление финальных, абстрактных методов и классов. Множественное наследование классов не поддерживается, однако класс может реализовывать несколько интерфейсов. Для обращения к методам родительского класса используется ключевое слово parent.

    Классы в PHP имеют ряд специальных методов (англ. Magic methods), начинающихся с двух символов подчёркивания. Особо стоит отметить конструктор (__construct(), в ранних версиях конструктором служил метод, одноименный с классом) и деструктор (__destruct()), а также методы чтения (__get()) и записи (__set()), свёртывания (__sleep()) и развёртывания (__wake()), клонирования (__clone()) и др. Эти методы являются достаточно гибким инструментом: переопределяя их, можно легко добиться существенного изменения поведения объекта.

    Экземпляры класса создаются с помощью ключевого слова new, обращение к полям и методам объекта производится с использованием символов ->. Для доступа к членам класса из его методов используется переменная $this.