SlideShare uma empresa Scribd logo
1 de 57
My Very First…Model View Controller Web Applicationwith the Zend Framework New York CityZF Meetup
Part One Why use an MVC framework? Inversion of Control makes life simpler. Setting up an environment for use with ZF. Creating a project with ZF tool. ZF application basics.
Why Use an MVC Framework? Helps to stay DRY (don’t repeat others either) Spend time on unique application problems, not plumbing problems. Take advantage of combined years of experience. Things you think of down the line already taken care of. Flexible, reliable, well tested code base: Unit tested. Community tested.
Inversion of Control Framework != Library A library is a set of tools. A framework gives you a working structure to customize by hooking into key points. The framework invokes your code at the appropriate time (control is inverted).
Zend Framework MVC Framework + Components Library + CMD Tool  MVC architecture. Useful components for everyday tasks: ACL + Auth Forms: validation, filtering built in Web services: Amazon, Twitter, etc Command line tool eases set-up tasks.
Zend Framework Use at will: Components can be integrated into an app done with Lithium, Symfony, Wordpress, Drupal, etc. Large user community 500 contributors, 10 million downloads Corporate backing (+/-) Test driven development
           Background Info MVC frameworks typicallyare made of: Controllers and action methods 1 Action Method ≈ 1 Page Controllers group action methods View scripts Control look and feel of app Models Application data
           Simple Example(find the code for a URL) In a ZF app, this URL: Maps to the “about action method” of the “index controller”
Simple Example The “index controller” is a class. The “about action method” is a method of the IndexController class.
Simple Example About action is called by the framework and renders the “about view script”.
        Simple Example The results of the view script are output.
Simple Example: Summary Framework maps URL to an action method. You write one method and one view script Framework calls your code when it’s needed Framework presents view script to user
     Real Project: Tasks Want an application to create, manage, and view my tasks. Users should be able to register. Users should be able to create, edit, and delete individual tasks. Users should be able to view a list of their tasks, or any single task.
    Tasks: So we’ll need… A user component. A registration component. A tasks component. Security to make sure:  Only members can see other users Only members can do task stuff Only the owner of a task can do stuff to her tasks etc
Set Up 1: ZF Command Line Tool Download current version of ZF Folder will contain Zend library, and bin: Windows: Add bin to your PATH *nix: Create symbolic link Even better, use PEAR installer!
Set Up 2: Zend library to Include Path Can add in php.ini Can add in application’s index.php file
       Step 1: Create Project Use ZF tool to create project structure. Must “enter” app directory for further tooling.
Step 1: Create Project “public” is the face of your application. Accessible to civilians CSS, Javascript, other asset files go here. index.php is single point of entry. .htaccess automatically created “application” is where most of the app lives. “library” is for app specific libraries. “tests” is for unit tests
Step 1: Create Project zf create project creates an index controller with a default index action and script
Step 2: Modify Index Action Output Want to put something specific to your app on public splash page. Need to: Modify the action method Modify the view script Where are these files in app folder structure?
Step 2: Modify Index Action Output One controller class per file,  View scripts housed in views/scripts Grouped into folder named after “it’s controller”
Step 2: Modify Index Action Output Change views/scripts/index/index.phtmlfrom this…
Step 2: Modify Index Action Output …to this:
Step 3: Variables in View Scripts In ZF, view is an object View object is in charge of rendering scripts View scripts execute inside of view object View scripts have same scope as method of view object In other words, in script $this refers to the view object Controller has reference to view object Controller assigns variable to view object for use in view scripts Assign as property of view object
Step 3: Variables in View Scripts Variables assigned as view object properties in controller:
Step 3: Variables in View Scripts Variables used as members of view object inside of view script:
Step 3: Variables in View Scripts
  Step 4: Create Another Page A Page ≈ An Action Method Create action methods using ZF tool Creates method body in controller and view script. Zf create action actionNamecontrollerItsIn (Note that you have to have created the controller using ZF tool to create an action in it using the tool)
