Итак, посмототрим – готовы ли вы к 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.
Кажется патч почти принят, не принято решение о том какой использовать синтаксис - когда все будет решено, я обновлю данную статью.