Смекни!
smekni.com

Отчет о производственной практике в ООО Ромашка (стр. 2 из 6)

Работа с удалёнными файлами и сокетами

В настоящее время PHP используется сотнями тысяч разработчиков. Согласно рейтингу Tiobe, базирующемся на данных поисковых систем, в декабре 2009 года PHP находится на 3 месте среди языков программирования (уступая Java и C), поднявшись за год на две позиции

4.1 История PHP

В 1994 году датский программист Расмус Лердорф создал набор скриптов на Perl/CGI для вывода и учёта посетителей его онлайн-резюме, обрабатывающий шаблоны HTML-документов. Лердорф назвал набор Personal Home Page (Личная Домашняя Страница). Вскоре функциональности и быстроты Perl — интерпретатора скриптов — перестало хватать, и Лердорф разработал с использованием языка C новый интерпретатор шаблонов PHP/FI (англ. Personal Home Page / Forms Interpreter — «Личная Домашняя Страница /Интерпретатор форм»).

В 1997 году после длительного бета-тестирования вышла вторая версия обработчика, написанного на C — PHP/FI 2.0. Её использовали около 1 % (приблизительно 50 тысяч) всех интернет-доменов мира.

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

Одной из сильнейших сторон PHP 3.0 была возможность расширения ядра дополнительными модулями. Впоследствии интерфейс написания расширений привлёк к PHP множество сторонних разработчиков, работающих над своими модулями, что дало PHP возможность работать с огромным количеством баз данных, протоколов, поддерживать большое число API. Большое количество разработчиков привело к быстрому развитию языка и стремительному росту его популярности. Также язык был переименован в PHP.

К зиме 1998 года, практически сразу после официального выхода PHP 3.0, Энди Гутманс и Зээв Сураски начали переработку ядра PHP. В задачи входило увеличение производительности сложных приложений и улучшение модульности базиса кода PHP. Новый движок, названный Zend Engine, успешно справлялся с поставленными задачами и впервые был представлен в середине 1999 года. PHP 4.0, основанный на этом движке и принёсший с собой набор дополнительных функций, официально вышел в мае 2000 года. В дополнение к улучшению производительности, PHP 4.0 имел ещё несколько ключевых нововведений, таких как поддержка сессий, буферизация вывода, более безопасные способы обработки вводимой пользователем информации и несколько новых языковых конструкций.

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

Шестая версия PHP находится в стадии разработки с октября 2006 года. В ней уже сделано множество нововведений, как, например, исключение из ядра регулярных выражений POSIX и «длинных» суперглобальных массивов, удаление директив safe_mode, magic_quotes_gpc и register_globals из конфигурационного файла php.ini. Также много внимания уделено поддержке Юникода.

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

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

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

<?php

echo 'Hello, world!';

?>

PHP исполняет код, находящийся внутри ограничителей, таких как <?php ?>. Всё, что находится вне ограничителей, выводится без изменений. В основном это используется для вставки PHP-кода в HTML-документ, например, так:

<html>

<head>

<title>Тестируем PHP</title>

</head>

<body>

<?php echo 'Hello, world!'; ?>

</body>

</html>

Помимо ограничителей <?php ?>, допускается использование дополнительных вариантов, таких как <? ?> и <script language="php"> </script>. Кроме того, до версии 6.0 допускается использование ограничителей языка программирования ASP <% %> (конструкции <? ?> и <% %> могут быть выключены в конфигурационном файле php.ini).

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

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

PHP поддерживает три типа комментариев: в стиле языка Си (ограниченные /* */), C++ (начинающиеся с // и идущие до конца строки) и оболочки UNIX (с # до конца строки).

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

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

целый тип (integer),

вещественный тип данных (float, double),

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

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

и специальный тип NULL.

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

«ресурс» (resource),

массив (array)

и объект (object).

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

Специальный тип NULL предназначен для переменных без определённого значения. Единственным значением данного типа является константа NULL. Тип NULL принимают неинициализированные переменные, переменные инициализированные константой NULL, а также переменные, удалённые при помощи конструкции unset().

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

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

Обращение к переменным осуществляется с помощью символа $, за которым следует имя переменной. Данная конструкция может быть применена также для создания динамических переменных и функций.Например:

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

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

$b = 'a';

echo $$b; // Вывод переменной $а (дополнительный $ перед переменной $b)

function_name(); // Вызов функции function_name

$c = 'function_name';

$c(); // Вызов функции function_name,

$d = 'Class_name';

$ob = new Class_name; // Создание объекта класса Class_name

$obj = new $d(); // Создание объекта класса Class_name

$obj->b; // Обращение к полю b объекта

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

$obj->$b; // Обращение к полю a объекта, так как $b = 'a'

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

В PHP echo и print не являются функциями (хотя print имеет возвращаемое значение), а являются синтаксическими единицами. При их использовании можно опустить скобки.

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

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

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

$GLOBALS

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

$_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» в форме, и, в свою очередь, также является массивом со следующими элементами: