ФорумСообществоФлейм → PHP 6

PHP 6

  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 0:33

    ХЗ в какой раздел надо, решил во флейм :)
    Вот прочитал одну статью по поводу пхп 6, захотелось обсудить, вроде такой темы на форуме нет :)


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

    Вы уже, наверное, в курсе, что группа разработчиков ядра PHP 6 встречалась в
    ноябре 2005 года в Париже. Это была захватывающая встреча, на которой разработчики
    обсудили развитие PHP со своей точки зрения. Прежде чем я начну свой рассказ о
    принятых решениях, вынужден предупредить – все что здесь перечислено, это не
    «100% решенные вопросы» и в окончательном релизе 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 (который
    итак происходит ужасно!).


    Лично меня больше всего порадовало что уберут наконец-то register_globals и magic_quotes. Ну и многоуровневый foreach.
  • Dagdamor

    Сообщения: 47 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 3:49, спустя 3 часа 16 минут 28 секунд

    Этой статье год если не больше, признавайся где машину времени покупал ;)
    PHP6 уже давно не просто обсуждается, а работает. Можно скачать на офсайте и установить у себя.
  • Patrick

    Сообщения: 506 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 4:00, спустя 10 минут 26 секунд

    php6 = php5 + Unicode
    php5 = php6 - Unicode
    Unocode = php6 - php5
    вот так))))
  • Dagdamor

    Сообщения: 47 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 4:20, спустя 20 минут 11 секунд

    Если продолжить: Unicode = php6 - php5 = php (6-5) = php1 ;)
  • Patrick

    Сообщения: 506 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 4:21, спустя 1 минуту

    php1 не было)))
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 10:38, спустя 6 часов 16 минут 43 секунды


    Если продолжить: Unicode = php6 - php5 = php (6-5) = php1 ;)

    Но php1 это есть php,значит Unicode=php или php=Unicode , значит зная Unicode я знаю и php,т.е. любой дурак может в CV указать знание РНР.Приходим к противоречию.Следовательно Patrick прав.Теорема доказана.
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 10:46, спустя 8 минут 13 секунд

    cage, чем отличается utf8 от utf16?
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 10:51, спустя 5 минут 3 секунды

    Есть 4 варианта ответа
    1)8-битное и 16-битное кодирование текста
    2)в два раза
    3)цифрой
    4)ничем

    Ответ 3.
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 10:55, спустя 4 минуты 6 секунд

    Вот видишь ,Unicode я не знаю,но в РНР секу =)
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 11:10, спустя 14 минут 37 секунд

    Красаффчег…
    Ни один из вариантов неверный )
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 11:20, спустя 10 минут 32 секунды

    сторался)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!