Zend Framework Quick Start Walkthrough

21
Zend Framework Quick Start Walk Through Bradley Holt <[email protected]> Found Line

description

Zend Framework Quick Start Walkthrough presented at the Burlington, VT PHP Users Group in January of 2008.

Transcript of Zend Framework Quick Start Walkthrough

Page 1: Zend Framework Quick Start Walkthrough

Zend FrameworkQuick Start Walk Through

Bradley Holt<[email protected]>

Found Line

Page 2: Zend Framework Quick Start Walkthrough

Introduction

Zend Framework is a "glue" framework that also provides an MVC "stack."Provides much flexibility but "best practices" are still sometimes hard to figure out (there are proposals that address this such as Zend_Console & Zend_Build).This presentation will focus mainly on what is suggested in Zend Framework documentation.

Page 3: Zend Framework Quick Start Walkthrough

Why We Chose Zend Framework

Clear separation between design and development (MVC)Gives a starting point for code reuse (coding standards, namespace organization, etc.)"Use-at-will" architecture - if I don't like something I can extend or replace itGreat documentationPermissive open source license (modified BSD)Doesn't hurt to have "The PHP Company" behind it

Page 5: Zend Framework Quick Start Walkthrough

Installation

Make sure you have PHP 5.1.4 or later (full system requirements).Download the latest stable release, download the latest nightly snapshot, or use a Subversion (SVN) client to get a copy of Zend Framework.Make sure your PHP include_path contains the path to the Zend Framework library.Zend Framework contains many components that may now be used in your web application even if you decide not to use Zend Framework MVC.

Page 6: Zend Framework Quick Start Walkthrough

Zend Framework MVC Overview

Model - many options including Zend_Db & Zend_ServiceView - Zend_ViewController - Zend_ControllerZend_Controller_Front uses a Front Controller pattern.Incoming requests are dispatched to Action Controllers based on the requested URL:

http://example.comhttp://example.com/controllerhttp://example.com/controller /actionhttp://example.com/controller /action /key /value

Page 7: Zend Framework Quick Start Walkthrough

File System Layoutapplication/ controllers/ ErrorController.php IndexController.php models/ views/ scripts/ error/ error.phtml index/ index.phtml helpers/ filters/html/ .htaccess index.phplibrary/ Zend/

Page 8: Zend Framework Quick Start Walkthrough

html/

Your web server's document root.Contains the bootstrap file which all requests are routed through.Contains the .htaccess file which uses mod_rewrite to make sure all requests are rewritten to your bootstrap file.You can use regex so that requests for static files (e.g. js, ico, gif, jpg, png, css) are not rewritten to your bootstrap file.

Page 9: Zend Framework Quick Start Walkthrough

html/.htaccess

RewriteEngine onRewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

php_value include_path ../libraryphp_flag register_globals offphp_value error_reporting 2047php_flag display_errors on

Page 10: Zend Framework Quick Start Walkthrough

html/index.php (bootstrap file)

<?phprequire_once 'Zend/Controller/Front.php';Zend_Controller_Front::run('../application/controllers');

Page 11: Zend Framework Quick Start Walkthrough

application/controllers/

Contains the Action Controllers for your web application.Each of your Action Controller will extend the Zend_Controller_Action class.Each of your Action Controller class names should end in "Controller." For example: FooController.Each Action Controller can have multiple actions represented by public functions ending in the name "Action." For example: barAction().

Page 12: Zend Framework Quick Start Walkthrough

application/controllers/IndexController.php<?php/** Zend_Controller_Action */require_once 'Zend/Controller/Action.php';

class IndexController extends Zend_Controller_Action{ public function indexAction() { }}

Page 13: Zend Framework Quick Start Walkthrough

application/views/scripts/

Contains the view scripts for your web application.Default extension for view scripts is .phtml.Controller name is used to match the directory and action name is used to match the view script.

Given FooController::barAction() the view script would be foo/bar.phtml.

Page 14: Zend Framework Quick Start Walkthrough

application/views/scripts/index/index.phtml<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html><head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>My first Zend Framework App</title></head><body> <h1>Hello, World!</h1></body></html>

Page 15: Zend Framework Quick Start Walkthrough

application/controllers/ErrorController.php<?php/** Zend_Controller_Action */require_once 'Zend/Controller/Action.php';

class ErrorController extends Zend_Controller_Action{ public function errorAction() { }}

Page 16: Zend Framework Quick Start Walkthrough

application/views/scripts/error/error.phtml<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html><head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>Error</title></head><body> <h1>An error occurred</h1> <p>An error occurred; please try again later.</p></body></html>

Page 17: Zend Framework Quick Start Walkthrough

application/models/

A place for your "model" code.I prefer to create a namespace in library that contains the models specific to the web application.

Page 18: Zend Framework Quick Start Walkthrough

application/views/helpers/ &application/views/filters/

Custom view helpers and filters.Examples of Zend Framework built-in view helpers include formButton (for creating an XHTML form button), url (for creating URLs based on named routes), and htmlList (for generating unordered and ordered lists based on an array).Examples of Zend Framework built-in filters include HtmlEntities, StringToLower, and StringTrim.

Page 19: Zend Framework Quick Start Walkthrough

library/

Library code used by your web application.Includes Zend directory which is where Zend Framework lives. I usually setup this up using svn:externals.When setting up my own libraries I like to follow the Zend Framework way of setting up namespaces.

Page 20: Zend Framework Quick Start Walkthrough

What's Next?

More controllers and actionsSome "M" in MVC - Zend_Db is the next logical step for most web applicationsSend me an email requesting commit access to the example web application if you want a sandbox <[email protected]>

Page 21: Zend Framework Quick Start Walkthrough

Questions?