尽管大部分现有的 PHP 5 代码不需要任何改变就可以正常运行,但请注意一些不向后兼容的变更:
FALSE
。 调用 set_magic_quotes_runtime() 将产生一个 E_CORE_ERROR
级别的错误。
E_WARNING
错误。
E_WARNING
错误。偏移量类型是布尔和 null 则产生一条 E_NOTICE
错误。 数字字符串(比如 $a['2'] )仍像以前一样运行。注意像类似 '12.3' 和 '5 foobar' 这样的偏移量将被视为非数字并产生一条 E_WARNING
错误,但因为向后兼容的原因它们会被分别转换成 12 和 5 。
注意:下列代码返回不同的结果。
$str='abc';var_dump(isset($str['x'])); // 在 PHP 5.4 或更新版本返回 false,但在 PHP 5.3 或更低版本返回 true
E_NOTICE
级别的错误,但返回的结果仍是字符串 "Array" 。
NULL
、FALSE
、或 一个空字符串被添加成一个对象的属性时将发出一条 E_WARNING
级别的错误,而不是 E_STRICT
。
FALSE
。
E_STRICT
错误。
下列关键字现在被 保留 ,且不能用于函数名或类名。
下列函数已从 PHP 中移除:
luis at portanel dot com (2013-03-07 17:46:36)
It's not a PHP version incompatibility itself, but it's important to know that Microsoft dropped the php_mssql.dll support for the "mssql_" funcitions since this version.
To connect to a MSSQL database since 5.4, one good alternative are the PDO drivers.
Chris (2013-01-05 15:00:38)
Missing some chars like german umlauts after use of htmlspecialchars? That's because the third param encoding has changed it's default value in PHP 5.4 from ISO-8859-1 to UTF-8.
Possible solution #1:
Change your code from this ...
<?php htmlspecialchars( '??ü' ); ?>
... to this:
<?php htmlspecialchars ( '??ü' , ENT_COMPAT | ENT_HTML401 , 'ISO-8859-1' ); ?>
Possible solution #2:
Create a wrapper function and replace htmlspecialchars( to i.e. isohtmlspecialchars( with your IDE/editor/shell...
Example of a wrapper function:
<?php
function isohtmlspecialchars( $str ){
return htmlspecialchars ( $str , ENT_COMPAT | ENT_HTML401 , 'ISO-8859-1' );
}
?>