SlideShare a Scribd company logo
Introducing: Zend Framework John Coggeshall
Welcome Today I’ll be introducing you to the Zend Framework What it is Why we’re doing it How to use it Where it’s going How to be a part of it
Getting Started Zend Framework is.. A modular collection of PHP classes based on PHP 5 to simplify common tasks A starting point for your applications A demonstration of PHP 5 best practices A smaller component of the PHP Collaboration Project Zend Framework  isn’t … A free-reign open source project A religion
Goals of the Framework Zend Framework strives to be fundamentally…. An industry-leading framework for PHP application development A partnership between many companies already experienced in PHP Framework development Zend Framework strives to be technically… A source of high-quality, PHP 5 / E_STRICT compatible application components Completely PHP 5 powered,  requiring  as few external PHP extensions as necessary A minimal object hierarchy to achieve the necessary goals Modular design allowing developers to use the framework at will, as they see fit.
Why Yet another Framework? Keep PHP competitive with other technologies .NET, Java, etc. Provide “clean” IP to enable commercial use Real companies can’t just “borrow” code from the Internet without clear licensing “Extreme Simplicity”: It may not be simple technically, but using it should be. Take full advantage of PHP 5
The Framework License Zend Framework is licensed using a PHP/BSD style license Anyone can use it, for anything, no strings attached – period. Along with the license of the framework itself, contributors must sign a Contributor License Agreement (CLA)
There’s no such thing as a free…  Why spend so much time and effort on something, just to give it away? Yes, we’re still interested in making money For the continued success of PHP it must be a collaboration beyond OSS hackers Through the PHP Collaboration project, and projects like Zend Framework, we can leverage the knowledge of some of the best in the industry in the benefit of PHP as a whole As you might expect, Zend benefits with PHP
We eat our own dog food Zend Framework is more than unit-tested, it is used in real-life production environments Gives us the ability to test performance, ease of use, etc. in a practical environment Zend and its partners are already using the preview release of the Framework to speed development of their applications Both the Framework homepage (framework.zend.com) and our new Developer’s Zone (devzone.zend.com) use the preview release of Framework as their foundation.
The grail: Extreme Simplicity Many of PHP 5’s most exciting new technologies are  really simple  to use: Simple XML SOAP Tidy While the underlying technologies may be extremely complex, the end-user APIs are reduced to an extremely simple interface
Getting the Grail To achieve the grail of extreme simplicity “Simple things should be simple, complex things should be possible” Use-at-will architecture You shouldn’t be forced into buying the whole pizza just for a slice Use individual components (controller/model) without being forced to use everything (your own template/view) Configuration-less The framework should be plug-and-go, no configuration files necessary
Zend Framework from 10,000 feet
Completely PHP-5 focused Requires PHP 5.0.4 or later for near future Takes full advantage of the PHP exception model Constants are all at the class-level No functions in global namespace ZE2 / SPL technologies fully utilized where it makes sense Black magic __magic() functions used very sparsely
Preview Release PR 1.2 is the latest preview release of the Framework including many immediately useful tools such as: A basic MVC framework for application design A PDO-based database layer Feed (RSS, Atom) ingestion and manipulation An HTTP client Input data filtering Json support for AJAX PDF generation and manipulation RPC / Web service support And more!
You can either get the framework preview release or check out the latest repository version Preview Release:  http://framework.zend.com/ Repository: Getting Zend Framework $ svn checkout http://framework.zend.com/svn/framework/trunk
Installing Zend Framework Installing the framework is  very  easy, just modify your include_path to include the library/ directory From php.ini: From .htaccess …… include_path=“.:/usr/local/lib/php:/usr/local/lib/ZendFramework” …… …… php_value include_path “.:/usr/local/lib/php:/usr/local/lib/ZendFramework” ……
MVC Pattern MVC, or  M odel  V iew  C ontroller pattern is a powerful technique for developing user interfaces Originally was conceived for client-side GUI applications and adopted to the web Zend Framework provides a simplistic MVC model
Example Controller Note: indexAction() is declared abstract in Zend_Controller_Action, and therefore must be defined in any Action/Page controller
Passing Parameters Beyond $_GET/$_POST you can also pass parameters to a specific controller action by appending them to the URL: http://localhost/foo/dosomething/param1/value1/param2/value2 Parameters can be accessed from within the action by name $this->_getParam(<key> [, <default value>]); $this->_getAllParams();
Dealing with 404s 404 errors are no longer the responsibility of Apache per-se, and are more likely to result in a ‘Class not found’ / ‘Method not found’ exception To deal with these Zend Framework provides two methods In the event of a controller not found, the IndexController::noRoute() method will be called instead In the event a controller action is not defined, it is the responsibility of the controller to implement safeguards (i.e. __call() which traps bad action calls)
Chaining Controllers Controllers can be chained together to either break business logic out into components, or to otherwise redirect the user $this->_forward(<controller_name> [, <parameters>]) Parameters are a series of key/value pairs Controller Chaining does not occur until the current action is complete, to immediately forward you must return from the current action after calling _forward() Forwarding does not cause a refresh on the client, to physically refresh the browser $this->_redirect(<url>);
Final thoughts on MVC Although the pattern dictates three individual class types, they are as conceptual as functional For instance a “model” or “view” isn’t absolutely necessary to gain most of the benefit of MVC You can always perform queries from a controller You can always print output from a controller Although not necessary, they are never the less recommended
Input Filtering
Zend_InputFilter Security is a primary concern in Zend Framework As such, we provide facilities to clean and manage untrusted data in your applications via Zend_InputFilter and Zend_Filter Provides a number of methods for filtering data against many common data types (digits, alphanumeric, alpha, phone, etc.)
Using Zend_InputFilter With Input Filter you can both test data types and retrieve filtered data easily Note, by default the source of the data and all of it’s references are destroyed when filtered
Zend_Mail Simplifies building and sending e-mail Supports MIME types and multipart e-mail Supports multiple transports and persistent connections automatically Supports large file attachments via the streams API improving performance
Sending HTML mail is now  really  easy
Zend_Search PHP 5 implementation of the popular Lucene search engine from the Java world. Simplified API Requires no special PHP extensions Fully compatible with the binary index format of Java Lucene 1.4 and above
Zend_Search Features Ranked Searching Best results always first Many Query types: phrase, wildcard, proximity Search by field (Author, title, body, etc.) Robust, and simple API One-method intelligent searches against indexes, or complex OO queries if desired Index multiple document types, with different field requirements
Using Zend_Search Using Zend Search is very easy The search engine also boasts a parser for google-like searching: zend php -java
Adding documents to the index
Cool things about Zend_Search The Lucene search engine allows you to index multiple document types in a single index, each with different index fields Index Individual documents with different searchable criterion I.e. Index code samples by functions used, while articles by title, author, and keywords in the same index Because it is 100% compatible with Lucene 1.4+, it is compatible with all pre-created index files
Questions?

More Related Content

More from John Coggeshall (19)

PPTX
Introduction to Zend Framework 2
John Coggeshall
 
PPTX
10 things not to do at a Startup
John Coggeshall
 
PPTX
Virtualization for Developers
John Coggeshall
 
PPTX
Puppet
John Coggeshall
 
PPT
Building PHP Powered Android Applications
John Coggeshall
 
PPT
Ria Applications And PHP
John Coggeshall
 
PPT
Beyond the Browser
John Coggeshall
 
PPT
Apache Con 2008 Top 10 Mistakes
John Coggeshall
 
PPT
Ria Development With Flex And PHP
John Coggeshall
 
PPT
Top 10 Scalability Mistakes
John Coggeshall
 
PPT
Enterprise PHP: A Case Study
John Coggeshall
 
PPT
Building Dynamic Web Applications on i5 with PHP
John Coggeshall
 
PPT
PHP Security Basics
John Coggeshall
 
PPT
Migrating from PHP 4 to PHP 5
John Coggeshall
 
PPT
Ajax and PHP
John Coggeshall
 
PPT
Top 10 Scalability Mistakes
John Coggeshall
 
PPT
Top 30 Scalability Mistakes
John Coggeshall
 
PPT
John's Top PECL Picks
John Coggeshall
 
PPT
Enterprise PHP
John Coggeshall
 
Introduction to Zend Framework 2
John Coggeshall
 
