Hướng dẫn cơ bản khi muốn làm quen với Zend Framework, framwork được viết trên ngôn ngữ PHP bởi nhóm phát triển PHP.
Trang 1Zend Framework Quick Start Walk Through
Bradley Holt
<bradley.holt@foundline.com>
Found Line
Trang 2Zend 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
Trang 3Why 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 it
Great documentation
Permissive open source license (modified BSD)
Doesn't hurt to have "The PHP Company" behind it
Trang 4Zend Framework installation
Zend_Controller quick start
Example web application on Google Code
Trang 5Make 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
Trang 6Zend Framework MVC Overview
Model - many options including Zend_Db & Zend_ServiceView - Zend_View
Controller - Zend_Controller
Zend_Controller_Front uses a Front Controller pattern
Incoming requests are dispatched to Action Controllers based on the requested URL:
http://example.com
http://example.com/controller http://example.com/controller /action http://example.com/controller /action /key /value
Trang 7File System Layout
Trang 8Your web server's document root
Contains the bootstrap file which all requests are routed
Trang 9RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
php_value include_path /library
php_flag register_globals off
php_value error_reporting 2047
php_flag display_errors on
Trang 10html/index.php (bootstrap file)
<?php
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run(' /application/controllers');
Trang 11Contains 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()
Trang 13Contains 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
Trang 14application/views/scripts/index/ index.phtml
Trang 16application/views/scripts/error/ error.phtml
<h1>An error occurred</h1>
<p>An error occurred; please try again later.</p>
</body>
</html>
Trang 17A place for your "model" code
I prefer to create a namespace in library that contains the models specific to the web application
Trang 18application/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
Trang 19Library 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
Trang 20What's Next?
More controllers and actions
Some "M" in MVC - Zend_Db is the next logical step for most web applications
Send me an email requesting commit access to the
example web application if you want a sandbox <bradley.holt@foundline.com>
Trang 21Questions?