Step 4: Create Another Page Create an about page:
Step 4: Create Another Page Action body and view script magically created!
Step 4: Create Another Page Modify view script as desired and presto!
Steps 5 – 8: Users Want to be able to register users Want to be able to store user data Want to let users manage their data Want to make sure only users can access user data
Steps 5 – 8: Users So we’ll need: A way to interact with a user database table (Zend_Db) A way for users to interact with information (Zend_Form) User pages (UserController) Log in and access control (Zend_Acl + Zend_Auth)
Steps 5 – 8: Users Start with a Users table like so:
Step 5: Create UserController We’ll put user related actions in the UserController. Use ZF tool to create the controller and actions Zf create controller controllerName Will create controller class file, and view scripts directory
Step 5: Create UserController
Step 5: Create UserController
  Step 6: Using a Database ZF has adapter based access toDB tables. Most major DB server’s supported MySQL, Postgre, Oracle, MSSQL, IBM DB2… Query against adapter  easier to make changes to backend without ripple effects in consumer code. Not Zend_Model
Step 6: Using a Database 2 or 3 Steps: Create DB adapter Optionally, create table Use it
Step 6: Using a Database We’ll use simple version (query against DB) For now, DB config in controller init method Think of init as constructor hook
Step 6: Using a Database Method to insert is…insert!
Step 6: Using a Database Method to update is…update!
Step 6: Using a Database Method to delete is…delete!
Step 6: Using a Database Various methods for SELECT statements: fetchAll fetchAssoc fetchNum fetchObj
Step 6: Using a Database
Step 6: Using a Database Methods are similar when using Zend_Db_Table Usually configure DB in bootstrap
Step 7: Using Forms Users need to be able to register Use Zend_Form for registration form Forms and form elements in ZF are objects: Add elements to form with addElement Can add validators to elements to ensure data integrity EmailAddressvalidator Integer validator Many more
ZF Tool and Forms
Add Elements to Forms Element name and type required
Create and Display a Form Create in controller, assign to view, use Zend_Form::render() to display.
Handling Form Submission Request variables held in request object Request object accessed in action Use Zend_Controller_Request::isPost to test for form submission Use Zend_Form::isValid() to test data validity Use Zend_Form::persistData() to save changes This is what I do, other ways exist
Handling Form Submission Action controls flow, form controls data
Valid Data Submission
Invalid Data Submission
Zend Form Add and configure form elements Use Zend_Form::isValid() to test for data validity Use Zend_Form::persistData() to commit changes Note that step 3 can be done other ways
Step 8 (next time): Access Control Zend_Acl Roles, Resources, Privileges Zend_Auth Action helpers Basics Use with access control View helpers Basics Common helpers
New York City area Zend Framework Meetup http://www.meetup.com/ZendFramework-NYCmetro/ Affiliated with http://www.nyphp.org/ Thanks for attending “Your First Zend Framework Project”  presented on Feb. 22, 2011 by Isaac Foster http://www.linkedin.com/in/isaaczfosterisaac.z.foster@gmail.com Alan Seiden http://www.alanseiden.comalan@alanseiden.comTwitter: @alanseiden Sign up to hear about all our ZF meetups at http://www.meetup.com/ZendFramework-NYCmetro/

Mais conteúdo relacionado

Mais procurados

Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVCLearnNowOnline
 
Ajax toolkit framework
Ajax toolkit frameworkAjax toolkit framework
Ajax toolkit frameworkSunil Kumar
 
Asp dot-net core problems and fixes
Asp dot-net core problems and fixes Asp dot-net core problems and fixes
Asp dot-net core problems and fixes sonia merchant
 
Getting Started with Zend Framework
Getting Started with Zend FrameworkGetting Started with Zend Framework
Getting Started with Zend FrameworkJuan Antonio
 
Comparing Angular and React JS for SPAs
Comparing Angular and React JS for SPAsComparing Angular and React JS for SPAs
Comparing Angular and React JS for SPAsJennifer Estrada
 
Introduction to JSF
Introduction toJSFIntroduction toJSF
Introduction to JSFSoftServe
 
