0
Zend Framework
  Introduction
 Features and Common Patterns
Examples from a demo blogging application named Postr are
used throughout this presentation. You can view, download, or
fo...
Zend_Tool
Automated scaffolding of project and project components

Used in creating the demo application, Postr

Referenced...
Zend_Tool
Create a Project
mkdir postr
cd postr
zf create project .
Zend_Tool
Project Structure
.zfproject.xml
application/
    Bootstrap.php
    configs/
        application.ini
    control...
Front Controller
All HTTP requests for the application go through
one script.
Apache’s rewrite module (or equivalent) make...
Zend_Application
Bootstraps the application

Provides reusable resources

Sets up PHP environment




See:
Zend_Applicatio...
Con guration
Default con guration is in application/configs/application.ini

Allows for con guration sections; for example...
Name the Project
Default application class name pre x is Application_.
zf change application.class-name-prefix Postr_
Updated Con guration
Added to application/configs/application.ini:
[production]
appnamespace = "Postr_"




See:
applicati...
Model-View-Controller (MVC)
Composite of several design patterns
Isolates domain logic from input and presentation
Model: ...
Zend_Layout
Implementation of the Two Step View pattern

Allows for consistent layout across multiple pages

Easier to man...
Zend_Layout
Enable Layout
zf enable layout
Zend_Layout
Layout View Script
application/
    layouts/
        scripts/
             layout.phtml


Added to application...
Controllers
Connects the Model and the View

Contains one or more actions

URL based routing typically decides what contro...
View Scripts
PHP templates

No domain logic please!

Default suffix of .phtml

