48
PHP Информационные технологии и платформы разработки информационных систем

PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

PHPИнформационные технологии и платформы разработки

информационных систем

Page 2: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

PHP

PHP — скриптовый язык общего назначения, интенсивно применяемый для

разработки веб-приложений. В настоящее время поддерживается

подавляющим большинством хостинг-провайдеров и является одним из

лидеров среди языков, применяющихся для создания динамических веб-

сайтов.

Язык и его интерпретатор (Zend Engine) разрабатываются группой

энтузиастов в рамках проекта с открытым кодом. Проект распространяется

под собственной лицензией, несовместимой с GNU GPL.

2

Page 3: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Область применения

В области веб-программирования, в частности серверной части, PHP —

один из популярных сценарных языков (наряду с JSP, Perl и языками,

используемыми в ASP.NET).

Популярность в области построения веб-сайтов определяется наличием

большого набора встроенных средств и дополнительных модулей для

разработки веб-приложений. Основные из них:

автоматическое извлечение POST- и GET-параметров, а также переменных

окружения веб-сервера в предопределённые массивы;

3

Page 4: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Область применения

взаимодействие с большим количеством различных систем управления

базами данных через дополнительные модули (MySQL, MySQLi, SQLite,

PostgreSQL, Oracle Database (OCI8), Microsoft SQL Server, Sybase, ODBC,

mSQL, IBM DB2, Cloudscape и Apache Derby, Informix, Ovrimos SQL, Lotus

Notes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird и

InterBase, Paradox File Access, MaxDB, интерфейс PDO, Redis);

автоматизированная отправка HTTP-заголовков;

работа с HTTP-авторизацией;

работа с cookies и сессиями;

4

Page 5: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Область применения

работа с локальными и удалёнными файлами, сокетами;

обработка файлов, загружаемых на сервер;

работа с XForms.

По состоянию на 2010-е годы используется сотнями тысяч разработчиков;

согласно рейтингу корпорации TIOBE, базирующемуся на данных

поисковых систем, в мае 2016 года PHP находился на 6 месте среди

языков программирования.

Входит в LAMP — распространённый набор программного обеспечения для

создания и хостинга веб-сайтов (Linux, Apache, MySQL, PHP).

Среди сайтов, использующих PHP — Facebook, Wikipedia, Yahoo!, Baidu.

5

Page 6: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Дополнительные возможности

Язык автоматически поддерживает HTTP Cookies в соответствии со

стандартами Netscape. Это позволяет проводить установку и чтение

небольших сегментов данных на стороне клиента. Работа с Cookies

организована посредством сеансов (сессий). У сессий есть срок действия

(после его истечения данные удаляются), в сессиях можно хранить и

редактировать разные типы данных, в том числе сериализованные —

пропущенные через serialize (процесс происходит автоматически), PHP-

объекты.

6

Page 7: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Создание GUI-приложений

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

Основное использование расширений — надстройки библиотек интерфейсов пользователя (UI-библиотек).

Расширения условно делятся на три группы:

расширения PHP: WxPHP (Windows, Linux, macOS), Winbinder (Windows);

обёртки, использующие системные функции средствами FFI: Win32Std, Tk;

обёртки для использования интерфейса командной строки: PHP-UI, PHP-XCB.

7

Page 8: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Создание GUI-приложений

Разработаны расширения, такие, как двусторонняя обёртка для

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

Например, PSV Component Library, — проект, состоящий из трёх

подпроектов:

PHP4Delphi реализует соединения PHP с программами, написанными на

Delphi средствами WinAPI; разрабатывался с 1999 года, но не обновлялся с

2009 года, из-за чего появились ответвления;

8

Page 9: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Создание GUI-приложений

PHP extensions development framework — средство создания расширений

PHP, VCL-компоненты — неотъемлемая часть PHP4Delphi, базовые

компоненты которой нужны для создания приложений;

php4Applications — расширение для использования PHP в других языках,

базирующееся на PHP4Delphi, дающее доступ к макросам и упрощающее

использование PHP, избавляя от создания обёртки.

9

Page 10: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Среды разработки (IDE)

Есть место и полноценным средам разработки для GUI PHP:

DevPHP

Первопроходцем в этой категории является студия DevPHP-IDE, которая

использовала Kylix (Delphi) в качестве основы интерфейса и php-cli для

создания пользовательских программ.

Она включала в себя редактор кода, несколько инструментов и

визуальный просмотр HTML-страниц.

Впервые была представлена в 2002 году, сейчас имеет 3 стабильные

