PHP & MVC

22,944 views

Published on

Published in: Technology, Education
5 Comments
18 Likes
Statistics
Notes
  • @rhollister I think they use template engine instead of php
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Very nice presentation on MVC and how it applies to web applications. One issue I have with it though is the idea (on slide 14) that the views are 'usuall not PHP files'. I would agree in theory because the majority of the view files should be straight HTML, BUT they would need to be PHP files since they have to parse the data arrays and, as you say on slide 15, views can call helper functions. In order to parse data arrays an call helper functions wouldn't the file have to be a .php?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Nice, but the dark background make it hard to read.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • nice one
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Great intro to mvc
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
22,944
On SlideShare
0
From Embeds
0
Number of Embeds
162
Actions
Shares
0
Downloads
1,034
Comments
5
Likes
18
Embeds 0
No embeds

No notes for slide

PHP & MVC

  1. Daniel Cousineau & Chris Weldon Bar Camp Texas 2008 PHP AND MVC
  2. First Things First  http://www.google.com/search?hl=en&q=mvc  Google is wonderful, learn how to use it.  Or Yahoo  There are 6,203,493* search engines, use one  http://www.toosweettobesour.com/  Slides if anyone wants ‘em  http://www.chrisweldon.net/ * Possibly incorrect
  3. MVC Is…  Model, View, Controller  Object Oriented  Is communication between Model, View, and Controller Objects  Software Engineering  Organization  RAD  Code reuse!
  4. History
  5. MVC Is Not New!  Smalltalk-80 (circa 1980)  MVC first discussed in 1979 by Trygve Mikkjel Heyerdahl Reenskaug  MFC (Document/View)  Java’s Swing  QT4 (KDE)  Apple’s Cocoa (Core Data)  Notice a trend?  MVC is perfectly suited for GUI development…
  6. MVC And The Web  Made popular by Ruby on Rails  A good number of PHP MVC frameworks are Rails inspired  Wikipedia currently lists about 17 PHP MVC frameworks  CakePHP  Symfony  Code Igniter  Zend Framework  Make your own (I did!)
  7. Define MVC Model – View – Controller
  8. Model  Wikipedia:  “The domain-specific representation of the information that the application operates.”  Data Storage/Access  Often Data source backed  MySQL, MSSQL, Web Service, it doesn’t matter…  Abstraction, Abstraction, Abstraction!
  9. View  Wikipedia:  “Renders the model into a form suitable for interaction, typically a user interface element. Multiple views can exist for a single model for different purposes.”  HTML Templates  All formatting related code belongs here  A Smarty object is a good example  Any template engine works, however…  Abstraction, Abstraction, Abstraction!
  10. Controller  Wikipedia:  “Processes and responds to events, typically user actions, and may invoke changes on the model.”  A BIG DEAL  Process user inputs, communicate with Models and Views  The Go-Between  Much of the application’s core logic  Utilize the abstraction of before!  Invoke model, assign values to views
  11. Putting It Together… http://ash-mvc.org/website/framework/framework.html
  12. As A Framework
  13. Common Traits  index.php  Parses the URL  Often mod_rewrite used:  /controller/method/arg0/value0/arg1/…/valuen  Initializes proper controller  Executes correct method  Facilitates communication from controller to view  Signals view to render
  14. Directory Structure  Outside of web root. More secure! (generally)  config/  controllers/  models/  views/  Usually not PHP files  includes/  Any extra libraries, e.g. PHPMailer  framework/  Framework system files (do not have to reside in application)
  15. Helpers and Plug-ins  Usually common functions used by Views  E.g. format_phone(), create_calendar(), etc.  Some loaded through index.php, some loaded specifically by controller  Do not allow direct manipulation of models or controllers  Any code requiring access to models should be in the controller, not view
  16. Other Utilities…  Dispatcher classes  Abstract the location of files  Abstract creation of links/connections  Caching classes  Cache Templates? Output? SQL Queries? Opcode  Caching individual Templates poses a special problem  Will dynamism of framework affect caching?
  17. Why MVC?  Good architectural design  Code is organized and structure  Code structure lends itself to an easy to understand directory structure  Easy code maintenance  Because of abstraction, better strategic positioning of code will minimize the hunt for places to change  Easy to extend and grow  Modify parent classes, drop in new controller, etc.
  18. Sites Using PHP MVC Frameworks  CakePHP  Mozilla Addons  The Onion’s Online Store  Symfony  TED.com  Yahoo! Bookmarks  Pretty much everyone.
  19. The Cake Was NOT a Lie!

×