2. What is New
Object model
Assignments and Object Copying
Constructors
Standard PHP Library (SPL)
New Functions / Extensions
Much More.. .
4. Passed by Reference
All objects are now passed by reference
To copy an object use the clone keyword
Stop using the & operator
http://us.php.net/manual/en/language.oop5.references.php!
5. Class Properties
Constant Static
Per-class basis Can be applied to variables
Accessed by :: operator and methods
No $ symbol to access $this cannot be used within a
The value must be an static method
expression only Static variables are shared
No initialization required between subclasses
No initialization required
http://php.net/manual/en/language.oop5.constants.php! http://php.net/manual/en/language.oop5.static.php!
6. Visibility
Class methods and properties now have visibility
Three levels of visibility
Public
Most visible, anyone can access. Read/Write
Protected
Access by subclasses, parent and itself
Private
Access only by class itself
http://php.net/manual/en/language.oop5.visibility.php!
7.
8. Construct or Destruct
Unified constructor/destructor names
Prefixed by two (2) underscores (__)
__construct()
Method works the same as on PHP4
Backwards Compatible
__destruct()
All references to object are destroyed
Script shutdown phase
To run parents, one must use parent::__construct()
http://php.net/manual/en/language.oop5.constants.php!
9.
10. Abstract Classes
Cannot be initiated
Used as a blue print for other classes to extend
Any class with abstract methods, must be abstract
Subclasses must declare abstract methods from parent
These must be defined with less or equal visibility
http://php.net/manual/en/language.oop5.abstract.php!
11.
12. Interfaces
Used to design APIs
Defines the methods a class should implement
Not a blueprint but a way to standardize an API
A Class can implement any number of them
Unlike extending to only one
All methods must be public
Methods don’t have any content defined
http://php.net/manual/en/language.oop5.interfaces.php!
13. cont... Interfaces
Use implement operator implement in class
Use interface to declare interface
A Class can implement more than one interface
Interfaces can be extended with extend
Implemented interfaces cannot share function names
Interfaces can have constants just like classes
14.
15. Magic Methods
These methods are called “automatically”
These are prefixed by two (2) underscores (__)
__construct, __destruct, __call, __callStatic, __get, __set,
__isset, __unset, __sleep, __wakeup, __toString, __invoke,
__set_state and __clone
http://php.net/manual/en/language.oop5.magic.php!
16. More Magicness
__sleep and __wakeup
Run before Object is serialized/
unserialized
__toString
Run when class is converted to
string
__call and __callStatic
Run when invoking inaccessible
methods
17. Finality
PHP5 introduces the final keyword
Can be applied to methods and classes
For methods -
It prevents subclasses from overriding them
For classes -
States that it is the final class, no subclasses
http://php.net/manual/en/language.oop5.final.php!
19. __autoload()
Used to automatically load PHP files
Runs when PHP encounters an undefined class
Can be useful instead of having many include()’s
The SPL library contains a similar function
http://php.net/manual/en/language.oop5.final.php!
20. Standard PHP Library
Functions to solve problems
Class Implements
Class Parents
Just cool functions
21. About
The SPL library is a collection of interfaces and classes
These are meant to help solve standard problems
http://www.php.net/manual/en/intro.spl.php!
22. Some Functions
class_implements( mixed $class )
Returns all interfaces implemented by a class
class_parents( mixed $class )
Returns all parent classes for a given class
spl_autoload_register([ callback $autoload_function ])
Better than using __autload()
Can register multiple functions to load class files
http://www.php.net/manual/en/ref.spl.php!
23. ArrayObject
Turns an array into an object
This class contains helpful functions such as:
Counting elements
Finding a key
Get key
Set key
Unset key
http://www.php.net/manual/en/class.arrayobject.php!
24. SplFileInfo
OO Class to get information about an individual file
Some included functions are:
Last access time
Base name
Target of a link
Get owner/permissions
Size/File type
If directory
isReadable/isWritable
http://www.php.net/manual/en/class.splfileinfo.php!
25. Other Features
Misc.
Type Hinting
Exceptions
foreach By-Reference
New Functions
New Extensions
26. Type Hinting
Enforce the type of variable passed to functions
Functions and Class functions
Can only be used for classes or arrays (at this time)
No other scalar types (integer, string)
If null is the default parameter value
It is allowed as an argument
http://www.php.net/manual/en/class.splfileinfo.php!
27.
28. Exceptions
Exceptions are just errors
Used to catch exceptions
Gain control over error notices
Use when executing “risky” code
They work similar to other programming languages
Each try{} must have a corresponding catch{} block
http://php.net/manual/en/language.exceptions.php!
29.
30. E_strict
In PHP5 a new error level is introduced E_STRICT
It is not included within E_ALL
Value 2048
To call it: error_reporting( E_ALL ^ E_STRICT );
Triggered when using deprecated code
Useful in development environment
http://us3.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting!
31. foreach by-reference
Reference to value while looping through foreach
Careful:
After foreach is done reference won’t go away
Use unset to remove reference
http://us2.php.net/foreach!
34. New Extensions
Simple XML
Processing of XML (pretty simple)
DOM and XSL
Building XML/XSL files
Hash Functions
Library of hash functions (more than md5 or sha1)
35. Compatibility
array_merge()
Gives error if one of the parameter is not an array
array_merget( (array) $var1, (array) $var2 );
To copy objects you must use the clone keyword
get_class(), get_parent_class(), get_class_methods()
Are not case sensitive
An object with no properties is no longer considered “empty”
strpos() and strripos()
Now use the entire string as a needle