SlideShare una empresa de Scribd logo
1 de 38
Descargar para leer sin conexión
PHP Foundations
Rafael Corral, Lead Developer 'corePHP'
                       CMS Expo 2011
What is New


  Object model
  Assignments and Object Copying
  Constructors
  Standard PHP Library (SPL)
  New Functions / Extensions
  Much More.. .
Object Model


  Completely rewritten
  Reference
  Visibility
  OO Classes
  Constants
  Magicness
  __autoload
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!
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!
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!
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!
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!
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!
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
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!
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
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!
Finality
__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!
Standard PHP Library



  Functions to solve problems
  Class Implements
  Class Parents

      Just cool functions
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!
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!
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!
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!
Other Features
Misc.


    Type Hinting
    Exceptions
    foreach By-Reference
    New Functions
    New Extensions
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!
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!
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!
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!
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...
                    http://php.net/manual/en/migration5.functions.php!
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)
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
Let go of PHP4 and start developing in PHP5
Questions?
Thank You!
Rafael Corral!
Email: rafael@corephp.com!
Skype: rafa.corral!

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Java se 8 fundamentals
Java se 8 fundamentalsJava se 8 fundamentals
Java se 8 fundamentals
 
Java Basics
Java BasicsJava Basics
Java Basics
 
OCA Java SE 8 Exam Chapter 1 Java Building Blocks
OCA Java SE 8 Exam Chapter 1 Java Building BlocksOCA Java SE 8 Exam Chapter 1 Java Building Blocks
OCA Java SE 8 Exam Chapter 1 Java Building Blocks
 
Java Tutorial
Java TutorialJava Tutorial
Java Tutorial
 
Type Annotations in Java 8
Type Annotations in Java 8 Type Annotations in Java 8
Type Annotations in Java 8
 
Java Annotations
Java AnnotationsJava Annotations
Java Annotations
 
Java 8 Features
Java 8 FeaturesJava 8 Features
Java 8 Features
 
java 8 new features
java 8 new features java 8 new features
java 8 new features
 
Functional programming principles and Java 8
Functional programming principles and Java 8Functional programming principles and Java 8
Functional programming principles and Java 8
 
Java SE 8 library design
Java SE 8 library designJava SE 8 library design
Java SE 8 library design
 
Insight into java 1.8, OOP VS FP
Insight into java 1.8, OOP VS FPInsight into java 1.8, OOP VS FP
Insight into java 1.8, OOP VS FP
 
Scala tutorial
Scala tutorialScala tutorial
Scala tutorial
 
OCA Java SE 8 Exam Chapter 2 Operators & Statements
OCA Java SE 8 Exam Chapter 2 Operators & StatementsOCA Java SE 8 Exam Chapter 2 Operators & Statements
OCA Java SE 8 Exam Chapter 2 Operators & Statements
 
packages and interfaces
packages and interfacespackages and interfaces
packages and interfaces
 
The Art of Metaprogramming in Java
The Art of Metaprogramming in Java  The Art of Metaprogramming in Java
The Art of Metaprogramming in Java
 
Java reflection
Java reflectionJava reflection
Java reflection
 
JAVA BASICS
JAVA BASICSJAVA BASICS
JAVA BASICS
 
Java tutorial PPT
Java tutorial PPTJava tutorial PPT
Java tutorial PPT
 
Scala’s implicits
Scala’s implicitsScala’s implicits
Scala’s implicits
 

Destacado

Chairman maotemplate
Chairman maotemplateChairman maotemplate
Chairman maotemplate
brycep711
 
Dream trip project
Dream trip projectDream trip project
Dream trip project
brycep711
 
Joomla 1.7 development
Joomla 1.7 developmentJoomla 1.7 development
Joomla 1.7 development
Rafael Corral
 

Destacado (15)

Thrillers
ThrillersThrillers
Thrillers
 
Developing social media guidelines for education, training and change managem...
Developing social media guidelines for education, training and change managem...Developing social media guidelines for education, training and change managem...
Developing social media guidelines for education, training and change managem...
 
Speed!
Speed!Speed!
Speed!
 
Online Risk Assessment for the General Public
Online Risk Assessment for the General Public Online Risk Assessment for the General Public
Online Risk Assessment for the General Public
 
Remote Hands-On "YouTube" Mediated Education: What is the RHYME project?
Remote Hands-On "YouTube" Mediated Education: What is the RHYME project?Remote Hands-On "YouTube" Mediated Education: What is the RHYME project?
Remote Hands-On "YouTube" Mediated Education: What is the RHYME project?
 