10 things not to do at a Startup
John Coggeshall
 
Virtualization for Developers
John Coggeshall
 
Building PHP Powered Android Applications
John Coggeshall
 
Ria Applications And PHP
John Coggeshall
 
Beyond the Browser
John Coggeshall
 
Apache Con 2008 Top 10 Mistakes
John Coggeshall
 
Ria Development With Flex And PHP
John Coggeshall
 
Top 10 Scalability Mistakes
John Coggeshall
 
Enterprise PHP: A Case Study
John Coggeshall
 
Building Dynamic Web Applications on i5 with PHP
John Coggeshall
 
PHP Security Basics
John Coggeshall
 
Migrating from PHP 4 to PHP 5
John Coggeshall
 
Ajax and PHP
John Coggeshall
 
Top 10 Scalability Mistakes
John Coggeshall
 
Top 30 Scalability Mistakes
John Coggeshall
 
John's Top PECL Picks
John Coggeshall
 
Enterprise PHP
John Coggeshall
 

Recently uploaded (20)

PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
July Patch Tuesday
Ivanti
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
July Patch Tuesday
Ivanti
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Ad

Zend Framework

  • 1. Introducing: Zend Framework John Coggeshall
  • 2. Welcome Today I’ll be introducing you to the Zend Framework What it is Why we’re doing it How to use it Where it’s going How to be a part of it
  • 3. Getting Started Zend Framework is.. A modular collection of PHP classes based on PHP 5 to simplify common tasks A starting point for your applications A demonstration of PHP 5 best practices A smaller component of the PHP Collaboration Project Zend Framework isn’t … A free-reign open source project A religion
  • 4. Goals of the Framework Zend Framework strives to be fundamentally…. An industry-leading framework for PHP application development A partnership between many companies already experienced in PHP Framework development Zend Framework strives to be technically… A source of high-quality, PHP 5 / E_STRICT compatible application components Completely PHP 5 powered, requiring as few external PHP extensions as necessary A minimal object hierarchy to achieve the necessary goals Modular design allowing developers to use the framework at will, as they see fit.
  • 5. Why Yet another Framework? Keep PHP competitive with other technologies .NET, Java, etc. Provide “clean” IP to enable commercial use Real companies can’t just “borrow” code from the Internet without clear licensing “Extreme Simplicity”: It may not be simple technically, but using it should be. Take full advantage of PHP 5
  • 6. The Framework License Zend Framework is licensed using a PHP/BSD style license Anyone can use it, for anything, no strings attached – period. Along with the license of the framework itself, contributors must sign a Contributor License Agreement (CLA)
  • 7. There’s no such thing as a free… Why spend so much time and effort on something, just to give it away? Yes, we’re still interested in making money For the continued success of PHP it must be a collaboration beyond OSS hackers Through the PHP Collaboration project, and projects like Zend Framework, we can leverage the knowledge of some of the best in the industry in the benefit of PHP as a whole As you might expect, Zend benefits with PHP
  • 8. We eat our own dog food Zend Framework is more than unit-tested, it is used in real-life production environments Gives us the ability to test performance, ease of use, etc. in a practical environment Zend and its partners are already using the preview release of the Framework to speed development of their applications Both the Framework homepage (framework.zend.com) and our new Developer’s Zone (devzone.zend.com) use the preview release of Framework as their foundation.
  • 9. The grail: Extreme Simplicity Many of PHP 5’s most exciting new technologies are really simple to use: Simple XML SOAP Tidy While the underlying technologies may be extremely complex, the end-user APIs are reduced to an extremely simple interface
  • 10. Getting the Grail To achieve the grail of extreme simplicity “Simple things should be simple, complex things should be possible” Use-at-will architecture You shouldn’t be forced into buying the whole pizza just for a slice Use individual components (controller/model) without being forced to use everything (your own template/view) Configuration-less The framework should be plug-and-go, no configuration files necessary
  • 11. Zend Framework from 10,000 feet
  • 12. Completely PHP-5 focused Requires PHP 5.0.4 or later for near future Takes full advantage of the PHP exception model Constants are all at the class-level No functions in global namespace ZE2 / SPL technologies fully utilized where it makes sense Black magic __magic() functions used very sparsely
  • 13. Preview Release PR 1.2 is the latest preview release of the Framework including many immediately useful tools such as: A basic MVC framework for application design A PDO-based database layer Feed (RSS, Atom) ingestion and manipulation An HTTP client Input data filtering Json support for AJAX PDF generation and manipulation RPC / Web service support And more!
  • 14. You can either get the framework preview release or check out the latest repository version Preview Release: http://framework.zend.com/ Repository: Getting Zend Framework $ svn checkout http://framework.zend.com/svn/framework/trunk
  • 15. Installing Zend Framework Installing the framework is very easy, just modify your include_path to include the library/ directory From php.ini: From .htaccess …… include_path=“.:/usr/local/lib/php:/usr/local/lib/ZendFramework” …… …… php_value include_path “.:/usr/local/lib/php:/usr/local/lib/ZendFramework” ……
  • 16. MVC Pattern MVC, or M odel V iew C ontroller pattern is a powerful technique for developing user interfaces Originally was conceived for client-side GUI applications and adopted to the web Zend Framework provides a simplistic MVC model
  • 17. Example Controller Note: indexAction() is declared abstract in Zend_Controller_Action, and therefore must be defined in any Action/Page controller
  • 18. Passing Parameters Beyond $_GET/$_POST you can also pass parameters to a specific controller action by appending them to the URL: http://localhost/foo/dosomething/param1/value1/param2/value2 Parameters can be accessed from within the action by name $this->_getParam(<key> [, <default value>]); $this->_getAllParams();
  • 19. Dealing with 404s 404 errors are no longer the responsibility of Apache per-se, and are more likely to result in a ‘Class not found’ / ‘Method not found’ exception To deal with these Zend Framework provides two methods In the event of a controller not found, the IndexController::noRoute() method will be called instead In the event a controller action is not defined, it is the responsibility of the controller to implement safeguards (i.e. __call() which traps bad action calls)
  • 20. Chaining Controllers Controllers can be chained together to either break business logic out into components, or to otherwise redirect the user $this->_forward(<controller_name> [, <parameters>]) Parameters are a series of key/value pairs Controller Chaining does not occur until the current action is complete, to immediately forward you must return from the current action after calling _forward() Forwarding does not cause a refresh on the client, to physically refresh the browser $this->_redirect(<url>);
  • 21. Final thoughts on MVC Although the pattern dictates three individual class types, they are as conceptual as functional For instance a “model” or “view” isn’t absolutely necessary to gain most of the benefit of MVC You can always perform queries from a controller You can always print output from a controller Although not necessary, they are never the less recommended
  • 23. Zend_InputFilter Security is a primary concern in Zend Framework As such, we provide facilities to clean and manage untrusted data in your applications via Zend_InputFilter and Zend_Filter Provides a number of methods for filtering data against many common data types (digits, alphanumeric, alpha, phone, etc.)
  • 24. Using Zend_InputFilter With Input Filter you can both test data types and retrieve filtered data easily Note, by default the source of the data and all of it’s references are destroyed when filtered
  • 25. Zend_Mail Simplifies building and sending e-mail Supports MIME types and multipart e-mail Supports multiple transports and persistent connections automatically Supports large file attachments via the streams API improving performance
  • 26. Sending HTML mail is now really easy
  • 27. Zend_Search PHP 5 implementation of the popular Lucene search engine from the Java world. Simplified API Requires no special PHP extensions Fully compatible with the binary index format of Java Lucene 1.4 and above
  • 28. Zend_Search Features Ranked Searching Best results always first Many Query types: phrase, wildcard, proximity Search by field (Author, title, body, etc.) Robust, and simple API One-method intelligent searches against indexes, or complex OO queries if desired Index multiple document types, with different field requirements
  • 29. Using Zend_Search Using Zend Search is very easy The search engine also boasts a parser for google-like searching: zend php -java
  • 30. Adding documents to the index
  • 31. Cool things about Zend_Search The Lucene search engine allows you to index multiple document types in a single index, each with different index fields Index Individual documents with different searchable criterion I.e. Index code samples by functions used, while articles by title, author, and keywords in the same index Because it is 100% compatible with Lucene 1.4+, it is compatible with all pre-created index files