Enterprise Level Application Architecture with Web APIs using Entity Framewor...
Enterprise Level Application Architecture with Web APIs using Entity Framewor...Enterprise Level Application Architecture with Web APIs using Entity Framewor...
Enterprise Level Application Architecture with Web APIs using Entity Framewor...Akhil Mittal
 
ATAGTR2017 Upgrading a mobile tester's weapons with advanced debugging
ATAGTR2017 Upgrading a mobile tester's weapons with advanced debuggingATAGTR2017 Upgrading a mobile tester's weapons with advanced debugging
ATAGTR2017 Upgrading a mobile tester's weapons with advanced debuggingAgile Testing Alliance
 
Introduction Yii Framework
Introduction Yii FrameworkIntroduction Yii Framework
Introduction Yii FrameworkTuan Nguyen
 
Angular interview questions
Angular interview questionsAngular interview questions
Angular interview questionsGoa App
 
Angular JS, A dive to concepts
Angular JS, A dive to conceptsAngular JS, A dive to concepts
Angular JS, A dive to conceptsAbhishek Sur
 
10 reasons to choose the yii framework
10 reasons to choose the yii framework10 reasons to choose the yii framework
10 reasons to choose the yii frameworkjananya213
 
Get things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGet things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGiuliano Iacobelli
 

Mais procurados (20)

iOS training (intermediate)
iOS training (intermediate)iOS training (intermediate)
iOS training (intermediate)
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVC
 
Introduction To CodeIgniter
Introduction To CodeIgniterIntroduction To CodeIgniter
Introduction To CodeIgniter
 
Ajax toolkit framework
Ajax toolkit frameworkAjax toolkit framework
Ajax toolkit framework
 
MVC Training Part 2
MVC Training Part 2MVC Training Part 2
MVC Training Part 2
 
Box Authentication Types
Box Authentication TypesBox Authentication Types
Box Authentication Types
 
From mvc to viper
From mvc to viperFrom mvc to viper
From mvc to viper
 
Asp dot-net core problems and fixes
Asp dot-net core problems and fixes Asp dot-net core problems and fixes
Asp dot-net core problems and fixes
 
Getting Started with Zend Framework
Getting Started with Zend FrameworkGetting Started with Zend Framework
Getting Started with Zend Framework
 
Comparing Angular and React JS for SPAs
Comparing Angular and React JS for SPAsComparing Angular and React JS for SPAs
Comparing Angular and React JS for SPAs
 
Introduction to JSF
Introduction toJSFIntroduction toJSF
Introduction to JSF
 
Les24
Les24Les24
Les24
 
Enterprise Level Application Architecture with Web APIs using Entity Framewor...
Enterprise Level Application Architecture with Web APIs using Entity Framewor...Enterprise Level Application Architecture with Web APIs using Entity Framewor...
Enterprise Level Application Architecture with Web APIs using Entity Framewor...
 
ATAGTR2017 Upgrading a mobile tester's weapons with advanced debugging
ATAGTR2017 Upgrading a mobile tester's weapons with advanced debuggingATAGTR2017 Upgrading a mobile tester's weapons with advanced debugging
ATAGTR2017 Upgrading a mobile tester's weapons with advanced debugging
 
Introduction Yii Framework
Introduction Yii FrameworkIntroduction Yii Framework
Introduction Yii Framework
 
Angular interview questions
Angular interview questionsAngular interview questions
Angular interview questions
 
Angular JS, A dive to concepts
Angular JS, A dive to conceptsAngular JS, A dive to concepts
Angular JS, A dive to concepts
 
10 reasons to choose the yii framework
10 reasons to choose the yii framework10 reasons to choose the yii framework
10 reasons to choose the yii framework
 
Lab4 - android
Lab4 - androidLab4 - android
Lab4 - android
 
Get things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplicationsGet things done with Yii - quickly build webapplications
Get things done with Yii - quickly build webapplications
 

Semelhante a My Very First Zf App Part One

Hnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
Hnd201 Building Ibm Lotus Domino Applications With Ajax PluginsHnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
Hnd201 Building Ibm Lotus Domino Applications With Ajax Pluginsdominion
 
