Итак, посмототрим – готовы ли вы к 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-и могут быть использованы для инициализации статических переменных, членов класса или констант:
Долгожданный оператор ?:
Запись $c= $_GET['c']?:'not set';
эквивалентна записи
$c= isset($_GET['c'])?$_GET['c']:'not set';
Долгожданные пространства имен:
Новые расширения
Новые Stream Wrappers
Новые функции
Новые глобальные константы
Пример с константой DIR :
dir.php
php5.3/dir2.php
УРА!!! Скоро код станет читабельней! Прощай неуклюжее dirname(__FILE__); !!!
С 18 февраля активно ведется обсуждение Traits.
Кажется патч почти принят, не принято решение о том какой использовать синтаксис - когда все будет решено, я обновлю данную статью.
- Появились новые ключевые слова: namespace , goto , Closure.
- Функции natsort(), natcasesort(), usort(), uasort(), uksort(), array_flip() и array_unique() больше не поддерживают объекты в качестве аргументов. Если вам нужно работать с объектами – вам придется перевести их в массивы.
- Вывод var_dump теперь включает приватные члены.
- session_start возвращает false, если старт сессии потерпел неудачу.
- clearstatcache не очищает realpath cache по умолчанию
- call_user_func() теперь передает $this, даже если вызывающий – есть родительский класс
- opendir(), scandir() и dir() теперь использую умолчательный контекст, если контекст не передан им в качестве аргумента
- Добавлена нативная поддержка функций asinh(), acosh(), atanh(), log1p() и expm1().
- Stream wrappers теперь могут быть использованы как include_path()
- Магические методы get(), set(), isset(), unset() и call() теперь всегда должны быть public и больше не могут быть static
* toString() больше не может принимать аргументы
- Введен новый магический метод callStatic()
* Новый параметр previous в Exception::construct()
- SplObjectStorage теперь имеет поддержку ArrayAccess. Это так же позволяет хранить ассоциативную информацию с объектами в SplObjectStorage.
- ereg-функции вызывают E_DEPRECATED , пользуйтесь PCRE
- Следующие ini-директивы вызывают E_DEPRECATED при старте
- – define_syslog_variables
- – register_globals
- – register_long_arrays
- – safe_mode
- – magic_quotes_gpc
- – magic_quotes_runtime
- – magic_quotes_sybase
- is_a() – больше не является DEPRECATED (устаревшей)
PHP не может быть собран без PCRE, Reflection, SPL
PHP не может быть собран без поддержки FastCGI
CGI/FastCGI поддерживают php.ini-файлы в стиле .htaccess ( т.е. per-dir )
- директивы ini-файла zend_extension_debug и zend_extension_ts заменены на zend_extension
- zend.ze1_compatibility_mode удалено и вызывает E_ERROR
- Добавлен новый пользовательский механизм инициализации
и конфигурационные переменные user_ini.filename и user_ini.cache_ttl
Специальные секции в ини-файлах
- [PATH=/opt/httpd/www.example.com/] и [HOST=www.example.com].
- Директивы определенные в этих секциях не могут быть переписаны пользовательскими ini-файлами
- директива ini-файла extension теперь может принимать полные пути
- умолчательное значение session.use_only_cookies изменено на 1
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;
Новые расширения
- - fileinfo
- - intl
- - Phar
- - SQLite3
Новые Stream Wrappers
- - glob:
* - phar:
Новые функции
Ядро: 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.
Кажется патч почти принят, не принято решение о том какой использовать синтаксис - когда все будет решено, я обновлю данную статью.
программирование/новости.php-5.3.txt · Последние изменения: 2010/03/22 01:49 (внешнее изменение)