версии, но разработка не продолжается — остановилась из-за гибели

главного разработчика в автокатастрофе.

10

Page 11: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Среды разработки (IDE)

CodeGear Rad Studio (Расширение)

После DevPHP IDE появилось расширение — набор компонентов для

CodeGear Rad Studio 2009 на базе php4delphi с некоторыми улучшениями

(веб-элементы, инспектор, отладчик), поддержка её длилась в течение

четырёх версий, вторая из которых вошла в платное расширение Rad

Studio 2010: была возможность использовать скрипты, задавать стиль веб-

компонентам, просматривать стили и веб-страницы до сборки программы,

запускать локальный сервер, собирать программу, как отдельное

приложение и отлаживать код. С выходом Delphi XE расширение получило

название RADPHP Xe. Далее сама студия стала называться Embarcadero

Delphi, и работа над данным расширением была приостановлена на

неопределённый срок.

11

Page 12: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Среды разработки (IDE)

DevelStudio (RAD)

В 2009 году на базе php4delphi началась разработка среды для создания

графических PHP-приложений, к разработке которой позже

присоединился Ростислав Романов. Среда получила название PHP

DevelStudio, первой опубликованной версией стала 0.1.7. DevelStudio

имела небольшое количество компонентов в наборе инструментов и

работала на устаревшем PHP 4. Во второй версии DevelStudio получила

поддержку PHP 5. Были добавлены потоки, произведены множественные

изменения и улучшения. Код сборки программ стал закрытым,

предыдущие версии программы и сообщения на форуме были удалены с

целью воспрепятствования злоумышленникам.

12

Page 13: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Среды разработки (IDE)

DevelNext (DN)

Параллельно с этим главный разработчик DevelStudio начал создавать

«реинкарнацию» предыдущей среды. Он взял за основу графическую

библиотеку JavaFX, в результате вышла полностью новая среда, с

поддержкой CSS, но без полной поддержки библиотеки Zend PHP — проект

был основан на собственном языке jPHP. Его особенностью является,

работа на JVM, JIT-компилятор, поддержка юникода, многопоточность и

объектно-ориентированная стандартная библиотека.

13

Page 14: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Среды разработки (IDE)

PHPQt

В 2015 году Александр Казанцев начал изучать алгоритмы разработки

интерфейсов и создал расширение php_qml, что давало возможность

использовать виджеты из библиотеки QT, но имело поддержку лишь одной

платформы — Windows.

С этого началась разработка PHPQt, первые версии не обратили особого

внимания со стороны веб-разработчиков, поэтому автор начал углублённо

улучшать расширение.

14

Page 15: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Среды разработки (IDE)

WinForms PHP

В 2018 году появился проект, объединяющий возможности Windows Forms

(.NET Framework) и PHP 7. Его разработка медленными темпами ведётся и

сейчас. На текущий момент в движке доступны практически все функции

для ООП. Среда находится на стадии приватной разработки. К

исполняемому файлу по умолчанию прилагается php7ts.dll.

15

Page 16: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Среды разработки (IDE)

Подключение PHP к проекту

Также существуют расширения и для противоположного применения —

подключения PHP к проекту на другом языке программирования: Phalanger

