PHP 5.3, Что нового?

Итак, посмототрим – готовы ли вы к PHP-5.3.

PHP не может быть собран без PCRE, Reflection, SPL

PHP не может быть собран без поддержки FastCGI CGI/FastCGI поддерживают php.ini-файлы в стиле .htaccess ( т.е. per-dir )

и конфигурационные переменные user_ini.filename и user_ini.cache_ttl

Специальные секции в ини-файлах

NOWDOC – то же, что и HEREDOC, но с одинарными кавычками вокруг метки «<’LABEL’

Статические HEREDOC-и могут быть использованы для инициализации статических переменных, членов класса или констант:

      static $foo = <<<LABEL
      Здесь не должно быть переменных...
      LABEL;

Долгожданный оператор ?: Запись $c= $_GET['c']?:'not set'; эквивалентна записи $c= isset($_GET['c'])?$_GET['c']:'not set';

Долгожданные пространства имен:

      namespace my\name;
      $obj = new \my\name\MyClass;

Новые расширения

Новые Stream Wrappers

Новые функции

    Ядро:    gc_collect_cycles()
                gc_enabled()
                gc_enable()
                gc_disable()
                class_alias()
                get_called_class()
                forward_static_call()
                forward_static_call_array()
                str_getcsv()
                quoted_printable_encode()
                lcfirst()
Массивы:   array_replace()
                array_replace_recursive()
    Дата:    date_add()
                date_sub()
                date_diff()
                date_parse_from_format()
                date_create_from_format()
                date_get_last_errors()
                timezone_version_get()
      INI:     parse_ini_string()
    GMP:     gmp_testbit()
    Hash:    hash_copy()
    JSON:    json_last_error()
   MySQLi:  mysqli_fetch_all()
                mysqli_get_connection_stats()
                mysqli_poll()
                mysqli_reap_async_query()
       Сеть: gethostname()
                header_remove()
  OpenSSL: openssl_random_pseudo_bytes()
    PCNTL:   pcntl_signal_dispatch()
                pcntl_sigprocmask()
                pcntl_sigwaitinfo()
                pcntl_sigtimedwait()
    PCRE:    preg_filter()
    SHM:     msg_queue_exists()
   Streams: stream_supports_lock()
                stream_context_set_default()

Новые глобальные константы

    Ядро:    E_DEPRECATED
                E_USER_DEPRECATED
                __DIR__
                __NAMESPACE__
                PHP_WINDOWS_VERSION_MAJOR
                PHP_WINDOWS_VERSION_MINOR
                PHP_WINDOWS_VERSION_BUILD
                PHP_WINDOWS_VERSION_PLATFORM
                PHP_WINDOWS_VERSION_SP_MAJOR
                PHP_WINDOWS_VERSION_SP_MINOR
                PHP_WINDOWS_VERSION_SUITEMASK
                PHP_WINDOWS_VERSION_PRODUCTTYPE
                PHP_WINDOWS_NT_DOMAIN_CONTROLLER
                PHP_WINDOWS_NT_SERVER
                PHP_WINDOWS_NT_WORKSTATION
      INI:     INI_SCANNER_NORMAL
                INI_SCANNER_RAW
     GD:      IMG_FILTER_PIXELATE
    JSON:    JSON_ERROR_NONE
                JSON_ERROR_DEPTH
                JSON_ERROR_STATE_MISMATCH
                JSON_ERROR_CTRL_CHAR
                JSON_ERROR_SYNTAX
                JSON_FORCE_OBJECT
                JSON_HEX_TAG
                JSON_HEX_AMP
                JSON_HEX_APOS
                JSON_HEX_QUOT
    LDAP:    LDAP_OPT_NETWORK_TIMEOUT
    PCRE:    PREG_BAD_UTF8_OFFSET_ERROR
   PCNTL:   SIG_BLOCK
                SIG_UNBLOCK
                SIG_SETMASK
                SI_USER
                SI_NOINFO
                SI_KERNEL
                SI_QUEUE
                SI_TIMER
                SI_MESGQ
                SI_ASYNCIO
                SI_SIGIO
                SI_TKILL
                CLD_EXITED
                CLD_KILLED
                CLD_DUMPED
                CLD_TRAPPED
                CLD_STOPPED
                CLD_CONTINUED
                TRAP_BRKPT
                TRAP_TRACE
                POLL_IN
                POLL_OUT
                POLL_MSG
                POLL_ERR
                POLL_PRI
                POLL_HUP
                ILL_ILLOPC
                ILL_ILLOPN
                ILL_ILLADR
                ILL_ILLTRP
                ILL_PRVOPC
                ILL_PRVREG
                ILL_COPROC
                ILL_BADSTK
                FPE_INTDIV
                FPE_INTOVF
                FPE_FLTDIV
                FPE_FLTOVF
                FPE_FLTUND
                FPE_FLTRES
                FPE_FLTINV
                FPE_FLTSUB
                SEGV_MAPERR
                SEGV_ACCERR
                BUS_ADRALN
                BUS_ADRERR
                BUS_OBJERR
   Новые классы
     Date:    DateInterval
                DatePeriod
     Phar:    Phar
                PharData
                PharFileInfo
                PharException
     SPL      SplDoublyLinkedList
                SplStack
                SplQueue
                SplHeap
                SplMinHeap
                SplMaxHeap
                SplPriorityQueue
                SplFixedArray
                FilesystemIterator
                GlobIterator
                RecursiveTreeIterator
                MultipleIterator
   Новые методы
    Date:         DateTime::diff()
                     DateTime::add()
                     DateTime::sub()
                     DateTime::createFromFormat()
                     DateTime::getLastErrors()
  PDO_Firebird: PDO::setAttribute()
    Reflection:   ReflectionProperty::setAccessible()
                     ReflectionFunction::inNamespace()
                     ReflectionFunction::getNamespaceName()
                     ReflectionFunction::getShortName()
                     ReflectionClass::inNamespace()
                     ReflectionClass::getNamespaceName()
                     ReflectionClass::getShortName()
     XSL:          XSLTProcessor::setProfiling()
  Новые константы классов
  PDO_Firebird: PDO::FB_ATTR_DATE_FORMAT
                     PDO::FB_ATTR_TIME_FORMAT
                     PDO::FB_ATTR_TIMESTAMP_FORMAT

Пример с константой DIR :

max@maximus:~$ local/bin/php -v
PHP 5.3.0-dev (cli) (built: Feb 13 2008 23:54:55)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2008 Zend Technologies
max@maximus:~$ local/bin/php dir.php
/home/max
/home/max/php5.3
max@maximus:~$ 

dir.php

<?php
echo __DIR__ ,"\n";
include "php5.3/dir2.php";

php5.3/dir2.php

<?php
echo __DIR__."\n";

УРА!!! Скоро код станет читабельней! Прощай неуклюжее dirname(__FILE__); !!!

С 18 февраля активно ведется обсуждение Traits.

Кажется патч почти принят, не принято решение о том какой использовать синтаксис - когда все будет решено, я обновлю данную статью.