SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
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!

Weitere ähnliche Inhalte

Was ist angesagt? (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
 

Andere mochten auch

Thrillers
ThrillersThrillers
Thrillersmegi93
 
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...UBC eHealth Strategy Office
 
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?UBC eHealth Strategy Office
 
Chairman maotemplate
Chairman maotemplateChairman maotemplate
Chairman maotemplatebrycep711
 
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 collaborationUBC eHealth Strategy Office
 
Dream trip project
Dream trip projectDream trip project
Dream trip projectbrycep711
 
Joomla 1.7 development
Joomla 1.7 developmentJoomla 1.7 development
Joomla 1.7 developmentRafael Corral
 
Leveraging Mobile Technologies for Mental Health
Leveraging Mobile Technologies for Mental HealthLeveraging Mobile Technologies for Mental Health
Leveraging Mobile Technologies for Mental HealthUBC eHealth Strategy Office
 
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 2012UBC eHealth Strategy Office
 
Green marketing (r)evolution
Green marketing (r)evolutionGreen marketing (r)evolution
Green marketing (r)evolutionGiuseppe Storelli
 

Andere mochten auch (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
 

Ähnlich wie PHP 5

Object oreinted php | OOPs
Object oreinted php | OOPsObject oreinted php | OOPs
Object oreinted php | OOPsRavi Bhadauria
 
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 csjaved75
 
PHP7 - A look at the future
PHP7 - A look at the futurePHP7 - A look at the future
PHP7 - A look at the futureRadu Murzea
 
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 futureRadu Murzea
 
Spl in the wild - zendcon2012
Spl in the wild - zendcon2012Spl in the wild - zendcon2012
Spl in the wild - zendcon2012Elizabeth Smith
 
Using spl tools in your code
Using spl tools in your codeUsing spl tools in your code
Using spl tools in your codeElizabeth Smith
 
Lecture-10_PHP-OOP.pptx
Lecture-10_PHP-OOP.pptxLecture-10_PHP-OOP.pptx
Lecture-10_PHP-OOP.pptxShaownRoy1
 
Introduction to PHP OOP
Introduction to PHP OOPIntroduction to PHP OOP
Introduction to PHP OOPfakhrul hasan
 
Oops concepts in php
Oops concepts in phpOops concepts in php
Oops concepts in phpCPD INDIA
 
Oops in PHP By Nyros Developer
Oops in PHP By Nyros DeveloperOops in PHP By Nyros Developer
Oops in PHP By Nyros DeveloperNyros Technologies
 
Java questions for interview
Java questions for interviewJava questions for interview
Java questions for interviewKuntal Bhowmick
 
Embrace dynamic PHP
Embrace dynamic PHPEmbrace dynamic PHP
Embrace dynamic PHPPaul Houle
 

Ähnlich wie 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
 
Test Presentation
Test PresentationTest Presentation
Test Presentation
 
SQL Joins
SQL JoinsSQL Joins
SQL Joins
 
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
 

Kürzlich hochgeladen

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Kürzlich hochgeladen (20)

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

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!