Javascript debugger
Website design
↑
Although most existing PHP 4 code should work without changes, you should pay attention to the following backward incompatible changes:
E_ERROR
instead
of E_WARNING
. An example illegal use is:
$str = 'abc'; unset($str[0]);
.
E_WARNING
will be
thrown for every such parameter. Be careful because your code may start
emitting E_WARNING
out of the blue.
T_ML_COMMENT
constant is no longer defined by
the Tokenizer extension. If
error_reporting is set to E_ALL
, PHP will
generate a notice. Although the T_ML_COMMENT
was
never used at all, it was defined in PHP 4. In both PHP 4 and PHP 5
// and /* */ are resolved as the T_COMMENT
constant. However the PHPDoc style comments /** */, which starting PHP
5 are parsed by PHP, are recognized as T_DOC_COMMENT
.
get_class(), get_parent_class() and get_class_methods() now return the name of the classes/methods as they were declared (case-sensitive) which may lead to problems in older scripts that rely on the previous behaviour (the class/method name was always returned lowercased). A possible solution is to search for those functions in all your scripts and use strtolower().
This case sensitivity change also applies to the
magical predefined
constants __CLASS__
,
__METHOD__
, and __FUNCTION__
.
The values are returned exactly as they're declared (case-sensitive).
FALSE
when an invalid IP
address is passed as argument to the function, and no longer
-1
.
<?php
var_dump(strrpos('ABCDEF','DEF')); //int(3)
var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>
<?php
class test { }
$t = new test();
var_dump(empty($t)); // echo bool(false)
if ($t) {
// Will be executed
}
?>
<?php
//works with no errors:
$a = new a();
class a {
}
//throws an error:
$a = new b();
interface c{
}
class b implements c {
}
?>