尽管大部分 PHP 4 的代码应该不用修改就能运行,还是应该留意以下不向下兼容的改变:
E_ERROR
而不是
E_WARNING
。一个非法使用的例子:$str = 'abc'; unset($str[0]);.
E_WARNING
信息。要小心因为你的代码有可能疯狂发出
E_WARNING
。
T_ML_COMMENT
常量。如果把
error_reporting 设为 E_ALL
,PHP
将产生一条消息。尽管 T_ML_COMMENT
从来都没用到过,还是在 PHP 4 中定义了。在 PHP 4 和 PHP 5
中 // 和 /* */ 都被解析为 T_COMMENT
常量。但是 PHPDoc 风格的注释 /** */,自 PHP 5 开始被
PHP 解析,被识别为 T_DOC_COMMENT
。
__CLASS__
,__METHOD__
和 __FUNCTION__
。其值都会严格按照定义时的名字返回(区分大小写)。
FALSE
,不再是
-1。
Example #1 strrpos() 和 strripos() 如今用整个字符串作为 needle
<?php
var_dump(strrpos('ABCDEF','DEF')); //int(3)
var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>
Example #2 没有属性的对象不再被当成“empty”
<?php
class test { }
$t = new test();
var_dump(empty($t)); // echo bool(false)
if ($t) {
// Will be executed
}
?>
Example #3 有些情况下类必须在使用之前定义
<?php
//works with no errors:
$a = new a();
class a {
}
//throws an error:
$a = new b();
interface c{
}
class b implements c {
}
?>