SlideShare a Scribd company logo
1 of 32
Copyright © 2006, Zend Technologies Inc.
Introducing: Zend Framework
John Coggeshall
Dec 23, 2014 # 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
Dec 23, 2014 # 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
Dec 23, 2014 # 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.
Dec 23, 2014 # 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
Dec 23, 2014 # 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)
Dec 23, 2014 # 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
Dec 23, 2014 # 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.
Dec 23, 2014 # 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
Dec 23, 2014 # 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
Dec 23, 2014 # 11
Zend Framework from 10,000 feet
Dec 23, 2014 # 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
Dec 23, 2014 # 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!
Dec 23, 2014 # 14
$ svn checkout http://framework.zend.com/svn/framework/trunk
• 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
Dec 23, 2014 # 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”
……
Dec 23, 2014 # 16
MVC Pattern
• MVC, or Model View Controller 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
Dec 23, 2014 # 17
Example Controller
• Note: indexAction() is declared abstract in
Zend_Controller_Action, and therefore must be
defined in any Action/Page controller
Dec 23, 2014 # 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();
Dec 23, 2014 # 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)
Dec 23, 2014 # 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>);
Dec 23, 2014 # 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
Copyright © 2006, Zend Technologies Inc.
Input Filtering
Dec 23, 2014 # 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.)
Dec 23, 2014 # 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
Dec 23, 2014 # 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
Dec 23, 2014 # 26
Sending HTML mail is now really easy
Dec 23, 2014 # 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
Dec 23, 2014 # 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
Dec 23, 2014 # 29
Using Zend_Search
• Using Zend Search is very easy
• The search engine also boasts a parser for google-like searching: zend php -java
Dec 23, 2014 # 30
Adding documents to the index
Dec 23, 2014 # 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
Copyright © 2006, Zend Technologies Inc.
Questions?

More Related Content

What's hot

PHP Frameworks, or how I learnt to stop worrying and love the code
PHP Frameworks, or how I learnt to stop worrying and love the codePHP Frameworks, or how I learnt to stop worrying and love the code
PHP Frameworks, or how I learnt to stop worrying and love the codeMichal Juhas
 
Building and managing applications fast for IBM i
Building and managing applications fast for IBM iBuilding and managing applications fast for IBM i
Building and managing applications fast for IBM iZend by Rogue Wave Software
 
Web Clients for Ruby and What they should be in the future
Web Clients for Ruby and What they should be in the futureWeb Clients for Ruby and What they should be in the future
Web Clients for Ruby and What they should be in the futureToru Kawamura
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?Edward Burns
 
Dev buchan leveraging the notes c api
Dev buchan leveraging the notes c apiDev buchan leveraging the notes c api
Dev buchan leveraging the notes c apiBill Buchan
 
The View - Leveraging Lotuscript for Database Connectivity
The View - Leveraging Lotuscript for Database ConnectivityThe View - Leveraging Lotuscript for Database Connectivity
The View - Leveraging Lotuscript for Database ConnectivityBill Buchan
 
Component Based DDS with C++11 and R2DDS
Component Based DDS with C++11 and R2DDSComponent Based DDS with C++11 and R2DDS
Component Based DDS with C++11 and R2DDSRemedy IT
 
iOS development best practices
iOS development best practicesiOS development best practices
iOS development best practicesMichal Juhas
 
Managing Open Source Software in the GitHub Era
Managing Open Source Software in the GitHub EraManaging Open Source Software in the GitHub Era
Managing Open Source Software in the GitHub EranexB Inc.
 

What's hot (12)

PHP Frameworks, or how I learnt to stop worrying and love the code
PHP Frameworks, or how I learnt to stop worrying and love the codePHP Frameworks, or how I learnt to stop worrying and love the code
PHP Frameworks, or how I learnt to stop worrying and love the code
 
EF Core (RC2)
EF Core (RC2)EF Core (RC2)
EF Core (RC2)
 
Building and managing applications fast for IBM i
Building and managing applications fast for IBM iBuilding and managing applications fast for IBM i
Building and managing applications fast for IBM i
 
Keeping up with PHP
Keeping up with PHPKeeping up with PHP
Keeping up with PHP
 
Web Clients for Ruby and What they should be in the future
Web Clients for Ruby and What they should be in the futureWeb Clients for Ruby and What they should be in the future
Web Clients for Ruby and What they should be in the future
 
JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?JavaOne 2014 BOF4241 What's Next for JSF?
JavaOne 2014 BOF4241 What's Next for JSF?
 
Dev buchan leveraging the notes c api
Dev buchan leveraging the notes c apiDev buchan leveraging the notes c api
Dev buchan leveraging the notes c api
 
The View - Leveraging Lotuscript for Database Connectivity
The View - Leveraging Lotuscript for Database ConnectivityThe View - Leveraging Lotuscript for Database Connectivity
The View - Leveraging Lotuscript for Database Connectivity
 
Component Based DDS with C++11 and R2DDS
Component Based DDS with C++11 and R2DDSComponent Based DDS with C++11 and R2DDS
Component Based DDS with C++11 and R2DDS
 
iOS development best practices
iOS development best practicesiOS development best practices
iOS development best practices
 
