zend f rame w ork over vie w - ben ramsey · zend f rame w ork over vie w ben r amsey a tlanta php...
TRANSCRIPT
Zend Framework OverviewBen RamseyAtlanta PHPMay 4, 2006
Who am I to discuss Zend?
• I’m Ben Ramsey, and I have a blog
• Professional PHP programmer for 5 years
• Author of articles on PHP in International PHP Magazine and php|architect
• Founding Principal of the PHP Security Consortium
• PHP enthusiast and advocate
What we will learn today
• Zend Framework background
• Framework components overview
• Zend Framework roadmap
• Setting up your environment
• A “hello, world” example
Zend Framework background
What is the Zend Framework?
• “Zend Framework is a high quality and open source framework for developing Web Applications and Web Services.”
• Zend’s answer to Enterprise-grade frameworks
• Zend’s tool to promote PHP use in the Enterprise
What is the Zend Framework?
• Like PEAR, it is a collection of classes that may be used together or separately
• Designed to be free from Intellectual Property disagreements
Project goals
• Provide a repository of high quality components that are actively supported
• Provide a complete system for developing web applications powered by PHP 5
• Don’t change PHP -- it’s already a great platform (even without a framework!)
Project goals
• Embrace collaboration and community to further advance PHP 5 programming
• Positively contribute to the PHP 5 ecosystem and the PHP Collaboration Project
PHP Collaboration Project
• a solid framework/development environment
• enriched development tools (Eclipse)
• best practices
Zend Framework License
• BSD license (was originally similar to the PHP license with the “advertising clause”)
• Located here: http://framework.zend.com/license/
More background
• There is a contribution/proposal process
• All contributors must sign the Contributor License Agreement
• There are rigid standards for writing code
• The framework is fairly easy to use
Framework components overview
Zend_ControllerZend_DbZend_FeedZend_FilterZend_InputFilterZend_HttpClientZend_JsonZend_LogZend_Mail
Zend_MimeZend_PdfZend_SearchZend_Service_AmazonZend_Service_FlickrZend_Service_RestZend_Service_YahooZend_ViewZend_XmlRpc
Zend Framework roadmap
• Currently seeking contributions: Zend_Auth, Zend_Acl, Zend_Feed_Builder, Zend_File, Zend_Http_Server, Zend_Locale, Zend_Session
• Stable release by Fall 2006?
• More info:http://framework.zend.com/roadmap/
Setting up your environment
Requirements
• PHP 5.0.4 with PDO extensions required; PHP 5.1 recommended
• Apache HTTPD server recommended for mod_rewrite rules, but not required
• Download from:http://framework.zend.com/download
Set up your app structure• I recommend the following structure:/
application/
controllers/
views/
library/
Zend/
www/ images/
styles/
.htaccess
index.php
Server configuration• Create an .htaccess file with the following and
place in www/
php_value include_path “../library”
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
Bootstrap file<?php
/* this file lives at www/index.php */
include 'Zend.php';
function __autoload($class)
{
Zend::loadClass($class);
}
$view = new Zend_View;
$view->addScriptPath('../application/views');
Zend::register('view', $view);
$controller = Zend_Controller_Front::getInstance()
->setControllerDirectory('../application/controllers')
->dispatch();
?>
A “hello, world” example
Application structure• Zend Framework applications are controlled by
instructions from the URI
• Thus, consider the following:
/
/view/#
/post/edit
/post/save
/post/remove/id/#
Create our controller• The framework dispatcher calls the index
controller when someone access the root of the site (/), so we need to create one to handle these requests
• Create IndexController.php in application/contorllers/
IndexController.php<?php
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$view = Zend::registry('view');
$view->title = 'Hiya';
$view->body = 'Hello, World!';
echo $view->render('hello.php');
}
public function noRouteAction()
{
$this->_redirect('/');
}
}
?>
Create our view• Create the following file (hello.php) and
store in application/views/
<html>
<head>
<title><?php echo $this->escape($this->title); ?></title>
</head>
<body>
<?php echo $this->escape($this->body); ?>
</body>
</html>
Say “hello” to everyone• Now, when a user accesses http://example.org/
or http://example.org/index, they’ll see the following:<html>
<head>
<title>Hiya</title>
</head>
<body>
Hello, World!
</body>
</html>
What have we learned?
• background on the framework
• overview of components
• quick look at the roadmap
• how to set up your environment
• said “hello” to the world
For more information
• Zend Framework: http://framework.zend.com/
• Zend Developer Zone: http://devzone.zend.com/
• Integrate Propel: http://devzone.zend.com/node/view/id/184
• Integrate Smarty: http://devzone.zend.com/node/view/id/156
• php|arch April 06: http://phparch.com/issue.php?mid=79
• Chris Shiflett’s tutorial: http://phparch/zftut
• My blog: http://benramsey.com