向后不兼容的改变

尽管大部分 PHP 4 的代码应该不用修改就能运行,还是应该留意以下向后不兼容的改变:

例子 B-1. strrpos()strripos() 如今用整个字符串作为 needle

<?php
var_dump
(strrpos('ABCDEF','DEF')); //int(3)

var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>

例子 B-2. 没有属性的对象不再被当成“empty”

<?php
class test { }
$t = new test();

var_dump(empty($t)); // echo bool(false)

if ($t) {
    
// Will be executed
}
?>

例子 B-3. 有些情况下类必须在使用之前定义

<?php

//works with no errors:
$a = new a();
class
a {
}


//throws an error:
$a = new b();

interface c{
}
class
b implements c {
}

?>