2D barcodes (QR codes) and their applications
2D barcodes (QR codes) and their applications2D barcodes (QR codes) and their applications
2D barcodes (QR codes) and their applications
 
Chairman maotemplate
Chairman maotemplateChairman maotemplate
Chairman maotemplate
 
TEKTIC: An overview of a Canadian university eHealth research collaboration
TEKTIC: An overview of a Canadian university eHealth research collaborationTEKTIC: An overview of a Canadian university eHealth research collaboration
TEKTIC: An overview of a Canadian university eHealth research collaboration
 
Dream trip project
Dream trip projectDream trip project
Dream trip project
 
Media evaluation
Media evaluationMedia evaluation
Media evaluation
 
Joomla 1.7 development
Joomla 1.7 developmentJoomla 1.7 development
Joomla 1.7 development
 
Leveraging Mobile Technologies for Mental Health
Leveraging Mobile Technologies for Mental HealthLeveraging Mobile Technologies for Mental Health
Leveraging Mobile Technologies for Mental Health
 
Health care, startups and technology culture at #sxsw 2012
Health care, startups and technology culture at #sxsw 2012Health care, startups and technology culture at #sxsw 2012
Health care, startups and technology culture at #sxsw 2012
 
Green marketing (r)evolution
Green marketing (r)evolutionGreen marketing (r)evolution
Green marketing (r)evolution
 
Green Marketing Revolution
Green Marketing RevolutionGreen Marketing Revolution
Green Marketing Revolution
 

Similar a PHP 5

Spl in the wild - zendcon2012
Spl in the wild - zendcon2012Spl in the wild - zendcon2012
Spl in the wild - zendcon2012
Elizabeth Smith
 

Similar a PHP 5 (20)

Object oreinted php | OOPs
Object oreinted php | OOPsObject oreinted php | OOPs
Object oreinted php | OOPs
 
UNIT-IV WT web technology for 1st year cs
UNIT-IV WT web technology for 1st year csUNIT-IV WT web technology for 1st year cs
UNIT-IV WT web technology for 1st year cs
 
PHP7 - A look at the future
PHP7 - A look at the futurePHP7 - A look at the future
PHP7 - A look at the future
 
PHP 7 - A look at the future
PHP 7 - A look at the futurePHP 7 - A look at the future
PHP 7 - A look at the future
 
Spl in the wild - zendcon2012
Spl in the wild - zendcon2012Spl in the wild - zendcon2012
Spl in the wild - zendcon2012
 
Oopsinphp
OopsinphpOopsinphp
Oopsinphp
 
Using spl tools in your code
Using spl tools in your codeUsing spl tools in your code
Using spl tools in your code
 
Lecture-10_PHP-OOP.pptx
Lecture-10_PHP-OOP.pptxLecture-10_PHP-OOP.pptx
Lecture-10_PHP-OOP.pptx
 
Introduction to PHP OOP
Introduction to PHP OOPIntroduction to PHP OOP
Introduction to PHP OOP
 
Spl in the wild
Spl in the wildSpl in the wild
Spl in the wild
 
Oops concepts in php
Oops concepts in phpOops concepts in php
Oops concepts in php
 
Oops in PHP By Nyros Developer
Oops in PHP By Nyros DeveloperOops in PHP By Nyros Developer
Oops in PHP By Nyros Developer
 
SQL Joins
SQL JoinsSQL Joins
SQL Joins
 
Test Presentation
Test PresentationTest Presentation
Test Presentation
 
SQL Joins
SQL JoinsSQL Joins
SQL Joins
 
Java questions for interview
Java questions for interviewJava questions for interview
Java questions for interview
 
C# interview
C# interviewC# interview
C# interview
 
Embrace dynamic PHP
Embrace dynamic PHPEmbrace dynamic PHP
Embrace dynamic PHP
 
14274730 (1).ppt
14274730 (1).ppt14274730 (1).ppt
14274730 (1).ppt
 
Oop's in php
Oop's in php Oop's in php
Oop's in php
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

PHP 5

  • 1. PHP Foundations Rafael Corral, Lead Developer 'corePHP' CMS Expo 2011
  • 2. What is New   Object model   Assignments and Object Copying   Constructors   Standard PHP Library (SPL)   New Functions / Extensions   Much More.. .
  • 3. Object Model   Completely rewritten   Reference   Visibility   OO Classes   Constants   Magicness   __autoload
  • 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!
  • 32.
  • 33. 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... http://php.net/manual/en/migration5.functions.php!
  • 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
  • 36. Let go of PHP4 and start developing in PHP5
  • 38. Thank You! Rafael Corral! Email: rafael@corephp.com! Skype: rafa.corral!