AspMVC4 start101
AspMVC4 start101AspMVC4 start101
AspMVC4 start101Rich Helton
 
Introduction to Zend Framework
Introduction to Zend FrameworkIntroduction to Zend Framework
Introduction to Zend FrameworkJamie Hurst
 
A report on mvc using the information
A report on mvc using the informationA report on mvc using the information
A report on mvc using the informationToushik Paul
 
Metamorphosis from Forms to Java: A technical lead's perspective, part II
Metamorphosis from Forms to Java:  A technical lead's perspective, part IIMetamorphosis from Forms to Java:  A technical lead's perspective, part II
Metamorphosis from Forms to Java: A technical lead's perspective, part IIMichael Fons
 
visual basic for the beginner
visual basic for the beginnervisual basic for the beginner
visual basic for the beginnerSalim M
 
MVC Frameworks for building PHP Web Applications
MVC Frameworks for building PHP Web ApplicationsMVC Frameworks for building PHP Web Applications
MVC Frameworks for building PHP Web ApplicationsVforce Infotech
 
Code camp 2011 Getting Started with IOS, Una Daly
Code camp 2011 Getting Started with IOS, Una DalyCode camp 2011 Getting Started with IOS, Una Daly
Code camp 2011 Getting Started with IOS, Una DalyUna Daly
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfoliocummings49
 
Build Business Web Applications with PHPOpenbiz Framework and Cubi Platform
Build Business Web Applications with PHPOpenbiz Framework and Cubi PlatformBuild Business Web Applications with PHPOpenbiz Framework and Cubi Platform
Build Business Web Applications with PHPOpenbiz Framework and Cubi PlatformAgus Suhartono
 

Semelhante a My Very First Zf App Part One (20)

Hnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
Hnd201 Building Ibm Lotus Domino Applications With Ajax PluginsHnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
Hnd201 Building Ibm Lotus Domino Applications With Ajax Plugins
 
Yii php framework_honey
Yii php framework_honeyYii php framework_honey
Yii php framework_honey
 
Vb basics
Vb basicsVb basics
Vb basics
 
AspMVC4 start101
AspMVC4 start101AspMVC4 start101
AspMVC4 start101
 
Introduction to Zend Framework
Introduction to Zend FrameworkIntroduction to Zend Framework
Introduction to Zend Framework
 
Mvc summary
Mvc summaryMvc summary
Mvc summary
 
A report on mvc using the information
A report on mvc using the informationA report on mvc using the information
A report on mvc using the information
 
Metamorphosis from Forms to Java: A technical lead's perspective, part II
Metamorphosis from Forms to Java:  A technical lead's perspective, part IIMetamorphosis from Forms to Java:  A technical lead's perspective, part II
Metamorphosis from Forms to Java: A technical lead's perspective, part II
 
visual basic for the beginner
visual basic for the beginnervisual basic for the beginner
visual basic for the beginner
 
unit 4.docx
unit 4.docxunit 4.docx
unit 4.docx
 
Codeigniter
CodeigniterCodeigniter
Codeigniter
 
Cognos Software Development Kit
Cognos Software Development KitCognos Software Development Kit
Cognos Software Development Kit
 
MVC Frameworks for building PHP Web Applications
MVC Frameworks for building PHP Web ApplicationsMVC Frameworks for building PHP Web Applications
MVC Frameworks for building PHP Web Applications
 
Code camp 2011 Getting Started with IOS, Una Daly
Code camp 2011 Getting Started with IOS, Una DalyCode camp 2011 Getting Started with IOS, Una Daly
Code camp 2011 Getting Started with IOS, Una Daly
 
Yii framework
Yii frameworkYii framework
Yii framework
 
2007 Zend Con Mvc
2007 Zend Con Mvc2007 Zend Con Mvc
2007 Zend Con Mvc
 
P H P Framework
P H P  FrameworkP H P  Framework
P H P Framework
 
Introduction of Xcode
Introduction of XcodeIntroduction of Xcode
Introduction of Xcode
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfolio
 
