diff options
author | Rasmus Lerdorf <rasmus@php.net> | 2010-03-24 16:23:50 +0000 |
---|---|---|
committer | Rasmus Lerdorf <rasmus@php.net> | 2010-03-24 16:23:50 +0000 |
commit | 84e34802ab39a3c7480cdbf44dd9020be24f070c (patch) | |
tree | 2946cf11b160b84adc164e52416770acf91827ed /UPGRADING | |
parent | 3842a993fee5324dd9bbcc879aaa880c8a43624e (diff) | |
download | php-git-84e34802ab39a3c7480cdbf44dd9020be24f070c.tar.gz |
Reset this document
Diffstat (limited to 'UPGRADING')
-rwxr-xr-x | UPGRADING | 617 |
1 files changed, 56 insertions, 561 deletions
@@ -1,13 +1,13 @@ $Id$ -UPGRADE NOTES - PHP 5.3 - -1. Reserved words and classes -2. Changes made to existing functions -3. Changes made to existing methods -4. Changes made to existing classes -5. Deprecated -6. Undeprecated +UPGRADE NOTES - PHP X.Y + +1. Changes made to default configuration +2. Reserved words and classes +3. Changes made to existing functions +4. Changes made to existing methods +5. Changes made to existing classes +6. Deprecated 7. Extensions: a. moved out to PECL and actively maintained there b. no longer maintained @@ -17,7 +17,7 @@ UPGRADE NOTES - PHP 5.3 9. Changes in INI directives 10. Syntax additions 11. Windows support -12. New in PHP 5.3: +12. New in PHP X.Y: a. New libraries b. New extensions c. New stream wrappers @@ -27,190 +27,50 @@ UPGRADE NOTES - PHP 5.3 g. New classes h. New methods i. New class constants + j. New hash algorithms -============================= -1. Reserved words and classes -============================= - -- **namespace** and **goto** are now reserved keywords. - -- **Closure** is now a reserved class. (Used by lambda and closure.) - -===================================== -2. Changes made to existing functions -===================================== - -- The HTTP stream wrapper now considers all status codes from 200 to 399 to be - successful. - -- The array functions natsort(), natcasesort(), usort(), uasort(), uksort(), - array_flip(), and array_unique() no longer accept objects passed as arguments. - If you need to use them to access an object's properties, you must cast the - object to an array first. - -- var_dump() output now includes private object members. - -- session_start() now returns FALSE when the session startup fails. - -- property_exists() now checks the existence of a property independent of - accessibility (like method_exists()). - -- The $initial parameter for array_reduce can now be of any type. - -- clearstatcache() no longer clears the realpath cache by default. -- realpath() is no longer system-dependent and works identically on all - platforms. +======================================== +1. Changes made to default configuration +======================================== -- call_user_func() now propagates $this even if the callee is the parent class. +- The default_charset setting now defaults to UTF-8. + It was ISO-88590-1 before, so if you were relying + on the default, you will need to add: -- The filesystem functions opendir(), scandir(), and dir() now use the default - context if no context argument is passed. + default_charset = iso-8859-1 -- The behaviour of functions with by-reference parameters called by value has - changed. Where previously the function would accept the by-value argument, a - warning is now emitted and all by-ref parameters are set to NULL. + to your php.ini to preserve pre-PHPX.Y behavior -- There is now native support for the following math functions: asinh(), - acosh(), atanh(), log1p(), and expm1(). - -- In the GD extension, there is now pixelation support available through - the imagefilter() function. - -- crypt() now has Blowfish and extended DES support, and crypt() features are - now 100% portable. PHP has its own internal crypt implementation which drops - into place when system support for crypt or crypt_r() is not found. - -- get_cfg_var() is now able to return "array" INI options. - -- Stream wrappers can now be used by the include_path INI directive. - -- These functions now take new parameters: - clearstatcache(): $clear_realpath_cache and $filename. - copy(): $context - fgetcsv(): $escape - ini_get_all(): $details - json_encode(): $options - json_decode(): $depth - nl2br(): $is_xhtml - parse_ini_file(): $scanner_mode - round(): $mode - stream_context_create(): $params - strstr(), stristr(): $before_needle - sybase_connect(): $new - -- And new mode option for fopen: 'n' (O_NONBLOCK) - -- The new mysqlnd library necessitates using MySQL's newer 41-byte password - format. Continued use of the old 16 byte passwords will cause mysql_connect() - and other related functions to produce the following error message: - "mysqlnd cannot connect to MySQL 4.1+ using old authentication" - -- The dl() function is now disabled by default, and only available under the - cli, cgi, and embed SAPIs. - -- mail() now supports the logging of sent mail. +============================= +2. Reserved words and classes +============================= -- stream_select(), stream_set_blocking(), stream_set_timeout(), and - stream_set_write_buffer() now work with user-space stream wrappers. +- -- getopt() accepts "long options" now on all platforms. - Optional values and using = as a separator for short options are now - supported. +===================================== +3. Changes made to existing functions +===================================== +- =================================== -3. Changes made to existing methods +4. Changes made to existing methods =================================== -- The magic methods __get(), __set(), __isset(), __unset(), and __call() should - always be public and can no longer be static. Method signatures are enforced. - -- The __call() magic method is now invoked on access to private and protected - methods. - -- The __toString() magic method can no longer accept arguments. - -- There is a new magic method, __callStatic(). - -- Internal count() vs. count_elements() handler resolution rules have changed. - (This could potentially break custom PHP extensions.) - -- The trailing / has been removed from SplFileInfo and other related directory - classes. - -- SplFileInfo::getpathinfo() now returns information about the path name. - -- There are new parameters in: - Exception::__construct(): $previous +- =================================== -4. Changes made to existing classes +5. Changes made to existing classes =================================== -- SplObjectStorage now has ArrayAccess support. It is also now possible to - store associative information with objects in SplObjectStorage. +- ============= -5. Deprecated +6. Deprecated ============= -- define_syslog_variables() is deprecated. - -- set_socket_blocking() is deprecated. - -- call_user_method() and call_user_method_array() are now deprecated. Use - call_user_func() and call_user_func_array() instead. - -- dl() is deprecated. - -- The set_magic_quotes_runtime() function is now deprecated. - -- mysql_listtables(), mysql_dropdb(), mysql_createdb(), mysql_list_tables(), - mysql_drop_db(), and mysql_create_db() are now deprecated. - -- All ereg functions are now deprecated and emit E_DEPRECATED errors: - sql_regcase(), spliti(), split(), ereg_replace(), eregi(), - ereg_replace(), and ereg(). - Use the PCRE family of functions (preg_*()) instead. - -- mcrypt_generic_end() is deprecated. - -- mysql_db_query() is deprecated. - -- mysql_escape_string() is deprecated. - -- session_register(), session_unregister(), and session_is_registered() are now - deprecated. Use the $_SESSION superglobal array instead. - -- Comments starting with '#' are now deprecated in .INI files. - -- The following INI directives will now emit an E_DEPRECATED warning - upon startup if they are activated: - - - define_syslog_variables - - register_globals - - register_long_arrays - - safe_mode - - magic_quotes_gpc - - magic_quotes_runtime - - magic_quotes_sybase - -- The is_dst parameter to mktime() is deprecated. - -- Assigning the return value of "new" by reference is deprecated - -- Call-time pass-by-reference has been deprecated - -- Usage of {} to access string offsets is deprecated - -- Passing locale category name as string to setlocale() is deprecated. - -=============== -6. Undeprecated -=============== - -- By popular request, is_a() is no longer deprecated. +- ============== 7. Extensions: @@ -218,451 +78,86 @@ UPGRADE NOTES - PHP 5.3 a. moved out to PECL and actively maintained there - - fdf - - ming - - ncurses + - b. no longer maintained - - dbase - - fbsql - - msql - - sybase (use sybase_ct, which is still in PHP core) - - mhash (hash has full BC layer) - - mime_magic (use fileinfo, has full BC layer) + - c. with changed behaviour - - dns: dns_check_record() will now return an extra "entries" index, - containing the TXT elements. - - - datetime: date/time functions will no longer use the TZ environment - variable to guess which timezone should be used. - - - cURL now supports SSH - - - hash: The SHA-224 and salsa hash algorithms are now supported. - - - mbstring: Now supports CP850 encoding. - - - oci8: Database Resident Connection Pooling (DRCP) and Fast Application - Notification (FAN) are now supported. - - Oracle External Authentication is now supported (except on Windows). - - The oci8 function oci_bind_by_name() now supports SQLT_AFC (aka the - CHAR datatype). - - Calling oci_close() on a persistent connection, or when the variable - that references a persistent connection goes out of scope, will now - trigger a roll back of an uncommitted transaction. To avoid unexpected - behavior explicitly issue a commit or roll back as needed. The old - behavior can be enabled with the INI directive - oci8.old_oci_close_semantics. - - - openssl: OpenSSL digest and cipher functions are now supported. - It is also now possible to access the internal values of DSA, RSA and - DH keys. - - - session: Sessions will no longer store session-files in "/tmp" when - open_basedir restrictions apply, unless "/tmp" is explicitly added to - the list of allowed paths. - - - SOAP: Now supports sending user-supplied HTTP headers. - - - MySQLi: Now supports persistent connections by prepending the hostname - with "p:". + - d. no longer possible to disable - - PCRE - - Reflection - - SPL + - ========================== 8. Changes in SAPI support ========================== -- A new "litespeed" SAPI is now available. - -- FastCGI is now always enabled and can not be disabled. See sapi/cgi/CHANGES - for more details. - -- A new CGI SAPI option, -T, can be used to measure execution time of a script - repeated several times. - -- CGI/FastCGI now has support for .htaccess style user-defined php.ini files. - See the new user_ini.filename and user_ini.cache_ttl INI directives. +- ============================ 9. Changes in INI directives ============================ -- zend_extension_debug and zend_extension_ts have been removed. Always use the - zend_extension directive to load Zend Extensions. - -- zend.ze1_compatibility_mode has been removed. If this INI directive is set to - on, then an E_ERROR is emitted at startup. - -- There is now support for special sections: [PATH=/opt/httpd/www.example.com/] - and [HOST=www.example.com]. Directives set in these sections cannot be - overridden by user-defined INI files or at runtime. - -- Added mbstring.http_output_conv_mimetype. This directive specifies the - regex pattern of content types for which mb_output_handler() is activated. - -- It is now possible to use the full path to load modules using the "extension" - directive. - -- "INI variables" can now be used almost anywhere in a php.ini file. - -- It is now possible to use alphanumeric or variable indices in INI option - arrays. - -- open_basedir is now PHP_INI_ALL - -- Runtime tightening of open_basedir restrictions is now possible. - -- The default value of session.use_only_cookies has changed to "1". - -- The default value of oci8.default_prefetch has been changed from 10 to 100. - -- A new directive, request_order, controls the behavior of $_REQUEST - independently of variables_order. - -- New INI directives: - - mail.add_x_header - - user_ini.filename - - user_ini.cache_ttl - - exit_on_timeout - - mysqli.allow_persistent - - mysqli.default_host - - mysqli.default_socket - - mysqli.allow_local_infile - - mysqli.cache_size - - oci8.connection_class - - oci8.events - - pdo_mysql.default_socket - - pdo_mysql.cache_size - - sqlite3.extension_dir - - mysql.default_socket - - mysql.allow_local_infile - - mysql.cache_size - - mysqlnd.collect_statistics - - mysqlnd.collect_memory_statistics - - mysqlnd.net_cmd_buffer_size - - mysqlnd.net_read_buffer_size - - mysqlnd.log_mask - +- ==================== 10. Syntax additions ==================== -- NOWDOC: Similar to HEREDOC, but with single quotes: - - <<<'LABEL' ... - - Static HEREDOCs can be used to initialize static variables and class members - or constants: - - static $foo = <<<LABEL - No variables here... - LABEL; - -- HEREDOC now supports wrapping the identifier with double-quotes, to complement - the NOWDOC syntax: - - <<<"LABEL" ... - -- The ?: operator has been introduced: - - var_dump(0 ?: 'Hello!'); - -- Namespaces were added: - - namespace my\name; - $obj = new \my\name\MyClass; - -- Dynamic access to static methods is now possible: - - $foo::myFunc(); - -- Exceptions can now be nested: - - class MyCustomException extends Exception {} - try { - throw new MyCustomException("Something happend", 112); - } catch(Exception $e) { - throw new InvalidArgumentException("You are doing it wrong!", 911, $e); - } - -- Exceptions can now be handled in destructors. - -- A garbage collector has been added and is enabled by default. +- =================== 11. Windows support =================== -- The minimum Windows version is now Windows 2000. (Windows 98, ME and NT4 are - no longer supported). - -- PHP Windows binaries target i586 or later. i386 and i486 are not supported. - -- Support for the IIS SAPI has been dropped. Use the FastCGI SAPI instead - (available for IIS5 and later)). FastCGI is the recommended way to use PHP - with IIS (see http://php.iis.net/). - -- A new build is available based on the latest Visual C++ Compiler (VC9). - Its use is recommended with FastCGI or CLI. Apache's Windows binaries are not - compatible with VC9; however, you can use Apache Lounge's build - (http://apachelounge.com). - -- The x64 binaries are for experimental usage only. They are not meant to be - used in production. - -- A new site is available to download Windows releases as well as Windows-only - releases: http://windows.php.net. Windows-specific releases will be made to - fix security issues in the bundled libraries (libpng, openssl, etc.). Please - note that this site does not replace the main PHP site as a source of PHP - news, resources, or documentation. - -- Windows support has been added for the following functions: getopt(), - imagecolorclosesthwb(), mcrypt_create_iv(), inet_ntop(), inet_pton(), - getmxrr(), checkdnsrr(), dns_get_record(), linkinfo(), readlink(), - symlink(), link(), fnmatch(), stream_socket_pair(), time_nanosleep(), - time_sleep_until(), and socket_create_pair(). - -- Crypt supports now all available algorithms on Windows (blowfish included). - -- Improved portability of stat(), touch(), filemtime(), filesize() and related - functions (100% portable for the available data). - -- It is now possible to create hard links on Windows using the link() function, - and symbolic links using the symlink() function. Hard links are available - as of Windows 2000 and symbolic links as of Windows Vista. - -- The PDO_OCI php_pdo_oci8.dll library (for use with Oracle version 8 client - libraries) is no longer being built. Instead, use php_pdo_oci.dll (note no - '8') with Oracle 10 or 11 client libraries. Connection to other database - versions is still supported. - -- For the OCI8 extension, a new library php_oci8_11g.dll is available in - addition to php_oci8.dll. Only one can be enabled at any time. Use - php_oci8.dll with Oracle 10.2 client libraries. Use php_oci8_11g.dll with - Oracle 11 client libraries. Connection to other database versions is still - supported. - -- Firebird and SNMP support are no longer available on Windows. Firebird support - may be reintroduced in the future. +- =================== -12. New in PHP 5.3: +12. New in PHP X.Y: =================== a. New libraries - - mysqlnd is a new core library shipped with PHP. It is a PHP-specific - replacement for libmysql and is recommended for all installations for - increased performance. + - b. New extensions - - enchant - - fileinfo (replaces mime_magic) - - intl - - Phar - - SQLite3 + - c. New stream wrappers - - glob:// stream wrapper - - phar:// stream wrapper for accessing phar archives + - d. New stream filters - - "dechunk" (HTTP/1.1 chunked transfer encoding) - - The bz2.decompress filter now supports concatenation + - e. New functions - - Core: 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: array_replace() - array_replace_recursive() - - Date: 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() - - IMAP: imap_gc() - imap_utf8_to_mutf7() - imap_mutf7_to_utf8() - - JSON: json_last_error() - - libxml: libxml_disable_entity_loader - - MySQLi: mysqli_fetch_all() - mysqli_get_connection_stats() - mysqli_poll() - mysqli_reap_async_query() - - Network: 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() - shm_has_var() - - Streams: stream_supports_lock() - stream_context_set_default() - stream_context_get_params() - - Userspace stream wrappers: - stream_cast() - stream_set_options() + - Core: f. New global constants - - Core: E_DEPRECATED - E_USER_DEPRECATED - __DIR__ - __NAMESPACE__ - PHP_MAXPATHLEN - 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 - - cURL CURLOPT_PROGRESSFUNCTION - - 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 - - libxml: LIBXML_LOADED_VERSION - - 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 + - Core: g. New classes - - Date: DateInterval - DatePeriod - - Phar: Phar - PharData - PharFileInfo - PharException - - SPL SplDoublyLinkedList - SplStack - SplQueue - SplHeap - SplMinHeap - SplMaxHeap - SplPriorityQueue - SplFixedArray - FilesystemIterator - GlobIterator - RecursiveTreeIterator - MultipleIterator + - h. New methods - - Date: DateTime::diff() - DateTime::add() - DateTime::sub() - DateTime::createFromFormat() - DateTime::getLastErrors() - - DOM: DOMNode::getLineNo() - - Exception: Exception::getPrevious() - - PDO_Firebird: PDO::setAttribute() - - Reflection: ReflectionProperty::setAccessible() - ReflectionFunction::inNamespace() - ReflectionFunction::getNamespaceName() - ReflectionFunction::getShortName() - ReflectionClass::inNamespace() - ReflectionClass::getNamespaceName() - ReflectionClass::getShortName() - - SPL SplObjectStorage::addAll() - SplObjectStorage::removeAll() - - XSL: XSLTProcessor::setProfiling() + - i. New class constants - - PDO_Firebird: PDO::FB_ATTR_DATE_FORMAT - PDO::FB_ATTR_TIME_FORMAT - PDO::FB_ATTR_TIMESTAMP_FORMAT + - + + j. New Hash algorithms + + - fnv132 + - fnv164 + - joaat |