If you are a beginner PHP, use PHP5 though the versions wont' matter. But if you are an
advanced programmer, consider using PHP5 or the new PHP 6, and code
securely. Always remember there is no more support offered for PHP4. Best thing is you neednot worry!! Reason is by the time you pass the beginner stage, you dont need version specific support from the community :-)
i. XML support
Two extensions and hence the syntax of functions have changed. The XSLT
extension present in PHP4 is not the XSLT extension in PHP 5. XML-DOM
extension in PHP 4 is not the DOM extension in PHP 5.
Don't miss
ChangeLog of PHP5 and
Docs
ii. New reserved keywords
interface, implements, extends, public , private, protected, abstract,
clone, try, catch, throw, final, exception, this and php_user_filter
iii. Destructors
While PHP 4 had constructors, PHP 5 offers a new features: destructors.
Destructors are called when an object is destroyed or all references to
it have been removed. Destructors are implemented in classes by use of
the __destruct function.
The __construct function has also been introduced and takes precedence over the
old-style constructor function. The old style still works, but it is
recommended that __construct is used as it takes higher priority.
iV. Autoloading
Autoloading is a great new feature that provides a way for developers
to make sure all dependencies for a class are in place before using it.
If you attempt to
instantiate a class that has not yet been defined, PHP 5 will call the
__autoload() function, which allows you to make sure all the necessary
class files have been included as a last attempt to load the class
before failing with an error.
iii. strrpos() and strripos() now use the entire string as a needle.
VI. Illegal use of string offsets causes E_ERROR instead of E_WARNING. An example illegal use is: $str = 'abc' unset($str[0]);
VI. array_merge() was changed to accept only arrays. If a non-array variable is
passed, a E_WARNING will be thrown for every such parameter. Be careful because
your code may start emitting E_WARNING out of the blue.
VII. PATH_TRANSLATED server variable is no longer set
implicitly under Apache2 SAPI in contrast to the situation in PHP 4,
where it is set to the same value as
the SCRIPT_FILENAME server variable when it is not populated by Apache.
This change was made to comply with the CGI specification. Please refer
to bug #23610 for further information, and see also the
$_SERVER['PATH_TRANSLATED'] description
in the manual. This issue also affects PHP versions >= 4.3.2.
VIII. The
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.
IX. $_SERVER should be populated with argc and argv if
variables_order includes "S". If you have specifically configured your
system to not create $_SERVER, then of course it shouldn't be there.
The change was to always make argc and argv available in the CLI
version regardless of the variables_order setting. As in, the CLI
version will now always populate the global $argc and $argv variables.
X. An
object with no properties is no longer considered "empty".
XI. In some cases c
lasses must be declared before use. It only happens if some of the new features of PHP 5 (such as interfaces) are used. Otherwise the behaviour is the old.
XII. 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().
XIII. The above listed 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).
XIV. If there are functions defined in the included file, they
can be used in the main file independent if they are before return() or
after. If the file is included twice, PHP 5 issues fatal error because
functions were already declared, while PHP 4 doesn't complain about it.
It is recommended to
use include_once() instead of checking if the file was already included and conditionally return inside the included file.
XV. include_once() and require_once() first normalize the path of included file on Windows so that including A.php and a.php include the file just once.
Ref :
devshed.com &
phpjoint.com