Заглянем в будущее PHP 6::Журнал СА 7.2006
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

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

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

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

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6186
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6896
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4178
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2986
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3791
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3801
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6295
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3150
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3445
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7261
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10627
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12347
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13979
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9108
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7063
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5373
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4603
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3412
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3142
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3388
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3010
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Заглянем в будущее PHP 6

Архив номеров / 2006 / Выпуск №7 (44) / Заглянем в будущее PHP 6

Рубрика: Программирование /  Веб-программирование

Кирилл Сухов

Заглянем в будущее PHP 6

Смена версий у популярных программных продуктов, как правило, предполагает радикальные изменения в технологии или идиологии его использования. MySQL, PHP, Perl, PostgreSQL… и PHP тут совсем не исключение – в четвёртой версии было с нуля переписано ядро, в пятой появилась новая объектная модель.

В начале осени прошлого года на snap.php.net стали доступны версии шестой ветки препроцессора. Я предлагаю разобраться, что в них нового и чем эта версия, пока ещё прорисованная довольно смутно, отличается от предыдущих. В начале августа прошлого года разработчиками было принято решение – CVS HEAD был отделен в ветку PHP.5.1, после чего HEAD стал PHP 6.0.0. Означало это одно – все нововведения отныне стали применяться для этой, шестой ветки. Оставляя за PHP пятой версии только незначительные изменения и багфиксы. В середине августа Расмус Лендорф, основатель языка, в своём письме сообществу (http://news.php.net/php.internals/17883) высказал ряд пожеланий к шестой версии, которые это сообщество принялось активно обсуждать. В общем-то на тот момент отличие от «пятёрки» было только одно – полноценная поддержка Unicode. Обсуждение дало результаты – на ноябрьской встрече разработчиков в Париже были озвучены основные возможности, которые планируется воплотить в новой ветке.

В настоящее время идёт разработка, не утихают споры. Но некоторые контуры PHP 6 видны уже сегодня. Итак, приступим.

Отречёмся от старого мира

В первую очередь грядущая версия языка поражает не нововведениями, а количеством вещей, от которых решено отказаться. Разработчиков не трудно понять. PHP завоевал мир своей простотой и доступностью, но постоянно подвергался критике за низкую безопасность и слабую защиту от ошибок (от ошибок программиста, разумеется). Кроме того, во имя обратной совместимости со старыми версиями, язык тянет за собой устаревшие deprecated, которые были ещё уместны в PHP 3, но уже в PHP 5 кажутся полным анахронизмом.

Прежде всего «чистка» коснётся всем изрядно поднадоевших параметров в конфигурации интерпретатора – register_globals, magic_quotes и safe_mode, – из шестой ветки они будут изъяты. В версиях языка, до 4.2, все переменные окружения по умолчанию инициализировались автоматически. Это было, конечно, удобно для разработчика, но несло в себе огромную угрозу безопасности приложению, так как любой злоумышленник мог подменить значения переменных. Начиная с 4.2 параметр register_globals по умолчанию был выключен, оставляя возможность обращаться к переменным окружения через глобальные массивы ($_GET, $_POST, $_SERVER и т. д.), но многие приложения уже были написаны в старом стиле, и часто недалёкие авторы статей или книг советовали решить проблему, просто включив инициализацию. Теперь об этом можно будет забыть – и слава богу.

Директивы magic_quotes_gpc и magic_quotes_runtime отвечают за автоматическое экранирование некоторых спецсимволов. Они были разработаны для повышения безопасности, но на деле их использование создавало программисту дополнительные неудобства. Положение осложнялось тем, что эти опции любили включать хостеры.

С режимом safe_mode ситуация сложнее. Директива, введённая из соображений безопасности, устанавливает серьёзные ограничения на работу PHP-интерпретатора. При её включении пропадало большинство возможностей работы с файлами и каталогами (в частности затруднительно положить файл конфигурации выше директории веб-сайта, а ведь это разумная мера безопасности). С другой стороны, сам по себе режим safe_mode был далеко не панацеей и его ограничения  легко можно было обойти. Таким образом, он, не давая защиты, был вечной головной болью разработчиков. После его исключения исчезнет риск нарваться на хостинг с safe_mode=on. (Следует сказать, что функциональность директивы open_basedir будет сохранена.)

Что ещё? Поддержка таких древностей, как библиотеки Freetype 1 и (недоброй памяти) GD 1 также прекращается. Устраняется поддержка ASP-тегов (по сею пору <% можно после включения соответствующих настроек использовать на равнее с

Функция dl(), динамически подгружающая расширения PHP (и вызывающая своей некорректной работой многочисленные нарекания), будет сильно ограничена в правах, а именно – останется только в SAPI. При этом каждую функцию SAPI пройдется регистрировать отдельно. Честно говоря, не жалко, так как многие разработчики склонны рассматривать её существование почти как нелепость.

Расширение для работы с регулярными выражениями ereg будет удалено из дистрибутива и перенесено в репозитарий PECL. Я не думаю, что это повод для паники, так как подключить его – минутное дело, кроме того, уже в пятой версии языка рекомендуется использовать perl-compatible-регулярные выражения. Правда, разработчики пошли дальше и собираются перенести в PECL все расширения для работы с базами данных, за исключением PDO (расширение для унифицированного доступа к базам данных, введённое в версии 5.1). Этот шаг, конечно, логически обоснован, но пока выглядит страшновато.

Теперь о наведении порядка в синтаксисе.

Старые названия массивов (если точнее, старые массивы) вида HTTP_*_VAR из языка удаляются. Их применение вызовет ошибку уровня E_CORRE_ERROR. Старый синтаксис обращения к строковым индексам {} будет исключён, зато появится возможность получать символы от конца строки записью вида [4]. Оставшийся от PHP 4 синтаксис вида $foo=& new myClass(), или function &foo, в новой версии вызовет ошибку уровня E_STRICT (хорошо, что не выше – слишком много кода написано в стиле ООП PHP 4). Более того, поддержка ZE1 будет вообще исключена. В объявлении полей класса конструкция var (использующаяся в PHP 4, но приводящая к ошибке уровня E_STRICT в пятой версии языка), теперь уравнена в правах с модификатором public. Это безусловно послабление, но оно вполне укладавается в рамки «наведения порядка». Отпадает необходимость модернизации нескольких приложений, не списанных на PHP 4. Ну а чтобы совсем «добить» нерадивых разработчиков, сообщения об  ошибках уровня E_STRICT теперь войдут в E_ALL (при переходе на пятую версию параметры были разделены).

Что нового

Изъято довольно много, что предлагается в замен? Прежде всего поддержка Unicode. Для тех, кто не осознаёт важности момента, поясню – именно это послужило причиной смены номера версии. Дело в том, что по настоящий момент при разработке приложений приходится сохранять варианты имён методов, функций, переменных одновременно в двух таблицах символов – Unicode и non-Unicode. Решено обеспечить поддержку Unicode на уровне сервера (а не отдельного запроса, как было до сих пор). Соответствующие настройки будут храниться в файлах конфигурации и уйдут из поля зрения программиста.

Ранее PHP действовал как исключительно бинарный обработчик, тип байтовой строки был единственным и использовался для работы с любой информацией, что создавало (и создаёт) различные проблемы при работе с кодировками и национальными символами. В PHP 6 введёна возможность работать с типом данных «строка Unicode», реализованная посредством библиотеки ICU (International Components for Unicode). Использование ICU API позволило реализовать такие возможности, как корректная сортировка, с использованием любого национального алфавита, транслитерация, расположение текста для арабского, иврита, хинди и тайского языков, трансформации текста и многое другое.

Это касается не только обработки строк и летералов, но и кодировок HTTP-запросов скриптов и индификаторов. Андрей Змиевский в своём докладе на конференции в Москве в мае этого года привёл следующий пример кода:

class ....... {

function ... ......            { ... }

function !..$ ....)            { ... }

function ..........                   { ... }

}

$..... = array();

$.....[‘הָנָשׁ ַחוּלויְערַ’] = new .......();

Вообще поддержка Unicode в PHP 6 – это довольно обширная тема, заслуживающая отдельной статьи.

Не знаю, как относиться к следующей новости, но отныне гарантированна полная поддержка FastCGI, причём данная технология будет включена по умолчанию (без возможности отключения) для CGI SAPI.

Самое «вкусное» – PHP-акселератор APC, кэширующий сценарии в байт-код, будет теперь включён в ядро. Это, на мой взгляд, самое радикальное нововведение, и именно его я буду ждать. Кроме того, в дистрибутив решено включить расширения XML Reader (простой XML-парсер, основанный на SAX) и XML Writer (провайдер для XML API). Оба расширения, взятые из репозитария PECL, призваны значительно облегчить работу программиста с XML-документами. Из PECL также будет добавлено расширение Fileinfo.

Добавлен новый тип данных – init64, который будет соответствовать integer.

Ну и по мелочи: оператору break можно будет задавать метку, на которую будет перенесено выполнение программы после прерывания, станут возможны конструкции вроде следующей:

<?php

for ($i = 0; $i < 9; $i++)

{

        if (true) {

                break foo;

        }

        echo "not shown";

foo:

        echo "iteration $i\n";

}

?>

Foreach сможет работать с многоуровневыми массивами:

<?php

$a = array(array(1, 2), array(3, 4));

foreach( $a as $k => list($a, $b)) {

}

?>

в операторе ?: будет допустимо опускать первый параметр.

В объектную модель будет добавлен новый предикат static:: static2, позволяющий управлять static во время выполнения. Для иллюстрации его работы привожу пример кода:

<?php

        class A {

                static function staticA() {

                        self::static2();

                }

                static function static2() {

                        echo "A::static2\n";

                }

        }

        class B extends A {

                static function static2() {

                        echo "B::static2\n";

                }

        }

        B::staticA();

?>

Результатом работы будет вывод «A:static2».

Чего не будет

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

Заключение

Вот тут хочу высказать некоторые сомнения. Когда появился (скорее слово неверное, он не появился, он проявлялся постепенно, как чеширский кот) PHP 5, у многих были сомнения, что хостеры вовремя предоставят возможность пользоваться новой версией. Эти сомнения в целом оказались напрасными – все ведущие площадки обновили интерпретатор довольно быстро. Проблема оказалась совсем в другой плоскости, а именно – в головах разработчиков. До сих пор и повсюду многие программисты, даже имея в своём распоряжении пятую версию, пишут на ней, как на четвёртой (это ещё в лучшем случае). Придется ли ко двору PHP 6? Время покажет.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru