Готовьтесь к PHP 6 или будущее PHP

Статус
В этой теме нельзя размещать новые ответы.

roddik

Колбаска
Регистрация
26 Янв 2007
Сообщения
346
Реакции
292
Вы уже, наверное, в курсе, что группа разработчиков ядра PHP 6 встречалась в ноябре 2005 года в Париже. Это была захватывающая встреча, на которой разработчики обсудили развитие PHP со своей точки зрения. Прежде чем я начну свой рассказ о принятых решениях, вынужден предупредить – все что здесь перечислено, это не «100% решенные вопросы» и в окончательном релизе PHP 6 дела могут обстоять иначе. Конечно же, все эти моменты будут обсуждаться подробнее, но уже сейчас можно говорить о перспективах.

Окончательные релизы PHP 6 появятся не скоро, но профессиональные разработчики должны знать к чему готовиться...

Юникод

Поддержка юникода в настоящий момент может быть установлена только на уровне «per request», т.е. для каждого запрашиваемого файла. Это означает, что PHP придется сохранять варианты классов, имен методов и функций одновременно в таблице символов Unicode и в non-Unicode, что, конечно же, увеличивает количество потре***емых ресурсов. Разработчики решили сделать настройку юникода на уровне всего сервера, а не запроса. Отключение поддержки юникода, если таковая не требуется, может увеличить производительность строковых функций до 300% и приложений в целом до 25%. Вынос настроек в php.ini позволит снять заботу о юникоде с разработчика и переложить ее на администраторов хоста.

Если вы самостоятельно собираете PHP и несете всю ответственность за ваши серверы, то вам будет полезно знать, что для PHP 6 потребуются библиотеки ICU (в зависимости от того, будет ли нужен Unicode или нет).

Register Globals уйдут в прошлое

Попрощайтесь с этой настройкой, она будет окончательно убрана. Такой настройки больше не будет в php.ini и если вы ее внесете, то получите ошибку уровня E_CORE_ERROR. Это означает, что PHP 6 наконец-то завершит эру скриптов PHP 3. Это серьезный, но очень нужный шаг.

Magic Quotes будут исключены

Опция magic quotes будет так же исключена из PHP и при попытке включения такой настройки, «выскочит» ошибка E_CORE_ERROR. Это повлияет на magic_quotes, magic_quotes_sybase и magic_quotes_gpc.

Больше не будет Safe Mode

Это понравится тем, кто хостится на серверах с обязательным включением Safe Mode. Теперь, включение опции будет вызывать ошибку E_CORE_ERROR. Причиной для этого становится механизм посыла «сигнала опасности», который делает PHP более безопасным. Сохранится лишь open_basedir.

'var' будет полным алиасом 'public'

Var используется в классах PHP 4. В объектном подходе PHP 5, употребление var вызывает ошибку уровня E_STRICT. В PHP 6 предупреждение об ошибке будет устранено и var станет полным синонимом public. Это вполне нормальное решение, однако, те, кто «подогнал» свои скрипты под PHP 5, сделали в этом плане лишнюю работу.

Возврат по ссылке вызовет ошибку

И '$foo =& new StdClass()' и 'function &foo' теперь вызовут ошибку уровня E_STRICT.

Будет убрана совместимость с zend.ze1

Ze1 всегда пытался поддерживать старое поведение PHP 4, но не всегда «работал на 100%», поэтому в шестой версии PHP он будет полностью исключен.

Поддержка Freetype 1 и GD 1 будет убрана

Поддержка обоих (очень-очень старых) библиотек будет убрана.

dl() останется только в SAPI

Каждую функцию SAPI нужно будет регистрировать отдельно и только CLI и embed SAPI будут работать с этого момента. В других вариантах dl() работать не будет.

FastCGI всегда включена

FastCGI код будет «вылизан» и станет включенным по-умолчанию для CGI SAPI. При этом, поддержку FastCGI будет невозможно отключить.

Старые названия глобальных массивов будут удалены

Помните старые массивы HTTP_*_VARS? Если вы еще не начали использовать $_GET и $POST, то начните делать это прямо сейчас, потому что в PHP 6 эти массивы будут вызывать E_CORE_ERROR.

Перемещения расширений

Расширения XMLReader и XMLWriter войдут в дистрибутив и станут доступны по умолчанию. Расширение ereg для работы с регулярными выражениями переедет в PECL (т.е. будет удалено из PHP). Это означает, что PCRE будет по умолчанию недоступно и выключено. Такой шаг делается для включения нового расширения для работы с регулярными выражениями, основанными на ICU. Чрезвычайно полезное расширение Fileinfo будет включено в дистрибутив и доступно по умолчанию.

Дополнения к движку PHP

64 битный целочисленный тип данных

В движок будет добавлен новый тип данных -int64. Он будет использоваться поумолчанию для integer.

Goto

Никаких команд goto не будет добавлено. Однако, команда break расширится статической меткой, поэтому будет возможно написать break foo и это перекинет на метку foo: в вашем коде.

ifsetor()

Похоже, что мы не увидим эту функцию, что обидно. В операторе ?: можно будет опускать один параметр, что позволит писать так: "$foo = $_GET['foo'] ?: 42;" (т.е. если foo является истиной, то $foo будет равно 42). Это сэкономит немного кода, однако будет не так читаемо, как при использовании ifsetor().

foreach для многоуровневых массивов

Это отличное новшество – вы сможете проходить с помощью foreach по нескольким уровням массива, к примеру "foreach( $a as $k => list($a, $b))".

{} против []

Сейчас вы можете использовать и {} и [] для обращения к строковым индексам. Однако, запись {} уже сейчас вызовет E_STRICT в PHP 5.1 и будет полностью устранена в PHP 6. К тому же, [] частично заменят substr и array_slice и вы сможете использовать "[2,]" для получения символов от второго и до конца строки. Очень удобно.

Изменения в объектном стиле

Связка static

Будет добавлено новое ключевое слово для доступа к последующей связке – static::static2(), что позволит управлять static во время выполнения.

Пространства имен

Этот момент остается нерешенным и по сей день. Мой совет – не задерживайте дыхание.

Типизированные значения при возврате из функций

Разработчики высказались против типизации, потому как это «не в стиле PHP». Однако такая возможномть будет добавлена, но не решен вопрос ее синтаксиса. В любом случае, это будет полезная возможность.

Вызов динамческих функций как статических приведет к E_FATAL

Сейчас вы можете вызывать статические и динамические методы не обращая внимание на то, статические они или динамические. Вызов динамической функции как статической, вызовет E_FATAL.

Добавления в PHP

APC войдет в ядро

Работа APC с байткодом будет включена в основную поставку PHP в качестве стандарта, но, вероятно, не будет активизирована по-умолчанию, но результаты ее работы будут стимулировать хостеров включать эту опцию.

Hardened PHP патч

Этот патч выполняет большое количество дополнительных проверок на безопасность. Разработчики тщательно изучают этот патч и некоторые элементы найдут свое место в PHP: защита от разделения HTTP-запроса, allow_url_fopen будет разделена на две: allow_url_fopen и allow_url_include. Первая опция будет по-умолчанию включена, а вторая – отключена.

E_STRICT войдет в E_ALL

Вау, это серьезная штука! Сообщения об ошибках наконец-то войдут в E_ALL по умолчанию. Это демонстрирует старания разработчиков научить «лучшей практике программирования» посредством сообщений «Эй, ты делаешь неправильно!».

Прощайте asp-тэги <%

Будет удалена поддержка ASP-тэгов, но останутся короткие PHP-тэги <? ?>.

Заключение

PHP 6 движется в интересном направлении – разработчики PHP начали направлять программистов на правильный путь, вместо того чтобы упреждать «так делать не надо, потому что это устарело». Категоричное искоренение таких моментов как register globals, magic quotes, long arrays, {} string indexes и call-time-pass-by-references наконец-то заставит программистов «вычистить» свой код. Плохо ли это? Я так не думаю, но все это сделает переход на PHP 6 еще более медленным, чем мы наблюдаем с PHP 5 (который итак происходит ужасно!).

Официальная информация: Для просмотра ссылки Войди или Зарегистрируйся
Оригинал статьи: Для просмотра ссылки Войди или Зарегистрируйся
Автор: Richard Davey
Перевод: Андрей Олищук
Источник: Для просмотра ссылки Войди или Зарегистрируйся
 
'var' будет полным алиасом 'public'

Var используется в классах PHP 4. В объектном подходе PHP 5, употребление var вызывает ошибку уровня E_STRICT. В PHP 6 предупреждение об ошибке будет устранено и var станет полным синонимом public. Это вполне нормальное решение, однако, те, кто «подогнал» свои скрипты под PHP 5, сделали в этом плане лишнюю работу.


чото я не понял, я всегда в 5 пхп юзал var и нету там никаких ошибок
 
А что с поддержкой XSLT 2.0? ктонибудь в курсе? Много всяких мнений слышал...Ничего конкретного..
 
А я где-то слышал что скрипты будут компилироваться и кешироваться в стандартном наборе без всяких дополнений.
 
ПХП 6 конечно хорошо, но как всегда большая куча хостеров будет боятся его ставить, многие досих пор пхп4 ставят, ссат ставить пятерку, а уж про шестерку...
 
ПХП 6 конечно хорошо, но как всегда большая куча хостеров будет боятся его ставить, многие досих пор пхп4 ставят, ссат ставить пятерку, а уж про шестерку...
эт точно, но уже со всем скоро 4ке скажем пока)
 
Все равно пока не выйдет версия 6.1, ей пользоваться нельзя будет из-за обилия багов. Так что не спешите переходить на 6.0
 
Хорошо, что поуберают поддержку Регистр глобалс и т.п. потенциальных дыр. Хоят тема, конечно баян, писали про это уже давно.
 
вышло обновление php-5.2.4
 
Ориентировочной даты выхода никто не знает?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху