PHP Version 5.0.0 Beta 1 Published

有什么变化

它的核心是 Zend 引擎 2 代,引入了新的对象模型和大量新功能。

http://people.apache.org/~jim/ApacheCons/ApacheCon2002/pdf/suraski-php-02.pdf

新增了什么

  • New php.ini options:

    • “session.hash_function” and “session.hash_bits_per_character”. (Sascha)
    • “mail.force_extra_paramaters”. (Derick)
    • “register_long_arrays”. (Zeev)
  • Added new iconv functions. (Moriyoshi)

    • iconv_strlen()
    • iconv_substr()
    • iconv_strpos()
    • iconv_strrpos()
    • iconv_mime_decode()
    • iconv_mime_encode()
  • Added misc. new functions:

    • ldap_sasl_bind(). ([email protected], Jani)
    • imap_getacl(). (Dan, Holger Burbach)
    • file_put_contents(). (Sterling)
    • proc_nice() - Changes priority of the current process. (Ilia)
    • pcntl_getpriority() and pcntl_setpriority(). (Ilia)
    • idate(), date_sunrise() and date_sunset(). (Moshe Doron)
    • strpbrk() - Searches a string for a list of characters. (Ilia)
    • get_headers() - Returns headers sent by the server of the specified URL. (Ilia)
    • str_split() - Breaks down a string into an array of elements based on length. (Ilia)
    • array_walk_recursive(). (Ilia)
    • array_combine(). (Andrey)
  • Added optional parameter to get_browser() to make it return an array. (Jay)

  • Added optional parameter to openssl_sign() to specify the hashing algorithm.([email protected], Derick)

  • Added optional parameter to sha1(), sha1_file(), md5() and md5_file() which makes them return the digest as binary data. (Michael Bretterklieber, Derick)

  • Added optional parameter to mkdir() to make directory creation recursive. (Ilia)

  • Added optional parameter to file() which makes the result array not contain the line endings and to skip empty lines. (Ilia)

  • Added new range() functionality:

    • Support for float modifier. (Ilia)
    • Detection of numeric values inside strings passed as high & low. (Ilia)
    • Proper handle the situations where high == low. (Ilia)
    • Added an optional step parameter. (Jon)
  • Added encoding detection feature for expat XML parser. (Adam Dickmeiss, Moriyoshi)

  • Added missing multibyte (unicode) support and numeric entity support to html_entity_decode(). (Moriyoshi)

  • Added IPv6 support to ext/sockets. (Sara)

  • Added input filter support. See README.input_filter for more info. (Rasmus)

  • Added a replace count for str_[i]replace(), see #8218. (Sara)

移除了什么

  • Removed the bundled MySQL client library. (Sterling)

修改了什么

  • Switch to using Zend Engine 2, which includes numerous engine level improvements. A full overview may be downloaded from http://www.zend.com/engine2/ZendEngine-2.0.pdf (PDF).

  • The SQLite (http://www.hwaci.com/sw/sqlite/) extension is now bundled and enabled by default. (Wez, Marcus, Tal)

  • Improved the speed of internal functions that use callbacks by 40% due to a new internal fast_call_user_function() function. (Sterling)

  • Completely Overhauled XML support (Rob, Sterling, Chregu, Marcus)

    • Brand new Simplexml extension
    • New DOM extension
    • New XSL extension
    • Moved the old DOM-XML and XSLT extensions to PECL
    • ext/xml can now use both libxml2 and expat to parse XML
    • Removed bundled expat
  • Improved the streams support: (Wez, Sara, Ilia)

    • Improved performance of readfile(), fpassthru() and some internal streams operations under Win32.
    • stream_socket_client() - similar to fsockopen(), but more powerful.
    • stream_socket_server() - Creates a server socket.
    • stream_socket_accept() - Accept a client connection.
    • stream_socket_get_name() - Get local or remote name of socket.
    • stream_copy_to_stream()
    • stream_get_line() - Reads either the specified number of bytes or until the ending string is found.
    • Added context property to userspace streams object.
    • Added generic crypto interface for streams (supports dynamic loading of OpenSSL)
    • Added lightweight streaming input abstraction to the Zend Engine scanners to provide uniform support for include()'ing data from PHP streams across all platforms.
    • Added ‘string.base64’ stream filter.
    • Renamed stream_register_wrapper() to stream_wrapper_register().
    • Added “ftp://” wrapper support to opendir(), stat() and unlink().
    • Added context options ‘method’, ‘header’ and ‘content’ for “http://” fopen wrapper.
  • Improved the GD extension: (Pierre-Alain Joye, Ilia)

    • imagefilter() - Apply different filters to image. (Only available with bundled GD library)
    • Antialiased drawing support:
      • imageantialias() - (de)active antialias
      • imageline() and imagepolygon() antialias support
  • Changed the length parameter in fgetss() to be optional. (Moriyoshi)

  • Changed ini parser to allow for handling of quoted multi-line values. (Ilia)

  • Changed get_extension_funcs() to return list of the built-in Zend Engine functions if “zend” is specified as the module name. (Ilia)

  • Changed array_search() to accept also objects as a needle. (Moriyoshi)

  • Changed ext/mcrypt to require libmcrypt version 2.5.6 or greater. (Derick)

  • Changed uniqid() parameters to be optional and allow any prefix length. (Marcus)

修复了什么BUG

  • Fixed is_executable() to be available also on Windows. (Shane)
  • Fixed dirname() and strip_tags() to be binary-safe. (Moriyoshi)
  • Fixed bug #24098 (crash in pathinfo()). (Ilia)
  • Fixed bug #21985 and #22064 (various mb_send_mail() issues). (Moriyoshi)
  • Fixed bug #21600 (Assign by reference function call changes variable contents). (Zeev)

为了解决什么问题

  • BUG
  • XML被广泛使用,支持能力需要提升
  • 支持IPv6
  • 在面向对象的设计支持不足

关键思路是什么

  • 借鉴优秀的设计思路,如JAVA,补充更多的面向对象设计特性

演进思路是什么