Build Business Web Applications with PHPOpenbiz Framework and Cubi Platform
Build Business Web Applications with PHPOpenbiz Framework and Cubi PlatformBuild Business Web Applications with PHPOpenbiz Framework and Cubi Platform
Build Business Web Applications with PHPOpenbiz Framework and Cubi Platform
 

My Very First Zf App Part One

  • 1. My Very First…Model View Controller Web Applicationwith the Zend Framework New York CityZF Meetup
  • 2. Part One Why use an MVC framework? Inversion of Control makes life simpler. Setting up an environment for use with ZF. Creating a project with ZF tool. ZF application basics.
  • 3. Why Use an MVC Framework? Helps to stay DRY (don’t repeat others either) Spend time on unique application problems, not plumbing problems. Take advantage of combined years of experience. Things you think of down the line already taken care of. Flexible, reliable, well tested code base: Unit tested. Community tested.
  • 4. Inversion of Control Framework != Library A library is a set of tools. A framework gives you a working structure to customize by hooking into key points. The framework invokes your code at the appropriate time (control is inverted).
  • 5. Zend Framework MVC Framework + Components Library + CMD Tool MVC architecture. Useful components for everyday tasks: ACL + Auth Forms: validation, filtering built in Web services: Amazon, Twitter, etc Command line tool eases set-up tasks.
  • 6. Zend Framework Use at will: Components can be integrated into an app done with Lithium, Symfony, Wordpress, Drupal, etc. Large user community 500 contributors, 10 million downloads Corporate backing (+/-) Test driven development
  • 7. Background Info MVC frameworks typicallyare made of: Controllers and action methods 1 Action Method ≈ 1 Page Controllers group action methods View scripts Control look and feel of app Models Application data
  • 8. Simple Example(find the code for a URL) In a ZF app, this URL: Maps to the “about action method” of the “index controller”
  • 9. Simple Example The “index controller” is a class. The “about action method” is a method of the IndexController class.
  • 10. Simple Example About action is called by the framework and renders the “about view script”.
  • 11. Simple Example The results of the view script are output.
  • 12. Simple Example: Summary Framework maps URL to an action method. You write one method and one view script Framework calls your code when it’s needed Framework presents view script to user
  • 13. Real Project: Tasks Want an application to create, manage, and view my tasks. Users should be able to register. Users should be able to create, edit, and delete individual tasks. Users should be able to view a list of their tasks, or any single task.
  • 14. Tasks: So we’ll need… A user component. A registration component. A tasks component. Security to make sure: Only members can see other users Only members can do task stuff Only the owner of a task can do stuff to her tasks etc
  • 15. Set Up 1: ZF Command Line Tool Download current version of ZF Folder will contain Zend library, and bin: Windows: Add bin to your PATH *nix: Create symbolic link Even better, use PEAR installer!
  • 16. Set Up 2: Zend library to Include Path Can add in php.ini Can add in application’s index.php file
  • 17. Step 1: Create Project Use ZF tool to create project structure. Must “enter” app directory for further tooling.
  • 18. Step 1: Create Project “public” is the face of your application. Accessible to civilians CSS, Javascript, other asset files go here. index.php is single point of entry. .htaccess automatically created “application” is where most of the app lives. “library” is for app specific libraries. “tests” is for unit tests
  • 19. Step 1: Create Project zf create project creates an index controller with a default index action and script
  • 20. Step 2: Modify Index Action Output Want to put something specific to your app on public splash page. Need to: Modify the action method Modify the view script Where are these files in app folder structure?
  • 21. Step 2: Modify Index Action Output One controller class per file, View scripts housed in views/scripts Grouped into folder named after “it’s controller”
  • 22. Step 2: Modify Index Action Output Change views/scripts/index/index.phtmlfrom this…
  • 23. Step 2: Modify Index Action Output …to this:
  • 24. Step 3: Variables in View Scripts In ZF, view is an object View object is in charge of rendering scripts View scripts execute inside of view object View scripts have same scope as method of view object In other words, in script $this refers to the view object Controller has reference to view object Controller assigns variable to view object for use in view scripts Assign as property of view object
  • 25. Step 3: Variables in View Scripts Variables assigned as view object properties in controller:
  • 26. Step 3: Variables in View Scripts Variables used as members of view object inside of view script:
  • 27. Step 3: Variables in View Scripts
  • 28. Step 4: Create Another Page A Page ≈ An Action Method Create action methods using ZF tool Creates method body in controller and view script. Zf create action actionNamecontrollerItsIn (Note that you have to have created the controller using ZF tool to create an action in it using the tool)
  • 29. Step 4: Create Another Page Create an about page:
  • 30. Step 4: Create Another Page Action body and view script magically created!
  • 31. Step 4: Create Another Page Modify view script as desired and presto!
  • 32. Steps 5 – 8: Users Want to be able to register users Want to be able to store user data Want to let users manage their data Want to make sure only users can access user data
  • 33. Steps 5 – 8: Users So we’ll need: A way to interact with a user database table (Zend_Db) A way for users to interact with information (Zend_Form) User pages (UserController) Log in and access control (Zend_Acl + Zend_Auth)
  • 34. Steps 5 – 8: Users Start with a Users table like so:
  • 35. Step 5: Create UserController We’ll put user related actions in the UserController. Use ZF tool to create the controller and actions Zf create controller controllerName Will create controller class file, and view scripts directory
  • 36. Step 5: Create UserController
  • 37. Step 5: Create UserController
  • 38. Step 6: Using a Database ZF has adapter based access toDB tables. Most major DB server’s supported MySQL, Postgre, Oracle, MSSQL, IBM DB2… Query against adapter  easier to make changes to backend without ripple effects in consumer code. Not Zend_Model
  • 39. Step 6: Using a Database 2 or 3 Steps: Create DB adapter Optionally, create table Use it
  • 40. Step 6: Using a Database We’ll use simple version (query against DB) For now, DB config in controller init method Think of init as constructor hook
  • 41. Step 6: Using a Database Method to insert is…insert!
  • 42. Step 6: Using a Database Method to update is…update!
  • 43. Step 6: Using a Database Method to delete is…delete!
  • 44. Step 6: Using a Database Various methods for SELECT statements: fetchAll fetchAssoc fetchNum fetchObj
  • 45. Step 6: Using a Database
  • 46. Step 6: Using a Database Methods are similar when using Zend_Db_Table Usually configure DB in bootstrap
  • 47. Step 7: Using Forms Users need to be able to register Use Zend_Form for registration form Forms and form elements in ZF are objects: Add elements to form with addElement Can add validators to elements to ensure data integrity EmailAddressvalidator Integer validator Many more
  • 48. ZF Tool and Forms
  • 49. Add Elements to Forms Element name and type required
  • 50. Create and Display a Form Create in controller, assign to view, use Zend_Form::render() to display.
  • 51. Handling Form Submission Request variables held in request object Request object accessed in action Use Zend_Controller_Request::isPost to test for form submission Use Zend_Form::isValid() to test data validity Use Zend_Form::persistData() to save changes This is what I do, other ways exist
  • 52. Handling Form Submission Action controls flow, form controls data
  • 55. Zend Form Add and configure form elements Use Zend_Form::isValid() to test for data validity Use Zend_Form::persistData() to commit changes Note that step 3 can be done other ways
  • 56. Step 8 (next time): Access Control Zend_Acl Roles, Resources, Privileges Zend_Auth Action helpers Basics Use with access control View helpers Basics Common helpers
  • 57. New York City area Zend Framework Meetup http://www.meetup.com/ZendFramework-NYCmetro/ Affiliated with http://www.nyphp.org/ Thanks for attending “Your First Zend Framework Project” presented on Feb. 22, 2011 by Isaac Foster http://www.linkedin.com/in/isaaczfosterisaac.z.foster@gmail.com Alan Seiden http://www.alanseiden.comalan@alanseiden.comTwitter: @alanseiden Sign up to hear about all our ZF meetups at http://www.meetup.com/ZendFramework-NYCmetro/