One view script per controller action (by def...
Create a Controller
zf create controller Entry
Entry Controller
and View Script
application/
    controllers/
        EntryController.php
    views/
        scripts/
   ...
Create Additional
Controller Actions
zf   create   action   new Entry
zf   create   action   get Entry
zf   create   actio...
Entry Actions
Methods added to application/controllers/EntryController.php:
newAction()
getAction()
editAction()
postActio...
Entry Actions
View scripts created:
application/
    views/
        scripts/
             entry/
                 delete.p...
Zend_Test
Functional (end-to-end) testing of controllers

Simulates HTTP requests to the application

No web server requir...
Models
Models are speci c to your domain
No such thing as one-size- ts all models
No Zend_Model
However, some useful patte...
Create a Model
zf create model Entry
Entry Model
application/
    models/
        Entry.php




See:
application/models/Entry.php
Zend_Form
Input ltering

Input validation

Form and element rendering

Huge time saver




See:
Zend_Form
Zend_Filter
Zend...
Zend_Form
Create a Form
zf create form Entry
Zend_Form
Entry Form
application/
    forms/
        Entry.php




See:
application/forms/Entry.php
Zend_Db_Table
Object-oriented database interface

Implements the Table Data Gateway
and Row Data Gateway patterns




See:...
Con gure a DB Adapter
zf   configure   dbadapter   "adapter=Pdo_Sqlite&dbname=../data/db/production.db"
zf   configure   d...
Updated Con guration
Added to application/configs/application.ini:
[production]
resources.db.adapter = "Pdo_Sqlite"
resour...
Load DB Schema
Project-speci c and not built-in to Zend Framework:
mkdir -p data/db
php scripts/load.sqlite.php




See:
s...
Create DB Tables from
the Database
zf create dbtable.from-database
Entry and Entry Tag
DB Tables
application/
    models/
        DbTable/
             Entry.php
             EntryTag.php

...
Data Mapper
Keeps your domain logic isolated from your
database implementation
Domain objects should not directly use data...
Create a Data Mapper
zf create model EntryMapper
Entry Mapper
application/
    models/
        EntryMapper.php




See:
application/models/EntryMapper.php
Zend_Paginator
Pagination for database or any arbitrary data

Several adapters available:
   •   Array
   •   DbSelect
   ...
Zend_Paginator
Create a Paginator Adapter
zf create model EntryPaginatorAdapter
Zend_Paginator
Entry Paginator Adapter
application/
    models/
        EntryPaginatorAdapter.php




See:
application/mod...
Zend_Date
Manipulate dates and times

Useful for date and time calculations

Allows for input from and output to various f...
Zend_Markup
Renders BBcode or Textile markup into HTML or other formats

Extensible so may see other markup languages in t...
Zend_Navigation
Create menus, breadcrumbs, links, and sitemaps

Used to create the menu navigation in the Postr demo
appli...
Controller Plugins
Allows developers to hook into various events during the
controller process:
   •   routeStartup()
   •...
References
Bradley Holt’s demo application: Postr

Zend Framework Quick Start

Matthew Weier O’Phinney’s demo application:...
Credits
Author
Bradley Holt


Layout & Design
Jason Pelletier




           This presentation licensed under
           C...
Upcoming SlideShare
Loading in...5
×

Zend Framework Introduction

13,641

Published on

Features and patterns in Zend Framework

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

No Downloads
Views
Total Views
13,641
On Slideshare
0
From Embeds
0
Number of Embeds
27
Actions
Shares
0
Downloads
270
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide

Transcript of "Zend Framework Introduction"

  1. 1. Zend Framework Introduction Features and Common Patterns
  2. 2. Examples from a demo blogging application named Postr are used throughout this presentation. You can view, download, or fork the demo web application on GitHub: http://github.com/bradley-holt/postr
  3. 3. Zend_Tool Automated scaffolding of project and project components Used in creating the demo application, Postr Referenced throughout this presentation
  4. 4. Zend_Tool Create a Project mkdir postr cd postr zf create project .
  5. 5. Zend_Tool Project Structure .zfproject.xml application/ Bootstrap.php configs/ application.ini controllers/ ErrorController.php IndexController.php views/ scripts/ error/ error.phtml index/ index.phtml public/ .htaccess index.php tests/ application/ bootstrap.php library/ bootstrap.php phpunit.xml
  6. 6. Front Controller All HTTP requests for the application go through one script. Apache’s rewrite module (or equivalent) makes this happen. See: Front Controller pattern public/index.php public/.htaccess
  7. 7. Zend_Application Bootstraps the application Provides reusable resources Sets up PHP environment See: Zend_Application application/Bootstrap.php
  8. 8. Con guration Default con guration is in application/configs/application.ini Allows for con guration sections; for example: • production • staging • testing • development Sections can inherit from other sections See: application/con gs/application.ini
  9. 9. Name the Project Default application class name pre x is Application_. zf change application.class-name-prefix Postr_
  10. 10. Updated Con guration Added to application/configs/application.ini: [production] appnamespace = "Postr_" See: application/con gs/application.ini
  11. 11. Model-View-Controller (MVC) Composite of several design patterns Isolates domain logic from input and presentation Model: domain logic View: presentation layer Controller: interprets input and passes it to the Model; provides Model data to the View See: Model-view-controller application/models/ application/views/ application/controllers/
  12. 12. Zend_Layout Implementation of the Two Step View pattern Allows for consistent layout across multiple pages Easier to manage than “includes” See: Zend_Layout Two Step View
  13. 13. Zend_Layout Enable Layout zf enable layout
  14. 14. Zend_Layout Layout View Script application/ layouts/ scripts/ layout.phtml Added to application/configs/application.ini: [production] resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" See: application/layouts/scripts/layout.phtml application/con gs/application.ini
  15. 15. Controllers Connects the Model and the View Contains one or more actions URL based routing typically decides what controller and action to execute: :controller/:action Custom routing options available
  16. 16. View Scripts PHP templates No domain logic please! Default suffix of .phtml One view script per controller action (by default)
  17. 17. Create a Controller zf create controller Entry
  18. 18. Entry Controller and View Script application/ controllers/ EntryController.php views/ scripts/ entry/ index.phtml tests/ application/ controllers/ EntryControllerTest.php See: application/controllers/EntryController.php application/views/scripts/entry/index.phtml tests/application/controllers/EntryControllerTest.php
  19. 19. Create Additional Controller Actions zf create action new Entry zf create action get Entry zf create action edit Entry zf create action post Entry zf create action put Entry zf create action delete Entry
  20. 20. Entry Actions Methods added to application/controllers/EntryController.php: newAction() getAction() editAction() postAction() putAction() deleteAction() See: application/controllers/EntryController.php
  21. 21. Entry Actions View scripts created: application/ views/ scripts/ entry/ delete.phtml edit.phtml get.phtml new.phtml post.phtml put.phtml See: application/views/scripts/entry/
  22. 22. Zend_Test Functional (end-to-end) testing of controllers Simulates HTTP requests to the application No web server required Also provides a DB testing facility See: Zend_Test Functional Test tests/application/controllers/EntryControllerTest.php
  23. 23. Models Models are speci c to your domain No such thing as one-size- ts all models No Zend_Model However, some useful patterns have emerged
  24. 24. Create a Model zf create model Entry
  25. 25. Entry Model application/ models/ Entry.php See: application/models/Entry.php
  26. 26. Zend_Form Input ltering Input validation Form and element rendering Huge time saver See: Zend_Form Zend_Filter Zend_Validate
  27. 27. Zend_Form Create a Form zf create form Entry
  28. 28. Zend_Form Entry Form application/ forms/ Entry.php See: application/forms/Entry.php
  29. 29. Zend_Db_Table Object-oriented database interface Implements the Table Data Gateway and Row Data Gateway patterns See: Table Data Gateway Row Data Gateway
  30. 30. Con gure a DB Adapter zf configure dbadapter "adapter=Pdo_Sqlite&dbname=../data/db/production.db" zf configure dbadapter "adapter=Pdo_Sqlite&dbname=../data/db/staging.db" -s staging zf configure dbadapter "adapter=Pdo_Sqlite&dbname=../data/db/testing.db" -s testing zf configure dbadapter "adapter=Pdo_Sqlite&dbname=../data/db/development.db" -s development
  31. 31. Updated Con guration Added to application/configs/application.ini: [production] resources.db.adapter = "Pdo_Sqlite" resources.db.params.dbname = APPLICATION_PATH "/../data/db/production.db" [staging : production] resources.db.adapter = "Pdo_Sqlite" resources.db.params.dbname = APPLICATION_PATH "/../data/db/staging.db" [testing : production] resources.db.adapter = "Pdo_Sqlite" resources.db.params.dbname = APPLICATION_PATH "/../data/db/testing.db" [development : production] resources.db.adapter = "Pdo_Sqlite" resources.db.params.dbname = APPLICATION_PATH "/../data/db/development.db" See: application/con gs/application.ini
  32. 32. Load DB Schema Project-speci c and not built-in to Zend Framework: mkdir -p data/db php scripts/load.sqlite.php See: scripts/load.sqlite.php scripts/schema.sqlite.sql
  33. 33. Create DB Tables from the Database zf create dbtable.from-database
  34. 34. Entry and Entry Tag DB Tables application/ models/ DbTable/ Entry.php EntryTag.php See: application/models/DbTable/Entry.php application/models/DbTable/EntryTag.php
  35. 35. Data Mapper Keeps your domain logic isolated from your database implementation Domain objects should not directly use data mappers See: Data Mapper
  36. 36. Create a Data Mapper zf create model EntryMapper
  37. 37. Entry Mapper application/ models/ EntryMapper.php See: application/models/EntryMapper.php
  38. 38. Zend_Paginator Pagination for database or any arbitrary data Several adapters available: • Array • DbSelect • DbTableSelect • Iterator • Null • Write your own in order to paginate domain objects See: Zend_Paginator
  39. 39. Zend_Paginator Create a Paginator Adapter zf create model EntryPaginatorAdapter
  40. 40. Zend_Paginator Entry Paginator Adapter application/ models/ EntryPaginatorAdapter.php See: application/models/EntryPaginatorAdapter.php
  41. 41. Zend_Date Manipulate dates and times Useful for date and time calculations Allows for input from and output to various formats Used as a domain object in the Postr demo application: • Entry Updated • Entry Published See: Zend_Date application/models/Entry.php
  42. 42. Zend_Markup Renders BBcode or Textile markup into HTML or other formats Extensible so may see other markup languages in the future Used in the Postr demo application: • Entry Content and Entry Summary are stored as Textile markup • Entry Content and Entry Summary can optionally be retrieved as HTML See: Zend_Markup BBCode Textile application/models/Entry.php
  43. 43. Zend_Navigation Create menus, breadcrumbs, links, and sitemaps Used to create the menu navigation in the Postr demo application See: Zend_Navigation application/Bootstrap.php application/layouts/scripts/header.phtml
  44. 44. Controller Plugins Allows developers to hook into various events during the controller process: • routeStartup() • dispatchLoopStartup() • preDispatch() • postDispatch() • dispatchLoopShutdown() • routeShutdown() See: Controller Plugins application/plugins/RouteContext.php
  45. 45. References Bradley Holt’s demo application: Postr Zend Framework Quick Start Matthew Weier O’Phinney’s demo application: Pastebin Zend Framework Programmer’s Reference Guide
  46. 46. Credits Author Bradley Holt Layout & Design Jason Pelletier This presentation licensed under Creative Commons—Attribution 3.0 United States License.
  1. A particular slide catching your eye?

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

×