Differences Between PHP 4 and 5

Some of the questions in the interview test your understanding of how PHP 5 differs from previous versions. As such, it’s a good idea to be fully aware of at least the major changes that have occurred between the two versions. Almost all the information contained in this appendix has already been covered in the preceding chapters; therefore, we present it here mostly for the sake of convenience, and we do not dwell much on explanations—for more information on any particular topic, you can refer back to the appropriate section of this book, or to the PHP manual.
Language Features
• PHP 5 allows limited type hinting. This allows you to specify that the parameter to a function or class method can only be of a specific class (or one of its subclasses), or an array. However, you may not specify any other scalar types.

• The foreach construct now supports by-reference declaration of the value element.

• A number of new functions, particularly for string and arraymanipulation, has
also been added to the core platform.

Objects

• For all intents and purposes, all objects in PHP 5 are passed by reference.This
means that assigning an object to a variable will not create a copy of the former,
but simply creates another reference to it.

• Constants, aswell as staticmethods and properties, can nowbe definedwithin
the scope of a class.

• Class methods and properties now feature visibility, and can be declared as
public, private or protected. Classes and methods can also be declared as
final to prevent further inheritance.

• Since all objects are assigned by reference, you now need a specialized mechanism
to copy objects. This is provided by the clone construct and the __clone() magic method.
• PHP 5 features unified constructors and destructors—all constructors should
now be named __construct(), and the new __destruct() magic method has been added for object destruction.

• With the addition of interfaces and abstract classes, PHP developers now have
far greater control over how they implement their object-oriented code. Interfaces
can be used to define common APIs, while abstract classes provide models for class implementations that follow a specific blueprint.

• Class definitions can now be loaded on demand by using the __autoload()function.

MagicMethods

A multitude of new “magic” methods has been introduced in PHP 5:

• __get() and __set() are called when accessing or assigning an undefined object
property, while __call() is executed when calling a non-existent method of a class.

• __isset() is called when passing an undefined property to the isset()construct.

• __unset() is called when passing an undefined property to unset().

• __toString() is called when trying to directly echo or print() an object.

• __set_state() is inserted dynamically by var_export() to allow for reinitialization
on execution of var_export()’s output.

Selected New Extensions

• SimpleXML allows easy access to XML data using object and array notation.

• PHP 5 also introduces a DOMXML, DOMXSL and Sablotron replacement in the formof the libxml2-based DOM and XSL extensions.

• The PHP Data Objects (PDO) extension provides a unified database access extension
that allows access to many different types of database systems by using a common interface. PDO is not an abstraction layer—except for prepared queries, it does nothing to abstract the actual database code (SQL), itself.

• The hash extension is a new replacement for the GPLed libmhash; it was added
to the PHP core starting with version 5.1.2. It can produce hashes using many
algorithms, including the familiarMD5and SHA1, aswell as some more secure (albeit slower) algorithms, such as snefru.

• The Standard PHP Library (SPL) provides numerous interfaces that enhance
the way classes interact with the PHP language, including the new Iterator interfaces.

• The new Reflection extension allows for runtime introspection of executing
PHP code.

ErrorManagement

• Classes now support exceptions; the new set_exception_handler() function
allows you to define a script-wide exception handler.

• The E_STRICT error reporting level has been added to the language to emit notices
when legacy or deprecated code is encountered.

Source : Zend PHP 5 Certification Study Guide

0 comments: