Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.



Published on

Presentation explains the features that php5 has to offer.

Published in: Technology
  • Be the first to comment


  1. 1. PHP FoundationsRafael Corral, Lead Developer corePHP CMS Expo 2011
  2. 2. What is New  Object model  Assignments and Object Copying  Constructors  Standard PHP Library (SPL)  New Functions / Extensions  Much More.. .
  3. 3. Object Model  Completely rewritten  Reference  Visibility  OO Classes  Constants  Magicness  __autoload
  4. 4. Passed by Reference  All objects are now passed by reference  To copy an object use the clone keyword  Stop using the & operator!
  5. 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!!
  6. 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!
  7. 7. 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()!
  8. 8. 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!
  9. 9. 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!
  10. 10. 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
  11. 11. 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!
  12. 12. 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
  13. 13. 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!
  14. 14. Finality
  15. 15. __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!
  16. 16. Standard PHP Library  Functions to solve problems  Class Implements  Class Parents Just cool functions
  17. 17. About  The SPL library is a collection of interfaces and classes  These are meant to help solve standard problems!
  18. 18. 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!
  19. 19. 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!
  20. 20. 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!
  21. 21. Other FeaturesMisc.  Type Hinting  Exceptions  foreach By-Reference  New Functions  New Extensions
  22. 22. 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!
  23. 23. 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!
  24. 24. 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!
  25. 25. 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!
  26. 26. New Functions  array_combine()  array_walk_recursive()  time_nanosleep()  str_split()  strpbrk()  substr_compare()  curl_copy_handle()  file_put_contents()  get_headers()  headers_list()  http_build_query()  php_strip_whitespace()  scandir()  a lot more...!
  27. 27. 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)
  28. 28. 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
  29. 29. Let go of PHP4 and start developing in PHP5
  30. 30. Questions?
  31. 31. Thank You!Rafael Corral!Email:!Skype: rafa.corral!