SlideShare a Scribd company logo
Zend Framework MVC Quick Start Matthew Weier O'Phinney PHP Developer Zend Technologies Zend Framework provides rich and flexible MVC components built using the object-oriented features of PHP 5.
Topics Overview Zend Framework Overview What is MVC? Zend_Controller: The 'C' in MVC Zend_View: The 'V' in MVC Zend_... Where's the 'M'? Putting it Together Q & A
Zend Framework Zend Framework Overview
What is Zend Framework? Component Library Loosely coupled components for general purpose actions Use-at-will architecture Application Framework Cohesive framework for building applications
Zend Framework Goals Extreme Simplicity: Simpler is easier to use Simpler is more stable and less prone to error Simpler is easier to maintain
Zend Framework Goals Showcase Current Trends: Web Services Ajax Search
Zend Framework Goals Stability and Documentation All components must have > 80% test coverage All components must have end-user documentation and use-cases
Zend Framework Goals Business Friendly Contributor License Agreement required in order to contribute code, patches, or documentation All code licensed under the new BSD license
Zend Framework What is MVC?
MVC Overview Model The "stuff" you are using in the application -- data, web services, feeds, etc. View The display returned to the user. Controller Manages the request environment, and determines what happens.
MVC Interactions Controller <-> View Controller and View can interact Controller <-> Model Controller can pull data from the model for decisioning, or push data to the model View <- Model View can access the model to retrieve data, but not write to it.
Front Controller Handles all requests Delegates requests to 'Action Controllers' for handling Returns response
Zend Framework Zend_Controller: The 'C' in MVC
Zend_Controller: Basics Action Controllers: Extend Zend_Controller_Action Class name ends in 'Controller' IndexController BlogController Underscores indicate directory separators Foo_AdminController => Foo/AdminController.php Note: rule is different with modules CamelCasing allowed FooBarController Separate CamelCased words in URLS with '-' or '.': foo-bar foo.bar
Zend_Controller: Basics Controller Actions: Method the action controller should perform Public methods ending in 'Action' barAction()‏ indexAction()‏ CamelCasing allowed fooBarAction()‏ Separate camelCased words on the URL with '.', '-', or '_': foo-bar foo.bar foo_bar
Zend_Controller: Basics Modules: A set of related action controllers, models, and views Directory structure mimics application directory structure: controllers/ models/ views/ Controller class names should be prefixed with module name: Foo_ViewController -> foo/controllers/ViewController.php Module names may be camelCased as well; follow rules for controllers
Zend_Controller: Responsibilities Request object:  contains all information on the request environment Router:  decomposes environment into various tokens representing the current module, controller, action, etc. Dispatcher:  maps the tokens from routing to action controller classes and methods, and executes them Response object:  contains the complete response and has the ability to send it
Zend_Controller: Process Diagam
Zend_Controller: Dispatch Loop $front->dispatch() handles the incoming request Instantiates request and response objects if not previously set Routes request Enters dispatch loop Dispatch Action Instantiate controller Call action method Dispatches until request object reports no more actions to dispatch Returns Response (sends by default)‏
Zend_Controller: Routing Default Routing: /controller/action /controller/action/key1/value1/key2/value2 /module/controller/action /module/controller/action/key1/value1/...
Zend_Controller: Routing Modifying Routing: Rewrite Router: Zend_Controller_Router_Rewrite is the default router implementation Allows attaching as many named routes as desired Named routes allow pulling routes for later operations, such as URL assembly or determining what in a URL matched. Routes are executed in a LIFO order Route interface allows defining your own route types for your applications
Zend_Controller: Routing Shipped Route Types: Static: match exactly, and dispatch according to defaults Fastest route; straight equality comparison Standard: matches by named URL segments Flexible and readable, easiest creation of dynamic routes. However, each URL segment is potentially compared against a regexp, making it slow. Regex: matches using PCRE Fastest and most flexible dynamic route, but potentially the hardest to maintain if not all developers are equally versed in PCRE.
Zend_Controller: Routing Creating a new route: Want to match this: /news/view/12 Route: /news/view/:id
Zend_Controller: Action Controllers Action Controllers Simply classes that extend Zend_Controller_Action Define public action methods for each action you want the controller to handle Use regular public methods when you want to have re-usable or testable functionality
Zend_Controller: Action Controllers Action controller triggers and listens to the following events: init():  object instantiation preDispatch():  prior to dispatching the action postDispatch():  after the action has executed
Zend_Controller: Action Controllers Utility Methods: _forward($action, $controller = null, $module = null, array $params = null):  forward to another action _redirect($url):  redirect to another location render($action, $name, $noController):  render an alternate view script __call($method, $params):  use to create 'dynamic' actions or internally forward to a default action
Zend_Controller: ViewRenderer View integration is automatically available  Registered by  ViewRenderer  action helper Can be disabled $view property of controller contains view object Assign variables to view:  $this->view->model = $model;
Zend_Controller: ViewRenderer View scripts are rendered automatically during postDispatch() event View scripts named after controller and action: FooController::barAction() renders foo/bar.phtml NewsController::listAction() renders news/list.phtml Disabling the ViewRenderer setNoRender() will disable it for the current action Calling _forward() or _redirect() never auto-renders
Zend_Controller: ViewRenderer Customizing the ViewRenderer: setView()‏ Set view object (allows for custom view implementations!)‏ setViewSuffix()‏ Change the file suffix used setView(Base|Script)PathSpec()‏ Set the path specification used for auto-determining the view location setResponseSegment()‏ Set the named response segment to render into
Zend_Controller Sample Action Controller:
Zend_Controller: Plugins What are Plugins? Triggered by front controller events Events bookend each major process of the front controller Allow automating actions that apply globally
Zend_Controller: Plugins Events: routeStartup():  prior to routing routeShutdown():  after routing dispatchLoopStartup():  prior to fist iteration of dispatch loop preDispatch():  prior to dispatching an action postDispatch():  after dispatching an action dispatchLoopShutdown():  at dispatch loop termination
Zend_Controller: Plugins Creating Plugins: Extend Zend_Controller_Plugin_Abstract Extend one or more of the event methods Create multi-purpose plugins by extending multiple methods Create targetted plugins by extending a single method
Zend_Controller: Plugins Example: Two-Step View Plugin Note: the above will be superseded shortly by Zend_Layout
Zend_Controller: Action Helpers What are Action Helpers? Reusable functionality Functionality that can be used in multiple controllers Functionality you want to be able to discretely unit test Objects you wish to persist across controllers Useful for automating processes that involve the action controllers Initialized on-demand, or may be registered with helper broker Functionality you may want to swap out later
Zend_Controller: Action Helpers Creating Action Helpers: Extend  Zend_Controller_Action_Helper_Abstract Last segment of class name is helper name My_Helper_Foo -> 'foo' helper My_Helper_FooBar -> 'fooBar' helper Optionally implement a direct() method for method-like invocation Allows helper to be called as if it were a method of the helper broker
Zend_Controller: Action Helpers Using Action Helpers as Action Controller Event Listeners: init(): when the action controller is initialized preDispatch():  executes after front controller preDispatch() plugins but before action controller preDispatch postDispatch()  executes after action controller postDispatch() but before front controller postDispatch() plugins Note: helper must be registered with broker for events to trigger
Zend Framework Zend_View:  The 'V' in MVC
Zend_View: Overview Implement  Zend_View_Interface  to create your own template engine Default implementation ( Zend_View ) uses PHP as the template language Assign and retrieve view variables as if they were object members:  $view->content = $body Access view variables in view scripts from  $this  object:  <?= $this->content ?> Benefits: All of PHP is at your disposal Issues: All of PHP is at your disposal
Zend_View: View Scripts Mix HTML and PHP Access template variables using  $this  notation Keeps assigned variables in their own scope Easily distinguish assigned variables from local variables Easy placeholder implementation: simply assign from view scripts and use in later view scripts
Zend_View: View Scripts Use PHP short tags for shorthand notation:
Zend_View: View Helpers Classes that extend the functionality of Zend_View Uses Access models (e.g. add a del.icio.us feed to your page)‏ Format or escape output (e.g. transform wiki text to XHTML)‏ Display logic (e.g., show login buttons if user not logged in)‏ Re-usable display snippets (e.g., search form box)‏
Zend_View: View Helpers Using View Helpers: Call as if the helper were a method of the view object <?= $this->formText('username') ?>
Zend_View: View Helpers Creating and Using View Helper: Helper name is last segment of class name My_View_Helpers_Foo: foo helper My_View_Helpers_FooBar: fooBar helper Register helper paths with Zend_View object Optionally specify a class prefix Paths searched in LIFO order Override a helper by registering late
Zend_View: View Helpers View Helper Classes: Must have a method named after the helper:
Zend_View: View Helpers Optionally allow view awareness by creating a setView() method:
Zend_View: Filters Allow filtering rendered content prior to returning it Similar to helpers, one class and method per filter Use Cases Transform HTML to PDF Transform HTML to JSON Pass X/HTML through tidy Inject session IDs
Zend Framework Zend_...:  Where's the 'M'?
Zend_Model? What is a Model? Database Web Services Feeds Configuration files Filesystem Images
Zend_Model? How does Zend Framework address the Model? We don't yet, at least not as a generalized component.  But we do support it with our specialized components: Zend_Db_Table Zend_Service Zend_Feed etc.
Zend Framework Putting it Together
Putting it Together Filesystem Layout:
Putting it Together The Bootstrap file (index.php): Simplest:
Putting it Together Bootstrap File (index.php): More Advanced:
Putting it Together Hello World! IndexController:
Putting it Together Hello World! ErrorController:
Putting it Together Hello World! View scripts:
Thank you! More on Zend Framework: http://framework.zend.com

