Итак, посмототрим – готовы ли вы к 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 (внешнее изменение)