Loading... <h2 class="title"><span style="font-size: 16px">What has changed in PHP 5.4.x<br /></span></h2> <h2 class="title"><span style="font-size: 14px">Most improvements in PHP 5.4.x have no impact on existing code. There are a </span>few incompatibilities<span style="font-size: 14px"> and </span>new features<span style="font-size: 14px"> that should be considered, and code should be tested before switching PHP versions in production environments.</span></h2> <h2 class="title"><span style="font-size: 18px">1. Backward Incompatible Changes :一些内容将不兼容 </span></h2> <p>1)不再支持安全模式,</p> <p>2) 移除魔术引用,</p> <p>3) 移除全局变量php.ini设置,</p> <p>4) 移除Call-time pass by reference(如call_user_func_array('function', array(&$a) 不支持)</p> <p>5)break/continue 不接受参数,但保留接受静态参数</p> <p>6)必须设置时区timezone</p> </p> <h1><span style="font-weight: normal">7) 注意非数字数组键值</span> 详看:<span style="font-weight: inherit;font-style: inherit">PHP5.4中一个需要注意的变化(Chained string offsets)</span> </h1> <p>8) 数组转字符串提示<span style="font-family: verdana, arial, helvetica, sans-serif"> </span><span style="font-family: verdana, arial, helvetica, sans-serif"><strong><code>E_NOTICE</code></strong></span><span style="font-family: verdana, arial, helvetica, sans-serif"> level error</span></p> <p><span style="font-family: verdana, arial, helvetica, sans-serif">8) 使用超全局变量做函数参数将导致致命错误</span></p> <p><span style="font-family: verdana, arial, helvetica, sans-serif"></span></p> <pre class="brush:python;toolbar:false"> function foo($_GET, $_POST) {} //在5.3是没问题的. //php5.4出现:Fatal error: Cannot re-assign auto-global variable _GET in /opt/php-5.4.0/test.php on line 4</pre> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Although most existing PHP 5 code should work without changes, please take note of some backward incompatible changes:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">Safe mode is no longer supported. Any applications that rely on safe mode may need adjustment, in terms of security.</span></p> </li> <li> <p><span class="simpara">Magic quotes has been removed. Applications relying on this feature may need to be updated, to avoid security issues. </span><span class="simpara"><span class="function">get_magic_quotes_gpc()</span> and <span class="function">get_magic_quotes_runtime()</span> now always return <strong><code>FALSE</code></strong>.<span class="function">set_magic_quotes_runtime()</span> raises an <strong><code>E_CORE_ERROR</code></strong> level error.</span></p> </li> <li> <p><span class="simpara">The register_globals and register_long_arrays <var class="filename">php.ini</var> directives have been removed.</span></p> </li> <li> <p><span class="simpara">Call-time pass by reference has been removed.</span></p> </li> <li> <p><span class="simpara">The break and continue statements no longer accept variable arguments (e.g., <strong>break 1 + foo() * $bar;</strong>). Static arguments still work, such as <strong>break 2;</strong>.</span></p> </li> <li> <p><span class="simpara">In the date and time extension, the timezone can no longer be set using the TZ environment variable. Instead you have to specify a timezone using the date.timezone <var class="filename">php.ini</var> option or <span class="function">date_default_timezone_set()</span> function. PHP will no longer attempt to guess the timezone, and will instead fall back to "UTC" and issue a <strong><code>E_WARNING</code></strong>.</span></p> </li> <li> <p><span class="simpara">Non-numeric string offsets – e.g. <strong>$a['foo']</strong> where $a is a string – now return false on <span class="function">isset()</span> and true on <span class="function">empty()</span>, and produce a <strong><code>E_WARNING</code></strong> if you try to use them. Offsets of types double, bool and null produce a <strong><code>E_NOTICE</code></strong>. Numeric strings (e.g. <strong>$a['2']</strong>) still work as before. Note that offsets like <strong>'12.3'</strong> and <strong>'5 foobar'</strong> are considered non-numeric and produce a <strong><code>E_WARNING</code></strong>, but are converted to 12 and 5 respectively, for backward compatibility reasons. </span><span class="simpara">Note: Following code returns different result. </span><span class="simpara">$str='abc';var_dump(isset($str['x'])); // false for PHP 5.4 or later, but true for 5.3 or less</span></p> </li> <li> <p><span class="simpara">Converting an array to a string will now generate an <strong><code>E_NOTICE</code></strong> level error, but the result of the cast will still be the string <strong>"Array"</strong>.</span></p> </li> <li> <p><span class="simpara">Turning <strong><code>NULL</code></strong>, <strong><code>FALSE</code></strong>, or an empty string into an object by adding a property will now emit an <strong><code>E_WARNING</code></strong> level error, instead of <strong><code>E_STRICT</code></strong>.</span></p> </li> <li> <p><span class="simpara">Parameter names that shadow super globals now cause a fatal error. This prohibits code like <strong>function foo($_GET, $_POST) {}</strong>.</span></p> </li> <li> <p><span class="simpara">The Salsa10 and Salsa20 hash algorithms have been removed.</span></p> </li> <li> <p><span class="simpara"><span class="function">array_combine()</span> now returns <strong>array()</strong> instead of <strong><code>FALSE</code></strong> when two empty arrays are provided as parameters.</span></p> </li> <li> <p><span class="simpara">If you use <span class="function">htmlentities()</span> with asian character sets, it works like <span class="function">htmlspecialchars()</span> – this has always been the case in previous versions of PHP, but now an <strong><code>E_STRICT</code></strong> level error is emitted.</span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">The following keywords are now reserved, and may not be used as names by functions, classes, etc.</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><strong>trait</strong></span></p> </li> <li> <p><span class="simpara"><strong>callable</strong></span></p> </li> <li> <p><span class="simpara"><strong>insteadof</strong></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">The following functions have been removed from PHP:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="function">define_syslog_variables()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">import_request_variables()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">session_is_registered()</span>, <span class="function">session_register()</span> and <span class="function">session_unregister()</span>.</span></p> </li> <li> <p><span class="simpara">The aliases <span class="function">mysqli_bind_param()</span>, <span class="function">mysqli_bind_result()</span>, <span class="function">mysqli_client_encoding()</span>, <span class="function">mysqli_fetch()</span>, <span class="function">mysqli_param_count()</span>, <span class="function">mysqli_get_metadata()</span>, <span class="function">mysqli_send_long_data()</span>, mysqli::client_encoding() and mysqli_stmt::stmt().</span></p> </li> </ul> <h2 class="title"><span style="font-size: 18px">2. New features 新功能</span></h2> <p><span style="font-family: verdana, arial, helvetica, sans-serif"><span style="font-size: 18px"> </span><span style="font-size: 16px">1)</span></span><span style="font-size: 16px">traits特性的功能相当使一个类可以存在两个父类。在php5.4之前,一个类不能继承两个父类。<br /></span></p> <p><span style="font-size: 16px"> 2)数组可以类似c/c++写法</span></p> <p><span style="font-size: 16px"> 3)<span style="font-family: verdana, arial, helvetica, sans-serif"><strong>Class::{expr}()</strong></span><span style="font-family: verdana, arial, helvetica, sans-serif"> 这个写法有点迷糊</span></span></p> <p><span style="font-family: verdana, arial, helvetica, sans-serif"><span style="font-size: 16px"> 4)支持二进制数值,即二进制直接写赋值给变量:</span></span></p> <p><span style="font-family: verdana, arial, helvetica, sans-serif"><span style="font-size: 16px"><span class="sh_symbol" style="margin: 0px;padding: 0px;border: 0px;font-family: Monaco, Consolas, Courier, monospace;vertical-align: baseline;line-height: 18px"></span></span></span></p> <pre class="brush:python;toolbar:false">$bin = 0b1101; echo $bin; //13</pre> <p><span style="font-size: 16px"><span class="sh_symbol" style="margin: 0px;padding: 0px;border: 0px;vertical-align: baseline;line-height: 18px">而不必使用bin2dec转换成十进制</span></span></p> <p><span style="font-family: verdana, arial, helvetica, sans-serif"><span style="font-size: 16px"> 想看大鸟:二进制直接量(binary number format) </span></span></p> <p><span style="font-family: verdana, arial, helvetica, sans-serif"><span style="font-size: 16px"> 5)<span style="line-height: 1;font-style: inherit">上传进度支持(Upload progress in sessions)</span> </span></span></p> <p><span style="font-family: verdana, arial, helvetica, sans-serif"><span style="font-size: 16px"> 6)php5.4可以编译成命令行模式的server</span></span></p> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">PHP 5.4.0 offers a wide range of new features:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">Support for traits has been added.</span></p> </li> <li> <p><span class="simpara">Short array syntax has been added, e.g. <strong>$a = [1, 2, 3, 4];</strong> or <strong>$a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];</strong>.</span></p> </li> <li> <p><span class="simpara">Function array dereferencing has been added, e.g. <strong>foo()[0]</strong>.</span></p> </li> <li> <p><span class="simpara">Closures now support <strong>$this</strong>.</span></p> </li> <li> <p><span class="simpara"><strong><?=</strong> is now always available, regardless of the short_open_tag <var class="filename">php.ini</var> option.</span></p> </li> <li> <p><span class="simpara">Class member access on instantiation has been added, e.g. <strong>(new Foo)->bar()</strong>.</span></p> </li> <li> <p><span class="simpara"><strong>Class::{expr}()</strong> syntax is now supported.</span></p> </li> <li> <p><span class="simpara">Binary number format has been added, e.g. <strong>0b001001101</strong>.</span></p> </li> <li> <p><span class="simpara">Improved parse error messages and improved incompatible arguments warnings.</span></p> </li> <li> <p><span class="simpara">The session extension can now track the upload progress of files.</span></p> </li> <li> <p><span class="simpara">Built-in development web server in CLI mode.</span></p> </li> </ul> <h2 class="title">Changes in SAPI modules</h2> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">A new SAPI module named <strong>cli-server</strong> is now available.</span></p> </li> <li> <p><span class="simpara">Added CLI option <strong>–rz</strong> which shows information of the named Zend extension.</span></p> </li> <li> <p><span class="simpara">Added shortcut <strong>#inisetting=value</strong> to change <var class="filename">php.ini</var> settings at run-time in interactive readline CLI</span></p> </li> <li> <p><span class="simpara">Added apache compatible functions: <span class="function">apache_child_terminate()</span>, <span class="function">getallheaders()</span>, <span class="function">apache_request_headers()</span> and <span class="function">apache_response_headers()</span> for FastCGI SAPI.</span></p> </li> <li> <p><span class="simpara">PHP-FPM: Added the <strong>process.max</strong> setting, to control the number of processes that FPM can fork.</span></p> </li> </ul> <h2 class="title"><span style="font-size: 18px">3 . Deprecated features in PHP 5.4.x </span>弃用的功能 </h2> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Deprecated functions:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="function">mcrypt_generic_end()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">mysql_list_dbs()</span></span></p> </li> </ul> <h2 class="title"><span style="font-size: 18px">4. Changed Functions 变化的自带函数</span></h2> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Several functions were given new, optional parameters in PHP 5.4:</p> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">PHP Core:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">Added the optional <strong><code class="parameter">limit</code></strong> parameter to <span class="function">debug_backtrace()</span> and <span class="function">debug_print_backtrace()</span>, to limit the amount of stack frames returned.</span></p> </li> <li> <p><span class="simpara"><span class="function">is_link()</span> now works properly for symbolic links on Windows Vista or later. Earlier systems do not support symbolic links.</span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">OpenSSL:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">Added a no padding option to the <span class="function">openssl_encrypt()</span> and <span class="function">openssl_decrypt()</span> functions.</span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Intl:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="function">idn_to_ascii()</span> and <span class="function">idn_to_utf8()</span> now take two extra parameters, one indicating the variant (IDNA 2003 or UTS #46) and another, passed by reference, to return details about the operation in case UTS #46 is chosen.</span></p> </li> </ul> <h2 class="title"><span style="font-size: 18px">5. New Functions 新增的函数</span></h2> <p><span style="font-family: verdana, arial, helvetica, sans-serif"></span></p> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">HP 5.4 introduced some new functions:</p> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">PHP Core:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">hex2bin() </span></p> </li> <li> <p><span class="simpara"><span class="function">http_response_code()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">get_declared_traits()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">getimagesizefromstring()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">stream_set_chunk_size()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">socket_import_stream()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">trait_exists()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">header_register_callback()</span></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">SPL:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="function">class_uses()</span></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Session:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="function">session_status()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">session_register_shutdown()</span></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Mysqli:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="function">mysqli_error_list()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">mysqli_stmt_error_list()</span></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Libxml:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="function">libxml_set_external_entity_loader()</span></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">LDAP:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="function">ldap_control_paged_result()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">ldap_control_paged_result_response()</span></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Intl:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="function">transliterator_create()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">transliterator_create_from_rules()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">transliterator_create_inverse()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">transliterator_get_error_code()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">transliterator_get_error_message()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">transliterator_list_ids()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">transliterator_transliterate()</span></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Zlib:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="function">zlib_decode()</span></span></p> </li> <li> <p><span class="simpara"><span class="function">zlib_encode()</span></span></p> </li> </ul> <h2 class="title">6 . New Classes and Interfaces 新增的类和接口</h2> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">The following classes were introduced in PHP 5.4.0:</p> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">SPL:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">CallbackFilterIterator</span></p> </li> <li> <p><span class="simpara">RecursiveCallbackFilterIterator</span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Reflection:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">ReflectionZendExtension</span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Json:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">JsonSerializable</span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Session:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">SessionHandler</span></p> </li> <li> <p><span class="simpara">SessionHandlerInterface</span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Snmp:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">SNMP</span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Intl:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">Transliterator</span></p> </li> <li> <p><span class="simpara">Spoofchecker</span></p> </li> </ul> <h2 class="title"><span style="font-size: 18px">7. New Methods 新增的方法</span></h2> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Several new methods were introduced in 5.4.0:</p> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">XSL:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="methodname">XsltProcessor::setSecurityPrefs()</span></span></p> </li> <li> <p><span class="simpara"><span class="methodname">XsltProcessor::getSecurityPrefs()</span></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">SPL:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="methodname">RegexIterator::getRegex()</span></span></p> </li> <li> <p><span class="simpara"><span class="methodname">SplObjectStorage::getHash()</span></span></p> </li> <li> <p><span class="simpara"><span class="methodname">DirectoryIterator::getExtension()</span></span></p> </li> <li> <p><span class="simpara"><span class="methodname">SplDoublyLinkedList::serialize()</span></span></p> </li> <li> <p><span class="simpara"><span class="methodname">SplDoublyLinkedList::unserialize()</span></span></p> </li> <li> <p><span class="simpara"><span class="methodname">SplFileInfo::getExtension()</span></span></p> </li> <li> <p><span class="simpara"><span class="methodname">SplFileObject::fputcsv()</span></span></p> </li> <li> <p><span class="simpara"><span class="methodname"><strong>SplQueue::serialize()</strong></span></span></p> </li> <li> <p><span class="simpara"><span class="methodname"><strong>SplQueue::unserialize()</strong></span></span></p> </li> <li> <p><span class="simpara"><span class="methodname"><strong>SplStack::serialize()</strong></span></span></p> </li> <li> <p><span class="simpara"><span class="methodname"><strong>SplStack::unserialize()</strong></span></span></p> </li> <li> <p><span class="simpara"><span class="methodname"><strong>SplTempFileObject::fputcsv()</strong></span></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Reflection:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="methodname">ReflectionExtension::isPersistent()</span></span></p> </li> <li> <p><span class="simpara"><span class="methodname">ReflectionExtension::isTemporary()</span></span></p> </li> <li> <p><span class="simpara"><span class="methodname">ReflectionClass::isCloneable()</span></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Closure:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="methodname">Closure::bind()</span></span></p> </li> <li> <p><span class="simpara"><span class="methodname">Closure::bindTo()</span></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">PDO_dblib:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="methodname"><strong>PDO::newRowset()</strong></span></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">StreamWrapper:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><span class="methodname">StreamWrapper::stream_metadata()</span></span></p> </li> <li> <p><span class="simpara"><span class="methodname">StreamWrapper::stream_truncate()</span></span></p> </li> </ul> <h2 class="title"><span style="font-size: 18px">8. Removed Extensions 移除扩展sqlite</span></h2> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">These extensions have been moved to PECL and are no longer part of the PHP distribution. The PECL package versions of these extensions will be created according to user demand.</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">sqlite – Note that ext/sqlite3 and ext/pdo_sqlite are not affected</span></p> </li> </ul> <h2 class="title"><span style="font-size: 18px">9 .Other changes to extensions 修改的扩展</span></h2> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Changes in extension behavior, and new features:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">mysqli – mysqli_result now implements Traversable</span></p> </li> </ul> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">pdo_mysql – Removed support for linking with MySQL client libraries older than 4.1</span></p> </li> </ul> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">The MySQL extensions mysql, mysqli and PDO_mysql use mysqlnd as the default library now. It is still possible to use libmysql by specifying a path to the configure options.</span></p> </li> <li> <p><span class="simpara">mysqlnd – Added named pipes support</span></p> </li> </ul> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"></ul> <h2 class="title"><span style="font-size: 18px">10. New Global Constants 新增的全局常量</span></h2> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">PHP Core:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><strong><code>ENT_DISALLOWED</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>ENT_HTML401</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>ENT_HTML5</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>ENT_SUBSTITUTE</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>ENT_XML1</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>ENT_XHTML</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IPPROTO_IP</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IPPROTO_IPV6</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IPV6_MULTICAST_HOPS</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IPV6_MULTICAST_IF</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IPV6_MULTICAST_LOOP</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IP_MULTICAST_IF</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IP_MULTICAST_LOOP</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IP_MULTICAST_TTL</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>MCAST_JOIN_GROUP</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>MCAST_LEAVE_GROUP</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>MCAST_BLOCK_SOURCE</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>MCAST_UNBLOCK_SOURCE</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>MCAST_JOIN_SOURCE_GROUP</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>MCAST_LEAVE_SOURCE_GROUP</code></strong></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Curl:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><strong><code>CURLOPT_MAX_RECV_SPEED_LARGE</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>CURLOPT_MAX_SEND_SPEED_LARGE</code></strong></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">LibXML:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><strong><code>LIBXML_HTML_NODEFDTD</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>LIBXML_HTML_NOIMPLIED</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>LIBXML_PEDANTIC</code></strong></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">OpenSSL:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><strong><code>OPENSSL_CIPHER_AES_128_CBC</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>OPENSSL_CIPHER_AES_192_CBC</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>OPENSSL_CIPHER_AES_256_CBC</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>OPENSSL_RAW_DATA</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>OPENSSL_ZERO_PADDING</code></strong></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Output buffering:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><strong><code>PHP_OUTPUT_HANDLER_CLEAN</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>PHP_OUTPUT_HANDLER_CLEANABLE</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>PHP_OUTPUT_HANDLER_DISABLED</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>PHP_OUTPUT_HANDLER_FINAL</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>PHP_OUTPUT_HANDLER_FLUSH</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>PHP_OUTPUT_HANDLER_FLUSHABLE</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>PHP_OUTPUT_HANDLER_REMOVABLE</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>PHP_OUTPUT_HANDLER_STARTED</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>PHP_OUTPUT_HANDLER_STDFLAGS</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>PHP_OUTPUT_HANDLER_WRITE</code></strong></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Sessions:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><strong><code>PHP_SESSION_ACTIVE</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>PHP_SESSION_DISABLED</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>PHP_SESSION_NONE</code></strong></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Streams:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><strong><code>STREAM_META_ACCESS</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>STREAM_META_GROUP</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>STREAM_META_GROUP_NAME</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>STREAM_META_OWNER</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>STREAM_META_OWNER_NAME</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>STREAM_META_TOUCH</code></strong></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Zlib:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><strong><code>ZLIB_ENCODING_DEFLATE</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>ZLIB_ENCODING_GZIP</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>ZLIB_ENCODING_RAW</code></strong></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Intl:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><strong><code>U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_CHECK_BIDI</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_CHECK_CONTEXTJ</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_NONTRANSITIONAL_TO_ASCII</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_NONTRANSITIONAL_TO_UNICODE</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>INTL_IDNA_VARIANT_2003</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>INTL_IDNA_VARIANT_UTS46</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_ERROR_EMPTY_LABEL</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_ERROR_LABEL_TOO_LONG</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_ERROR_DOMAIN_NAME_TOO_LONG</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_ERROR_LEADING_HYPHEN</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_ERROR_TRAILING_HYPHEN</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_ERROR_HYPHEN_3_4</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_ERROR_LEADING_COMBINING_MARK</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_ERROR_DISALLOWED</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_ERROR_PUNYCODE</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_ERROR_LABEL_HAS_DOT</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_ERROR_INVALID_ACE_LABEL</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_ERROR_BIDI</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>IDNA_ERROR_CONTEXTJ</code></strong></span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">Json:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara"><strong><code>JSON_PRETTY_PRINT</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>JSON_UNESCAPED_SLASHES</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>JSON_NUMERIC_CHECK</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>JSON_UNESCAPED_UNICODE</code></strong></span></p> </li> <li> <p><span class="simpara"><strong><code>JSON_BIGINT_AS_STRING</code></strong></span></p> </li> </ul> <h2 class="title"><span style="font-size: 18px">11. Changes to INI file handling php.ini的设置变化</span></h2> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">he following <var class="filename">php.ini</var> directives have been removed:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">register_globals and register_long_arrays</span></p> </li> <li> <p><span class="simpara">magic_quotes_gpc, magic_quotes_runtime, and magic_quotes_sybase</span></p> </li> <li> <p><span class="simpara">allow_call_time_pass_reference</span></p> </li> <li> <p><span class="simpara">define_syslog_variables</span></p> </li> <li> <p><span class="simpara">highlight.bg</span></p> </li> <li> <p><span class="simpara">session.bug_compat_42 and session.bug_compat_warn</span></p> </li> <li> <p><span class="simpara">y2k_compliance</span></p> </li> <li> <p><span class="simpara">safe_mode, safe_mode_gid, safe_mode_include_dir, safe_mode_exec_dir, safe_mode_allowed_env_vars, and safe_mode_protected_env_vars</span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">The following <var class="filename">php.ini</var> directives have been added:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">cli.pager and cli.prompt for CLI SAPI using readline in interactive mode.</span></p> </li> <li> <p><span class="simpara">cli_server.color to enable the built-in development web server to use ANSI color coding in terminal output.</span></p> </li> <li> <p><span class="simpara">max_input_vars – specifies how many GET/POST/COOKIE input variables may be accepted.</span></p> </li> <li> <p><span class="simpara">zend.multibyte – to control the new multibyte support.</span></p> </li> <li> <p><span class="simpara">zend.script_encoding – This value will be used unless a "declare(encoding=…)" directive appears at the top of the script.</span></p> </li> <li> <p><span class="simpara">zend.signal_check – to check for replaced signal handlers on shutdown.</span></p> </li> <li> <p><span class="simpara">session.upload_progress.enabled, session.upload_progress.cleanup, session.upload_progress.prefix, session.upload_progress.name, session.upload_progress.freq, session.upload_progress.min_freq</span></p> </li> <li> <p><span class="simpara">enable_post_data_reading – When it's disabled, the POST data is not read (and processed)</span></p> </li> <li> <p><span class="simpara">windows_show_crt_warning – This directive shows the Windows CRT warnings when enabled. These warnings were displayed by default until now.</span></p> </li> </ul> <p class="simpara" style="font-family: verdana, arial, helvetica, sans-serif">The following <var class="filename">php.ini</var>. directives have been changed:</p> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">session.entropy_file now defaults to /dev/random or /dev/urandom depending on what has been guessed at compile time.</span></p> </li> <li> <p><span class="simpara">session.entropy_length now defaults to 32.</span></p> </li> </ul> <h2 class="title">12. Other changes 别的修改</h2> <ul class="itemizedlist list-paddingleft-2" style="font-family: verdana, arial, helvetica, sans-serif"> <li> <p><span class="simpara">The default character set for <span class="function">htmlspecialchars()</span> and <span class="function">htmlentities()</span> is now <strong>UTF-8</strong>, instead of <strong>ISO-8859-1</strong>. Note that changing your output charset via the default_charset configuration setting does not affect htmlspecialchars/htmlentities unless you are passing "" (an empty string) as the encoding parameter to your <span class="function">htmlspecialchars()</span>/<span class="function">htmlentities()</span> calls. Generally we do not recommend doing this because you should be able to change your output charset without affecting the runtime charset used by these functions. The safest approach is to explicitly set the charset on each call to <span class="function">htmlspecialchars()</span> and <span class="function">htmlentities()</span>.</span></p> </li> <li> <p><span class="simpara"><strong><code>E_ALL</code></strong> now includes <strong><code>E_STRICT</code></strong> level errors in the error_reporting configuration directive.</span></p> </li> <li> <p><span class="simpara">SNMP now has an OOP API. </span><span class="simpara">Functions now return <strong><code>FALSE</code></strong> on every error condition including SNMP-related (no such instance, end of MIB, etc). Thus, in particular, breaks previous behavior of get/walk functions returning an empty string on SNMP-related errors. </span><span class="simpara">Multi OID get/getnext/set queries are now supported. </span><span class="simpara">Dropped UCD-SNMP compatibility code, consider upgrading to net-snmp v5.3+, Net-SNMP v5.4+ is required for Windows version. </span><span class="simpara">In sake of adding support for IPv6 DNS name resolution of remote SNMP agent (peer) is done by extension now, not by Net-SNMP library anymore.</span></p> </li> <li> <p><span class="simpara">OpenSSL now supports AES.</span></p> </li> <li> <p><span class="simpara">CLI SAPI doesn't terminate any more on fatal errors when using interactive mode with readline support.</span></p> </li> <li> <p><span class="simpara">$_SERVER['REQUEST_TIME_FLOAT'] has been added to include microsecond precision.</span></p> </li> <li> <p><span class="simpara">Added new hash algorithms: fnv132, fnv164, joaat</span></p> </li> <li> <p><span class="simpara">Chained string offsets – e.g. $a[0][0] where $a is a string – now work.</span></p> </li> <li> <p><span class="simpara">Arrays cast from <span class="type">SimpleXMLElement</span> now always contain all nodes instead of just the first matching node. All <span class="type">SimpleXMLElement</span> children are now always printed when using <span class="function">var_dump()</span>, <span class="function">var_export()</span> and <span class="function">print_r()</span>.</span></p> </li> <li> <p><span class="simpara">It's now possible to enforce the class' __construct arguments in an abstract constructor in the base class.</span></p> </li> </ul> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信