More Related Content

PDF
AngularJS Project Setup step-by- step guide - RapidValue Solutions
PPTX
Single Page Applications with AngularJS 2.0
PDF
Angular Dependency Injection
PDF
A gently introduction to AngularJS
PPTX
Angular2 + rxjs
PDF
Angular server side rendering - Strategies & Technics
PDF
Seven Versions of One Web Application
ODP
Angular js-crash-course
AngularJS Project Setup step-by- step guide - RapidValue Solutions
Single Page Applications with AngularJS 2.0
Angular Dependency Injection
A gently introduction to AngularJS
Angular2 + rxjs
Angular server side rendering - Strategies & Technics
Seven Versions of One Web Application
Angular js-crash-course

What's hot (20)

PDF
Data Flow Patterns in Angular 2 - Sebastian Müller
PDF
Tech Webinar: Angular 2, Introduction to a new framework
PDF
RESTful services and OAUTH protocol in IoT
PDF
Angular2 - In Action
PPTX
Angular js
PPTX
Understanding angular js
PPTX
Angular modules in depth
PDF
Creating a WYSIWYG Editor with React
PDF
Extending Kubernetes with Operators
PPTX
Angular2 for Beginners
PDF
Angular 2 - The Next Framework
PPTX
Angular js 1.0-fundamentals
PDF
Flutter State Management Using GetX.pdf
PDF
Angular 2: core concepts
PPTX
Angular Workshop_Sarajevo2
ODP
Dependency Injection, Zend Framework and Symfony Container
PPTX
Async patterns in javascript
PPT
Elefrant [ng-Poznan]
PDF
Angular 2 introduction
PDF
Commit University - Exploring Angular 2
Data Flow Patterns in Angular 2 - Sebastian Müller
Tech Webinar: Angular 2, Introduction to a new framework
RESTful services and OAUTH protocol in IoT
Angular2 - In Action
Angular js
Understanding angular js
Angular modules in depth
Creating a WYSIWYG Editor with React
Extending Kubernetes with Operators
Angular2 for Beginners
Angular 2 - The Next Framework
Angular js 1.0-fundamentals
Flutter State Management Using GetX.pdf
Angular 2: core concepts
Angular Workshop_Sarajevo2
Dependency Injection, Zend Framework and Symfony Container
Async patterns in javascript
Elefrant [ng-Poznan]
Angular 2 introduction
Commit University - Exploring Angular 2
Ad

