Home Accessibility Courses Diary The Mouth Forum Resources Site Map About Us Contact
Object Oriented Model - a summary of changes from PHP4 to PHP5

What are the differences between the Object Oriented model in PHP5 and PHP4?

Firstly (and the reason the release number jumped) is that assignments copy references in PHP5 (which is regarded as correct OO behaviour) but they duplicate or clone the object in PHP4. This may sound a bit obtuse, but:
* if you duplicate an object and then change one of the copies, you do NOT effect the data refered to by the other name (PHP4 behaviour)
* if you copy by reference (PHP5 behaviour, in effect giving the object a second name) and then change one of the "copies", you effect both as there one and the same.
In effect, it's the difference between letting someone share a piece of paper with you and both writing on it (PHP5), and taking a photocopy to give to someone then each writing on your own sheet (PHP4).

The second major difference is that PHP5 lets you use a whole lot of RESTRICTING keywords in your definitions of classes and methods. You can declare that functions and member variables are:
* private - i.e. only visible inside the class
* protected - i.e. only visible in the class or its subclasses
* final - i.e. cannot be overridden by / in subclasses
And you can declare classes to be
* abstract - i.e. MUST be subclassed with specific extra methods
* to implement an interface - i.e. MUST define certain methods

None of these new keywords adds new capabilities, apart from the capability of restricting, so why are they there? To allow the designer / author of a class to limit the externally available elements leading to a crisper, easier to documuent and maintain API (application programmer interface), in the long term interest of maintainable PHP code in substantial applications. If you want a member to be public, you can still use the var keyword of PHP4, although you're really encouraged to use the public keyword that means the same thing and, you'll note, does NOT restrict.

Thirdly, in PHP5 you can name your constructor method __construct rather than have it as a function with the same name as the class, and you can use a parent:: notation to call up methods in the base class is you wish to. In this way, you no longer need to code the name of the class, nor its relationship to other classes, internally - once again making for easier code modification and use later. PHP5 also has a __destruct method which is run to clean away objects when you're finished with them.

Other additions at PHP 5 to the OO model include
* A static keyword to let you define class / static / unbound members
* An autolaod method called if a class is missing at run time
* An __clone method if you really want to duplicate an object
* An __toString method that lets you define what's printed out when you print or echo an object variable
* Exceptions, Reflection classes, constants, interceptors ....
(written 2007-04-18 07:34:26)

 
Associated topics are indexed under
H108 - Objects in PHP

Back to
Course, right place, right time
Previous and next
or
Horse's mouth home
Forward to
As I came back from Tesco
Some other Articles
Speed Networking - a great evening and how we arranged it
Two by One by Wiltshire
Pointers in C
As I came back from Tesco
Object Oriented Model - a summary of changes from PHP4 to PHP5
Course, right place, right time
Gordon Dodge, R.I.P.
Helsinki - what comes naturally
Turning objects into something you can store - Pickling (Python)
Python decorators - wrapping a method call in extra code
2259 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

© WELL HOUSE CONSULTANTS LTD., 2009: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 707126 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho