Your First 5 PHP Design Patterns           by Aaron Saray
Why trust this guy?                  ● 20 years of                    programming                  ● MKEPUG               ...
Obligatory Slide● Web Development  Manager  ○ Liturgical Publications, Inc.
What were here to do...● Talk about what Design Patterns are    ○ you dont need a comp-sci phd●   Show you where youve see...
What are Patterns?
What are Design Patterns?● Solving the same problem over and over  ○ but the right way  ○ the old guys got it right● Why i...
Software Design has Three Parts● "What"  ○ business and functionality● "How"  ○ which design you choose● "Work"  ○ impleme...
Where do Design Patterns fall?
Design Patterns are the "How"                  They make the "work"                  less sucky.
This isnt new...● Non-PHP Programmers have seen this before  ○ I vaguely remember something from college JAVA● PHP Guys, y...
The Godfathers● Gang of Four  ○ Erich Gamma  ○ Richard Helm  ○ Ralph Johnson  ○ John Vlissides
What Design Patterns are NOT● Not Plug n Play code● You cant blindly copy these● Unproven theory  ○ Design Laws?
So, before we go on...● Solving the same problem over and over  ○ correctly● Language agnostic  ○ but were going to focus ...
Lets do this!
#1 - Singleton Pattern(purists, stop groaning)● The Singleton Design Pattern is used to restrict the       number of times...
#1 continued● Sometimes 1 instance isnt right...  ○ could restrict to 5 instances    ■ pool?● Was someone next to you groa...
Singleton Code
Singleton Code
or... with Abstracts too...There are many ways to skin a cat...wait.. what? Poor cat...
Singleton Code
Singleton Code
#2 - Factory Pattern● The Factory Design Pattern provides a simple interface   to acquire a new instance of an object whil...
Factory Code
Factory Code
#3 - Observer Pattern● The Observer Design pattern facilitates the creation of   objects that watch the state of a targete...
Observer Code
Observer Code
Observer Code
Observer Code
#4 - Decorator Pattern● The Decorator Design Pattern is best suited for altering   or "decorating" portions of an existing...
Decorator Code
Decorator Code
Decorator Code
#5 - Strategy Pattern● The Strategy Design Pattern helps architect an object   that can make use of algorithms in other ob...
Strategy Code
Strategy Code
Strategy Code
Whats next?● Put this into practice● Refactor your code / Plan new code● Learn more design patterns:  ○ GoF: http://saray....
Aaron Saray                         Open Source Developer                         Milwaukee, WIQuestions?                 ...
Your first 5 PHP design patterns - ThatConference 2012
Your first 5 PHP design patterns - ThatConference 2012
Upcoming SlideShare
Loading in...5
×

Your first 5 PHP design patterns - ThatConference 2012

10,252

Published on

Slides from the ThatConference talk I gave on PHP Design patterns. .net and Ruby developers were also there and chimed in. :)

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
10,252
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
60
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Your first 5 PHP design patterns - ThatConference 2012

  1. 1. Your First 5 PHP Design Patterns by Aaron Saray
  2. 2. Why trust this guy? ● 20 years of programming ● MKEPUG ● I wrote the book on this topic ● ... you paid! ;)
  3. 3. Obligatory Slide● Web Development Manager ○ Liturgical Publications, Inc.
  4. 4. What were here to do...● Talk about what Design Patterns are ○ you dont need a comp-sci phd● Show you where youve seen them before● Introduce 5 design patterns ○ real-people-talk descriptions ○ code samples● Q&A
  5. 5. What are Patterns?
  6. 6. What are Design Patterns?● Solving the same problem over and over ○ but the right way ○ the old guys got it right● Why is this important to PHP programmers? ○ PHP is easy to get into ○ We think well save the world, or own it? ■ FB is worth billions - and is PHP right?
  7. 7. Software Design has Three Parts● "What" ○ business and functionality● "How" ○ which design you choose● "Work" ○ implementation - or using "how"
  8. 8. Where do Design Patterns fall?
  9. 9. Design Patterns are the "How" They make the "work" less sucky.
  10. 10. This isnt new...● Non-PHP Programmers have seen this before ○ I vaguely remember something from college JAVA● PHP Guys, youve seen this before ○ PEAR DB ○ Zend Registry ○ Zend URI Factory ○ Doctrine DAO
  11. 11. The Godfathers● Gang of Four ○ Erich Gamma ○ Richard Helm ○ Ralph Johnson ○ John Vlissides
  12. 12. What Design Patterns are NOT● Not Plug n Play code● You cant blindly copy these● Unproven theory ○ Design Laws?
  13. 13. So, before we go on...● Solving the same problem over and over ○ correctly● Language agnostic ○ but were going to focus on PHP● These are not new - youve used them● GoF● Not Copy and Paste
  14. 14. Lets do this!
  15. 15. #1 - Singleton Pattern(purists, stop groaning)● The Singleton Design Pattern is used to restrict the number of times a specific object can be created to a single time by providing access to a shared instance of itself.● Why might you use this? ○ Db ○ Heavy Front Build ○ Static Content
  16. 16. #1 continued● Sometimes 1 instance isnt right... ○ could restrict to 5 instances ■ pool?● Was someone next to you groaning? ○ "A proper registry of objects do away with this pattern. Mrrr mRrrr mrrr! Rabble Rabble!" ○ programmers arent responsible.
  17. 17. Singleton Code
  18. 18. Singleton Code
  19. 19. or... with Abstracts too...There are many ways to skin a cat...wait.. what? Poor cat...
  20. 20. Singleton Code
  21. 21. Singleton Code
  22. 22. #2 - Factory Pattern● The Factory Design Pattern provides a simple interface to acquire a new instance of an object while sheltering the calling code from the steps to determine which base class is actually instantiated.● Why might we use this? ○ Inventory system dealing with types of objects ○ View system requesting objects ○ Youtube vs Vimeo URL
  23. 23. Factory Code
  24. 24. Factory Code
  25. 25. #3 - Observer Pattern● The Observer Design pattern facilitates the creation of objects that watch the state of a targeted functionality that is uncoupled from the core object.● Why might we use this ○ Plugins ○ Dont want to modify shared code ○ Licensing ○ Enable / Disable auxiliary functions
  26. 26. Observer Code
  27. 27. Observer Code
  28. 28. Observer Code
  29. 29. Observer Code
  30. 30. #4 - Decorator Pattern● The Decorator Design Pattern is best suited for altering or "decorating" portions of an existing objects content or functionality without modifying the structure of the original object.● Why might we use this? ○ quick small changes to internal content / values ○ modify user input (filter) ○ pretty output
  31. 31. Decorator Code
  32. 32. Decorator Code
  33. 33. Decorator Code
  34. 34. #5 - Strategy Pattern● The Strategy Design Pattern helps architect an object that can make use of algorithms in other objects on demand in lieu of containing the logic itself.● Why might we use this? ○ reduce code duplication on similar models ○ no re-inventing the wheel ○ quickly add a different process without changing the base object ■ Ex: YouTube changes the URL format
  35. 35. Strategy Code
  36. 36. Strategy Code
  37. 37. Strategy Code
  38. 38. Whats next?● Put this into practice● Refactor your code / Plan new code● Learn more design patterns: ○ GoF: http://saray.me/KqqHm1 ○ Me: http://saray.me/JIP98B
  39. 39. Aaron Saray Open Source Developer Milwaukee, WIQuestions? http://aaronsaray.com● Questions about @aaronsaray PHP Design Patterns? Milwaukee PHP Users Group http://mkepug.org @mkepug
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×