Similar to 2007 Zend Con Mvc (20)

PPT
2007 Zend Con Mvc Edited Irmantas
PPT
Getting Started with Zend Framework
PDF
Foundations of Zend Framework
PDF
Rupicon 2014 Action pack
ODP
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...
PDF
Zend Framework Foundations
PPT
Zend_Layout & Zend_View Enhancements
PDF
Deprecated: Foundations of Zend Framework 2
PPTX
PPTX
Meteor Meet-up San Diego December 2014
PDF
Zend Framework Quick Start Walkthrough
PPTX
Asp.net mvc
PPT
Introduction to Zend Framework
ODP
Http programming in play
PPT
Edp bootstrapping a-software_company
PPTX
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
PPTX
Zend framework
KEY
Zend framework: Getting to grips (ZF1)
PPTX
My Very First Zf App Part One
ODP
Introduction to Zend Framework
2007 Zend Con Mvc Edited Irmantas
Getting Started with Zend Framework
Foundations of Zend Framework
Rupicon 2014 Action pack
Building Web Services with Zend Framework (PHP Benelux meeting 20100713 Vliss...
Zend Framework Foundations
Zend_Layout & Zend_View Enhancements
Deprecated: Foundations of Zend Framework 2
Meteor Meet-up San Diego December 2014
Zend Framework Quick Start Walkthrough
Asp.net mvc
Introduction to Zend Framework
Http programming in play
Edp bootstrapping a-software_company
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
Zend framework
Zend framework: Getting to grips (ZF1)
My Very First Zf App Part One
Introduction to Zend Framework
Ad

More from Pablo Morales (6)

PDF
AiR for Js Dev Pocket Guide
PPT
Metodologias Agiles
PDF
Manual Completo Php 5
PDF
Ruby Facil
PDF
Tutorial de subvesion
PDF
Teoria Del Caos Y Software
AiR for Js Dev Pocket Guide
Metodologias Agiles
Manual Completo Php 5
Ruby Facil
Tutorial de subvesion
Teoria Del Caos Y Software

Recently uploaded (20)

PDF
Types of control:Qualitative vs Quantitative
PPTX
The Marketing Journey - Tracey Phillips - Marketing Matters 7-2025.pptx
PPT
Chapter four Project-Preparation material
PPT
340036916-American-Literature-Literary-Period-Overview.ppt
PDF
Reconciliation AND MEMORANDUM RECONCILATION
PDF
How to Get Funding for Your Trucking Business
DOCX
Euro SEO Services 1st 3 General Updates.docx
PDF
DOC-20250806-WA0002._20250806_112011_0000.pdf
PDF
Business model innovation report 2022.pdf
PPTX
Probability Distribution, binomial distribution, poisson distribution
PDF
pdfcoffee.com-opt-b1plus-sb-answers.pdfvi
PPTX
job Avenue by vinith.pptxvnbvnvnvbnvbnbmnbmbh
PDF
Nidhal Samdaie CV - International Business Consultant
PPTX
ICG2025_ICG 6th steering committee 30-8-24.pptx
PDF
Outsourced Audit & Assurance in USA Why Globus Finanza is Your Trusted Choice
PDF
A Brief Introduction About Julia Allison
PPT
Data mining for business intelligence ch04 sharda
DOCX
unit 1 COST ACCOUNTING AND COST SHEET
PDF
Roadmap Map-digital Banking feature MB,IB,AB
PPTX
CkgxkgxydkydyldylydlydyldlyddolydyoyyU2.pptx
Types of control:Qualitative vs Quantitative
The Marketing Journey - Tracey Phillips - Marketing Matters 7-2025.pptx
Chapter four Project-Preparation material
340036916-American-Literature-Literary-Period-Overview.ppt
Reconciliation AND MEMORANDUM RECONCILATION
How to Get Funding for Your Trucking Business
Euro SEO Services 1st 3 General Updates.docx
DOC-20250806-WA0002._20250806_112011_0000.pdf
Business model innovation report 2022.pdf
Probability Distribution, binomial distribution, poisson distribution
pdfcoffee.com-opt-b1plus-sb-answers.pdfvi
job Avenue by vinith.pptxvnbvnvnvbnvbnbmnbmbh
Nidhal Samdaie CV - International Business Consultant
ICG2025_ICG 6th steering committee 30-8-24.pptx
Outsourced Audit & Assurance in USA Why Globus Finanza is Your Trusted Choice
A Brief Introduction About Julia Allison
Data mining for business intelligence ch04 sharda
unit 1 COST ACCOUNTING AND COST SHEET
Roadmap Map-digital Banking feature MB,IB,AB
CkgxkgxydkydyldylydlydyldlyddolydyoyyU2.pptx

2007 Zend Con Mvc

  • 1. Zend Framework MVC Quick Start Matthew Weier O'Phinney PHP Developer Zend Technologies Zend Framework provides rich and flexible MVC components built using the object-oriented features of PHP 5.
  • 2. Topics Overview Zend Framework Overview What is MVC? Zend_Controller: The 'C' in MVC Zend_View: The 'V' in MVC Zend_... Where's the 'M'? Putting it Together Q & A
  • 3. Zend Framework Zend Framework Overview
  • 4. What is Zend Framework? Component Library Loosely coupled components for general purpose actions Use-at-will architecture Application Framework Cohesive framework for building applications
  • 5. Zend Framework Goals Extreme Simplicity: Simpler is easier to use Simpler is more stable and less prone to error Simpler is easier to maintain
  • 6. Zend Framework Goals Showcase Current Trends: Web Services Ajax Search
  • 7. Zend Framework Goals Stability and Documentation All components must have > 80% test coverage All components must have end-user documentation and use-cases
  • 8. Zend Framework Goals Business Friendly Contributor License Agreement required in order to contribute code, patches, or documentation All code licensed under the new BSD license
  • 10. MVC Overview Model The &quot;stuff&quot; you are using in the application -- data, web services, feeds, etc. View The display returned to the user. Controller Manages the request environment, and determines what happens.
  • 11. MVC Interactions Controller <-> View Controller and View can interact Controller <-> Model Controller can pull data from the model for decisioning, or push data to the model View <- Model View can access the model to retrieve data, but not write to it.
  • 12. Front Controller Handles all requests Delegates requests to 'Action Controllers' for handling Returns response
  • 14. Zend_Controller: Basics Action Controllers: Extend Zend_Controller_Action Class name ends in 'Controller' IndexController BlogController Underscores indicate directory separators Foo_AdminController => Foo/AdminController.php Note: rule is different with modules CamelCasing allowed FooBarController Separate CamelCased words in URLS with '-' or '.': foo-bar foo.bar
  • 15. Zend_Controller: Basics Controller Actions: Method the action controller should perform Public methods ending in 'Action' barAction()‏ indexAction()‏ CamelCasing allowed fooBarAction()‏ Separate camelCased words on the URL with '.', '-', or '_': foo-bar foo.bar foo_bar
  • 16. Zend_Controller: Basics Modules: A set of related action controllers, models, and views Directory structure mimics application directory structure: controllers/ models/ views/ Controller class names should be prefixed with module name: Foo_ViewController -> foo/controllers/ViewController.php Module names may be camelCased as well; follow rules for controllers
  • 17. Zend_Controller: Responsibilities Request object: contains all information on the request environment Router: decomposes environment into various tokens representing the current module, controller, action, etc. Dispatcher: maps the tokens from routing to action controller classes and methods, and executes them Response object: contains the complete response and has the ability to send it
  • 19. Zend_Controller: Dispatch Loop $front->dispatch() handles the incoming request Instantiates request and response objects if not previously set Routes request Enters dispatch loop Dispatch Action Instantiate controller Call action method Dispatches until request object reports no more actions to dispatch Returns Response (sends by default)‏
  • 20. Zend_Controller: Routing Default Routing: /controller/action /controller/action/key1/value1/key2/value2 /module/controller/action /module/controller/action/key1/value1/...
  • 21. Zend_Controller: Routing Modifying Routing: Rewrite Router: Zend_Controller_Router_Rewrite is the default router implementation Allows attaching as many named routes as desired Named routes allow pulling routes for later operations, such as URL assembly or determining what in a URL matched. Routes are executed in a LIFO order Route interface allows defining your own route types for your applications
  • 22. Zend_Controller: Routing Shipped Route Types: Static: match exactly, and dispatch according to defaults Fastest route; straight equality comparison Standard: matches by named URL segments Flexible and readable, easiest creation of dynamic routes. However, each URL segment is potentially compared against a regexp, making it slow. Regex: matches using PCRE Fastest and most flexible dynamic route, but potentially the hardest to maintain if not all developers are equally versed in PCRE.
  • 23. Zend_Controller: Routing Creating a new route: Want to match this: /news/view/12 Route: /news/view/:id
  • 24. Zend_Controller: Action Controllers Action Controllers Simply classes that extend Zend_Controller_Action Define public action methods for each action you want the controller to handle Use regular public methods when you want to have re-usable or testable functionality
  • 25. Zend_Controller: Action Controllers Action controller triggers and listens to the following events: init(): object instantiation preDispatch(): prior to dispatching the action postDispatch(): after the action has executed
  • 26. Zend_Controller: Action Controllers Utility Methods: _forward($action, $controller = null, $module = null, array $params = null): forward to another action _redirect($url): redirect to another location render($action, $name, $noController): render an alternate view script __call($method, $params): use to create 'dynamic' actions or internally forward to a default action
  • 27. Zend_Controller: ViewRenderer View integration is automatically available Registered by ViewRenderer action helper Can be disabled $view property of controller contains view object Assign variables to view: $this->view->model = $model;
  • 28. Zend_Controller: ViewRenderer View scripts are rendered automatically during postDispatch() event View scripts named after controller and action: FooController::barAction() renders foo/bar.phtml NewsController::listAction() renders news/list.phtml Disabling the ViewRenderer setNoRender() will disable it for the current action Calling _forward() or _redirect() never auto-renders
  • 29. Zend_Controller: ViewRenderer Customizing the ViewRenderer: setView()‏ Set view object (allows for custom view implementations!)‏ setViewSuffix()‏ Change the file suffix used setView(Base|Script)PathSpec()‏ Set the path specification used for auto-determining the view location setResponseSegment()‏ Set the named response segment to render into
  • 31. Zend_Controller: Plugins What are Plugins? Triggered by front controller events Events bookend each major process of the front controller Allow automating actions that apply globally
  • 32. Zend_Controller: Plugins Events: routeStartup(): prior to routing routeShutdown(): after routing dispatchLoopStartup(): prior to fist iteration of dispatch loop preDispatch(): prior to dispatching an action postDispatch(): after dispatching an action dispatchLoopShutdown(): at dispatch loop termination
  • 33. Zend_Controller: Plugins Creating Plugins: Extend Zend_Controller_Plugin_Abstract Extend one or more of the event methods Create multi-purpose plugins by extending multiple methods Create targetted plugins by extending a single method
  • 34. Zend_Controller: Plugins Example: Two-Step View Plugin Note: the above will be superseded shortly by Zend_Layout
  • 35. Zend_Controller: Action Helpers What are Action Helpers? Reusable functionality Functionality that can be used in multiple controllers Functionality you want to be able to discretely unit test Objects you wish to persist across controllers Useful for automating processes that involve the action controllers Initialized on-demand, or may be registered with helper broker Functionality you may want to swap out later
  • 36. Zend_Controller: Action Helpers Creating Action Helpers: Extend Zend_Controller_Action_Helper_Abstract Last segment of class name is helper name My_Helper_Foo -> 'foo' helper My_Helper_FooBar -> 'fooBar' helper Optionally implement a direct() method for method-like invocation Allows helper to be called as if it were a method of the helper broker
  • 37. Zend_Controller: Action Helpers Using Action Helpers as Action Controller Event Listeners: init(): when the action controller is initialized preDispatch(): executes after front controller preDispatch() plugins but before action controller preDispatch postDispatch() executes after action controller postDispatch() but before front controller postDispatch() plugins Note: helper must be registered with broker for events to trigger
  • 38. Zend Framework Zend_View: The 'V' in MVC
  • 39. Zend_View: Overview Implement Zend_View_Interface to create your own template engine Default implementation ( Zend_View ) uses PHP as the template language Assign and retrieve view variables as if they were object members: $view->content = $body Access view variables in view scripts from $this object: <?= $this->content ?> Benefits: All of PHP is at your disposal Issues: All of PHP is at your disposal
  • 40. Zend_View: View Scripts Mix HTML and PHP Access template variables using $this notation Keeps assigned variables in their own scope Easily distinguish assigned variables from local variables Easy placeholder implementation: simply assign from view scripts and use in later view scripts
  • 41. Zend_View: View Scripts Use PHP short tags for shorthand notation:
  • 42. Zend_View: View Helpers Classes that extend the functionality of Zend_View Uses Access models (e.g. add a del.icio.us feed to your page)‏ Format or escape output (e.g. transform wiki text to XHTML)‏ Display logic (e.g., show login buttons if user not logged in)‏ Re-usable display snippets (e.g., search form box)‏
  • 43. Zend_View: View Helpers Using View Helpers: Call as if the helper were a method of the view object <?= $this->formText('username') ?>
  • 44. Zend_View: View Helpers Creating and Using View Helper: Helper name is last segment of class name My_View_Helpers_Foo: foo helper My_View_Helpers_FooBar: fooBar helper Register helper paths with Zend_View object Optionally specify a class prefix Paths searched in LIFO order Override a helper by registering late
  • 45. Zend_View: View Helpers View Helper Classes: Must have a method named after the helper:
  • 46. Zend_View: View Helpers Optionally allow view awareness by creating a setView() method:
  • 47. Zend_View: Filters Allow filtering rendered content prior to returning it Similar to helpers, one class and method per filter Use Cases Transform HTML to PDF Transform HTML to JSON Pass X/HTML through tidy Inject session IDs
  • 48. Zend Framework Zend_...: Where's the 'M'?
  • 49. Zend_Model? What is a Model? Database Web Services Feeds Configuration files Filesystem Images
  • 50. Zend_Model? How does Zend Framework address the Model? We don't yet, at least not as a generalized component. But we do support it with our specialized components: Zend_Db_Table Zend_Service Zend_Feed etc.
  • 51. Zend Framework Putting it Together
  • 52. Putting it Together Filesystem Layout:
  • 53. Putting it Together The Bootstrap file (index.php): Simplest:
  • 54. Putting it Together Bootstrap File (index.php): More Advanced:
  • 55. Putting it Together Hello World! IndexController:
  • 56. Putting it Together Hello World! ErrorController:
  • 57. Putting it Together Hello World! View scripts:
  • 58. Thank you! More on Zend Framework: http://framework.zend.com