(C#, php с 5.4 по 7), Peachpie] (C#, php 7), PHP4Delphi] (Lazarus, Delphi, C#,

C, C++, php 5.6, JPHP (Java, php 7.0), PHPly (Python, php 5.6)

16

Page 17: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

История

В 1994 году датский программист Расмус Лердорф разработал на C набор

CGI-скриптов для учёта посетителей его онлайн-резюме, обрабатывающий

шаблоны HTML-документов. Лердорф назвал набор Personal Home Page

Tools (Инструменты для личной домашней страницы). Вскоре

функциональности перестало хватать, и Лердорф разработал новый

интерпретатор шаблонов PHP/FI (Personal Home Page / Forms Interpreter —

«персональная домашняя страница / интерпретатор форм»).

17

Page 18: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

История

8 июня 1995 года вышел Personal Home Page (PHP Tools) version 1.0 —

первый публичный релиз.

В 1997 году после длительного бета-тестирования вышла вторая версия

обработчика, написанного на C — PHP/FI 2.0. Её использовали около 1 %

(приблизительно 50 тысяч) всех интернет-доменов мира.

Версия PHP 3.0 подверглась значительной переработке, определившей

современный облик и стиль языка программирования. В 1997 году два

израильских программиста, Энди Гутманс и Зеев Сураски, полностью

переписали код интерпретатора. PHP 3.0 был официально выпущен в июне

1998 года.

18

Page 19: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

История

Одной из сильнейших сторон PHP 3.0 была возможность расширения ядра

дополнительными модулями. Впоследствии интерфейс написания

расширений привлёк к PHP множество сторонних разработчиков,

работающих над своими модулями, что дало PHP возможность работать с

огромным количеством баз данных, протоколов, поддерживать большое

число API. Большое количество разработчиков привело к быстрому

развитию языка и стремительному росту его популярности. С этой версии

акроним php расшифровывается как «PHP: hypertext Preprocessor», вместо

устаревшего «Personal Home Page».

19

Page 20: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

История

К зиме 1998 года, практически сразу после официального выхода PHP 3.0,

Энди Гутманс и Зеев Сураски начали переработку ядра PHP. В задачи

входило увеличение производительности сложных приложений и

улучшение модульности базиса кода PHP. Новый движок, названный Zend

Engine, успешно справлялся с поставленными задачами и впервые был

представлен в середине 1999 года. PHP 4.0, основанный на этом движке и

принёсший с собой набор дополнительных функций, официально вышел в

мае 2000 года. В дополнение к улучшению производительности, PHP 4.0

имел ещё несколько ключевых нововведений, таких как поддержка

сессий, буферизация вывода, более безопасные способы обработки

вводимой пользователем информации и несколько новых языковых

конструкций.

20

Page 21: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

История

Пятая версия PHP была выпущена разработчиками 13 июля 2004 года.

Изменения включают обновление ядра Zend (Zend Engine 2), что

существенно увеличило эффективность интерпретатора. Введена

поддержка языка разметки XML. Полностью переработаны функции ООП,

которые стали во многом схожи с моделью, используемой в Java. В

частности, введён деструктор, открытые, закрытые и защищённые члены

и методы, окончательные члены и методы, интерфейсы и клонирование

объектов. В последующих версиях также были введены пространства

имён, замыкания и целый ряд достаточно серьёзных изменений,

количественно и качественно сравнимых с теми, которые появились при

переходе на PHP 5.0.

21

Page 22: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

История

Шестая версия PHP разрабатывалась с октября 2006 года. Было сделано

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

выражений POSIX и «длинных» суперглобальных массивов, удаление

директив safe_mode, magic_quotes_gpc и register_globals из

конфигурационного файла php.ini. Одним из основных новшеств должна

была стать поддержка Юникода. Однако в марте 2010 года разработка

PHP6 была признана бесперспективной из-за сложностей с поддержкой

Юникода. Исходный код PHP6 перемещён на ветвь, а основной линией

разработки стала версия 5.4.

22

Page 23: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

История

PHP 7

В 2014 году было проведено голосование, по результатам которого

следующая версия получила название PHP 7. Выход новой версии

планировался в середине октября 2015 года. В марте 2015 года Zend

представили инфографику, в которой описаны основные нововведения

PHP 7.

3 декабря 2015 года было объявлено о выходе PHP версии 7.0.0.

23

Page 24: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

История

Новая версия основывается на экспериментальной ветви PHP, которая

изначально называлась phpng (англ. PHP Next Generation «следующее

поколение»), и разрабатывалась с упором на увеличение

производительности и уменьшение потребления памяти. В новой версии

добавлена возможность указывать тип возвращаемых из функции данных,

добавлен контроль передаваемых типов для данных, а также новые

операторы.

13 июня 2019 вышла версия PHP 7.4. В ядро были добавлены

типизированные свойства и стрелочные функции, а также ограниченная

ковариация возвращаемого типа и контравариантность типа аргумента.

24

Page 25: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

История

PHP версии 8.0 была выпущена 26 ноября 2020-го. Главными

нововведениями стали: поддержка union-типов, JIT-компиляция и

атрибуты (также известны как аннотации).

9 июля 2020 года Дэйл Хирт, менеджер проекта PHP в Microsoft, в

рассылке php.internals выпустил сообщение о том, что после выпуска

версии PHP 8.0 Microsoft прекратит поддержку разработки этого языка

программирования для Windows. Специалисты Microsoft занимались

компиляцией бинарных версий интерпретатора для ОС Windows и

тестированием их безопасности. В сообществе разработчиков PHP

сообщили, что примут все необходимые меры, чтобы найти в ближайшее

время альтернативный вариант для организации поддержки PHP 8.0 и

выше для Windows, например, своими силами.

25

Page 26: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Синтаксис

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

как ассоциативные массивы и цикл foreach, заимствованы из Perl.

Для написания простейшего скрипта не требуется описывать какие-либо

переменные, используемые модули и т. п. Любой скрипт может

начинаться непосредственно с оператора PHP.

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

<?php

echo 'Hello, world!';

?>

26

Page 27: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Синтаксис

Также возможен более короткий вариант вывода строки:

<?= 'Hello, world!’ ?>

Открывающий тег вида <?= используется для сокращённой записи

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

PHP исполняет код, находящийся внутри ограничителей, таких как <?php

?>. Всё, что находится вне ограничителей, выводится без изменений. В

основном это используется для вставки PHP-кода в HTML-документ.

27

Page 28: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Синтаксис

Помимо ограничителей <?php ?>, допускается использование

сокращённого варианта <? ?>. Кроме того, до версии 7.0 допускалось

использование ограничителей языка программирования ASP <% %> и <script

language="php"> </script>. Работа сокращённых конструкций определяется

в конфигурационном файле php.ini.

Имена переменных начинаются с символа $, тип переменной объявлять не

нужно. Имена переменных и констант чувствительны к регистру

символов. Имена классов, методов классов и функций к регистру

символов не чувствительны. Переменные обрабатываются в строках,

заключённых в двойные кавычки, и heredoc-строках (строках, созданных

при помощи оператора <<<). Переменные в строках, заключённых в

одинарные кавычки, не обрабатываются.

28

Page 29: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Синтаксис

PHP рассматривает переход на новую строку как пробел, так же как HTML

и другие языки со свободным форматом. Инструкции разделяются с

помощью точки с запятой (;), за исключением некоторых случаев, после

объявления конструкции if/else и циклов.

Переменные в функцию можно передавать как по значению, так и по

ссылке (используется знак &).

PHP поддерживает три типа комментариев: в стиле языка Си

(ограниченные /* */), C++ (начинающиеся с // и идущие до конца строки)

и оболочки UNIX (с # до конца строки).

29

Page 30: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Типы данных

PHP является языком программирования с динамической типизацией, не

требующим указания типа при объявлении переменных, равно как и

самого объявления переменных. Преобразования между скалярными

типами зачастую осуществляются неявно без дополнительных усилий

(впрочем, PHP предоставляет широкие возможности и для явного

преобразования типов).

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

целочисленный тип (integer)

число с плавающей точкой (float, double)

логический тип (boolean)

строковый тип (string)

30

Page 31: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Типы данных

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

массив (array)

объект (object)

внешний ресурс (resource)

неопределённое значение (null)

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

mixed любой тип

number число (integer либо float)

callback (анонимная функция, string или массив)

void отсутствие параметров

31

Page 32: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Типы данных

Диапазон целых чисел (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.

32

Page 33: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Типы данных

Специальный тип null предназначен для переменных без определённого

значения. Единственным значением данного типа является константа

NULL. Тип null принимают неинициализированные переменные,

переменные инициализированные константой NULL, а также переменные,

удалённые при помощи конструкции unset().

Ссылки на внешние ресурсы имеют тип «ресурс» (resource). Переменные

данного типа, как правило, представляют собой дескриптор, позволяющий

управлять внешними объектами, такими как файлы, динамические

изображения, результирующие таблицы базы данных и т. п.

33

Page 34: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Типы данных

Массивы (array) поддерживают числовые и строковые ключи и являются

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

другие массивы. Порядок элементов и их ключей сохраняется. Не совсем

корректно называть php-массивы массивами, на самом деле это, скорее

всего, упорядоченный хеш. Возможно неожиданное поведение при

использовании цикла for со счётчиком вместо foreach. Так, например, при

сортировке массива с численными индексами функциями из стандартной

библиотеки, сортируются и ключи тоже.

34

Page 35: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Типы данных

Указатель на функцию в PHP может быть представлен замыканием или

псевдотипом callback. Замыкание доступно с версии 5.3 и в коде выглядит

как простое определение функции, в которую можно явно пробросить

значения из контекста, например:

function($args, $argsN) use ($ctxVar, $ctxVar1) { ... }

35

Page 36: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Типы данных

callback тип может быть представлен:

строкой (интерпретируется как название функции);

массивом где нулевой и первый элемент — строки (интерпретируется как

название статической функции класса);

массивом где нулевой элемент — объект, а первый — строка

(интерпретируется как метод у объекта).

Для проверки является ли значение вызываемым следует использовать

is_callable($var)

36

Page 37: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Обращение к переменным и функциям

Обращение к переменным осуществляется с помощью символа $, за

которым следует имя переменной. Данная конструкция может быть

применена также для создания динамических переменных и функций.

Например:

$a = 'I am a'; // Запись значения в переменную $a

echo $a; // Вывод переменной $а

37

Page 38: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Суперглобальные массивы

Суперглобальными массивами (Superglobal arrays) в PHP называются

предопределённые массивы, имеющие глобальную область видимости без

использования директивы global. Большая часть этих массивов содержит

входные данные запроса пользователя (параметры GET-запроса, поля

форм при посылке методом POST, куки и т. п.).

Все суперглобальные массивы, кроме $GLOBALS и $_REQUEST, имеют

устаревшие аналоги с длинными именами, которые доступны вплоть до

версии 5.3. х (начиная с 5.4.0 были удалены). Таким образом, обращения

$_GET['year'] и $HTTP_GET_VARS['year'] идентичны (за исключением

области видимости: массивы с «длинными» именами не являются

суперглобальными).

38

Page 39: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Суперглобальные массивы

$GLOBALS

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

$_SERVER (аналог для устаревшего — $HTTP_SERVER_VARS)

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

$_ENV (уст. $HTTP_ENV_VARS)

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

$_GET (уст. $HTTP_GET_VARS)

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

39

Page 40: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Суперглобальные массивы

$_POST (уст. $HTTP_POST_VARS)

Ассоциативный массив значений полей HTML-формы при отправке

методом POST. Индексы элементов соответствуют значению свойства name

объектов (кнопки, формы, радиокнопки, флажки и т. д.) HTML-формы.

$_FILES (уст. $HTTP_POST_FILES)

Ассоциативный массив со сведениями об отправленных методом POST

файлах. Каждый элемент имеет индекс, идентичный значению атрибута

«name» в форме, и, в свою очередь, также является массивом со

следующими элементами:

40

Page 41: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Суперглобальные массивы

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

['type'] — указанный агентом пользователя MIME-тип файла. PHP не

проверяет его, и поэтому нет никаких гарантий, что указанный тип

соответствует действительности.

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

['tmp_name'] — полный путь к файлу во временной папке. Файл

необходимо переместить оттуда функцией move_uploaded_file.

Загруженные файлы из временной папки PHP удаляет самостоятельно.

['error'] — код ошибки. Если файл удачно загрузился, то этот элемент

будет равен 0 (UPLOAD_ERR_OK).

41

Page 42: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Суперглобальные массивы

$_COOKIE

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

куки.

$_REQUEST

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

4.1 включает $_FILES.

$_SESSION

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

42

Page 43: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Особенности интерпретатора

PHP-скрипты обычно обрабатываются интерпретатором в порядке,

обеспечивающем кроссплатформенность разработанного приложения:

лексический анализ исходного кода и генерация лексем,

синтаксический анализ полученных лексем,

генерация байт-кода,

выполнение байт-кода интерпретатором (без создания исполняемого

файла).

43

Page 44: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Особенности интерпретатора

Для увеличения быстродействия приложений возможно использование

специального программного обеспечения, так называемых акселераторов.

Принцип их работы заключается в кэшировании однажды

сгенерированного байт-кода в памяти и/или на диске, таким образом, из

процесса работы приложения исключаются этапы 1—3, что в общем случае

ведёт к значительному ускорению работы.

Важной особенностью является то, что разработчику нет необходимости

заботиться о распределении и освобождении памяти. Ядро PHP реализует

средства для автоматического управления памятью; вся выделенная

память возвращается системе после завершения работы скрипта.

44

Page 45: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Экосистема

Linux, Apache HTTP Server, Nginx, MySQL и PhpMyAdmin

Фреймворки

Symfony, Laravel, Yii, CodeIgniter, CakePHP и Phalcon PHP

Системы управления содержимым

WordPress, Joomla!, Drupal и TYPO3

Язык PHP является самым популярным языком для разработки систем

управления содержимым (Content management system, CMS).

45

Page 46: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Критика

Сторонники языка PHP в качестве основных его преимуществ называют

широкую распространённость, востребованность PHP-разработчиков на

рынке труда и простоту изучения. К достоинствам языка относится и его

достаточно быстрая эволюция. В то же время язык часто критикуют за

несогласованный синтаксис функций и неортогональность дизайна. Эту

критику признают отчасти справедливой (хотя и гипертрофированной) и

некоторые участники сообщества PHP-разработчиков.

46

Page 47: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Критика

47

Page 48: PHPphp php —скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений

Критика

48