Managing Open Source Software in the GitHub Era
Managing Open Source Software in the GitHub EraManaging Open Source Software in the GitHub Era
Managing Open Source Software in the GitHub Era
 
Azure Resource Manager (ARM) Templates
Azure Resource Manager (ARM) TemplatesAzure Resource Manager (ARM) Templates
Azure Resource Manager (ARM) Templates
 

Viewers also liked

Zend Framework 2 kommt bald - und jetzt?
Zend Framework 2 kommt bald - und jetzt?Zend Framework 2 kommt bald - und jetzt?
Zend Framework 2 kommt bald - und jetzt?Ralf Eggert
 
Zend MVC pattern based Framework – Best for Enterprise web applications
Zend MVC pattern based Framework – Best for Enterprise web applicationsZend MVC pattern based Framework – Best for Enterprise web applications
Zend MVC pattern based Framework – Best for Enterprise web applicationsEtisbew Technology Group
 
Zend Framework 2 Components
Zend Framework 2 ComponentsZend Framework 2 Components
Zend Framework 2 ComponentsShawn Stratton
 
Zend Framework Introduction
Zend Framework IntroductionZend Framework Introduction
Zend Framework IntroductionRafael Monteiro
 
Zend Framework 2, What's new, Confoo 2011
Zend Framework 2, What's new, Confoo 2011Zend Framework 2, What's new, Confoo 2011
Zend Framework 2, What's new, Confoo 2011Bachkoutou Toutou
 
Zend Framework 2 - Basic Components
Zend Framework 2  - Basic ComponentsZend Framework 2  - Basic Components
Zend Framework 2 - Basic ComponentsMateusz Tymek
 
A quick start on Zend Framework 2
A quick start on Zend Framework 2A quick start on Zend Framework 2
A quick start on Zend Framework 2Enrico Zimuel
 

Viewers also liked (9)

zend framework 2
zend framework 2zend framework 2
zend framework 2
 
Zend Framework 2 kommt bald - und jetzt?
Zend Framework 2 kommt bald - und jetzt?Zend Framework 2 kommt bald - und jetzt?
Zend Framework 2 kommt bald - und jetzt?
 
Zend MVC pattern based Framework – Best for Enterprise web applications
Zend MVC pattern based Framework – Best for Enterprise web applicationsZend MVC pattern based Framework – Best for Enterprise web applications
Zend MVC pattern based Framework – Best for Enterprise web applications
 
Zend Framework 2 Components
Zend Framework 2 ComponentsZend Framework 2 Components
Zend Framework 2 Components
 
Zend Framework 2
Zend Framework 2Zend Framework 2
Zend Framework 2
 
Zend Framework Introduction
Zend Framework IntroductionZend Framework Introduction
Zend Framework Introduction
 
Zend Framework 2, What's new, Confoo 2011
Zend Framework 2, What's new, Confoo 2011Zend Framework 2, What's new, Confoo 2011
Zend Framework 2, What's new, Confoo 2011
 
Zend Framework 2 - Basic Components
Zend Framework 2  - Basic ComponentsZend Framework 2  - Basic Components
Zend Framework 2 - Basic Components
 
A quick start on Zend Framework 2
A quick start on Zend Framework 2A quick start on Zend Framework 2
A quick start on Zend Framework 2
 

Similar to Unit Test for ZF SlideShare Component

Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentKaiuwe
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentKaiuwe
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentDiego Delon
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentDiego Delon
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentDiego Delon
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentDiego Delon
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentDiego Delon
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentDiego Delon
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentDiego Delon
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare Componentzftalk
 

Similar to Unit Test for ZF SlideShare Component (20)

Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare Component
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare Component
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare Component
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare Component
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare Component
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare Component
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare Component
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare Component
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare Component
 
Zend
ZendZend
Zend
 
green
greengreen
green
 
Demo
DemoDemo
Demo
 
first pitch
first pitchfirst pitch
first pitch
 
werwr
werwrwerwr
werwr
 
sdfsdf
sdfsdfsdfsdf
sdfsdf
 
college
collegecollege
college
 
first pitch
first pitchfirst pitch
first pitch
 
Greenathan
GreenathanGreenathan
Greenathan
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare Component
 
first pitch
first pitchfirst pitch
first pitch
 

Unit Test for ZF SlideShare Component

  • 1. Copyright © 2006, Zend Technologies Inc. Introducing: Zend Framework John Coggeshall
  • 2. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 11 Zend Framework from 10,000 feet
  • 12. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 14 $ svn checkout http://framework.zend.com/svn/framework/trunk • 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
  • 15. Dec 23, 2014 # 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. Dec 23, 2014 # 16 MVC Pattern • MVC, or Model View Controller 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. Dec 23, 2014 # 17 Example Controller • Note: indexAction() is declared abstract in Zend_Controller_Action, and therefore must be defined in any Action/Page controller
  • 18. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 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
  • 22. Copyright © 2006, Zend Technologies Inc. Input Filtering
  • 23. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 26 Sending HTML mail is now really easy
  • 27. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 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. Dec 23, 2014 # 30 Adding documents to the index
  • 31. Dec 23, 2014 # 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
  • 32. Copyright © 2006, Zend Technologies Inc. Questions?