SlideShare a Scribd company logo
1 of 32
Copyright © 2006, Zend Technologies Inc.
Introducing: Zend Framework
John Coggeshall
Apr 11, 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
Apr 11, 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
Apr 11, 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.
Apr 11, 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
Apr 11, 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)
Apr 11, 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
Apr 11, 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.
Apr 11, 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
Apr 11, 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
Apr 11, 2014 # 11
Zend Framework from 10,000 feet
Apr 11, 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
Apr 11, 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!
Apr 11, 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
Apr 11, 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”
……
Apr 11, 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
Apr 11, 2014 # 17
Example Controller
• Note: indexAction() is declared abstract in
Zend_Controller_Action, and therefore must be
defined in any Action/Page controller
Apr 11, 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();
Apr 11, 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)
Apr 11, 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>);
Apr 11, 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
Apr 11, 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.)
Apr 11, 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
Apr 11, 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
Apr 11, 2014 # 26
Sending HTML mail is now really easy
Apr 11, 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
Apr 11, 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
Apr 11, 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
Apr 11, 2014 # 30
Adding documents to the index
Apr 11, 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

Learn PHP Lacture1
Learn PHP Lacture1Learn PHP Lacture1
Learn PHP Lacture1
ADARSH BHATT
 

What's hot (9)

Strategic Modernization with PHP on IBM i
Strategic Modernization with PHP on IBM iStrategic Modernization with PHP on IBM i
Strategic Modernization with PHP on IBM i
 
Require js training
Require js trainingRequire js training
Require js training
 
Managing OSS license obligations
Managing OSS license obligationsManaging OSS license obligations
Managing OSS license obligations
 
Learn PHP Lacture1
Learn PHP Lacture1Learn PHP Lacture1
Learn PHP Lacture1
 
Browser tools that make web development easier
Browser tools that make web development easierBrowser tools that make web development easier
Browser tools that make web development easier
 
Web services on IBM i with PHP and Zend Framework
Web services on IBM i with PHP and Zend FrameworkWeb services on IBM i with PHP and Zend Framework
Web services on IBM i with PHP and Zend Framework
 
Running open source PHP applications on you IBM i
Running open source PHP applications on you IBM iRunning open source PHP applications on you IBM i
Running open source PHP applications on you IBM i
 
From Zero to ZF: Your first zend framework project on ibm i
From Zero to ZF: Your first zend framework project on ibm iFrom Zero to ZF: Your first zend framework project on ibm i
From Zero to ZF: Your first zend framework project on ibm i
 
A Tale of Two Toolkits
A Tale of Two ToolkitsA Tale of Two Toolkits
A Tale of Two Toolkits
 

Viewers also liked (7)

Inspeções de 2ª parte e Diligenciamento
Inspeções de 2ª parte e DiligenciamentoInspeções de 2ª parte e Diligenciamento
Inspeções de 2ª parte e Diligenciamento
 
Padrao de inovacao tecnologica
Padrao de inovacao tecnologicaPadrao de inovacao tecnologica
Padrao de inovacao tecnologica
 
Jmart447 M3ex2
Jmart447 M3ex2Jmart447 M3ex2
Jmart447 M3ex2
 
Intégration des médias sociaux dans la gestion de l'urgence
Intégration des médias sociaux dans la gestion de l'urgenceIntégration des médias sociaux dans la gestion de l'urgence
Intégration des médias sociaux dans la gestion de l'urgence
 
Pesquisa Eleitoral IPMN/LeiaJá para governador e senador em PE
Pesquisa Eleitoral IPMN/LeiaJá para governador e senador em PEPesquisa Eleitoral IPMN/LeiaJá para governador e senador em PE
Pesquisa Eleitoral IPMN/LeiaJá para governador e senador em PE
 
Doxa Roamler
Doxa RoamlerDoxa Roamler
Doxa Roamler
 
Www.thehorizonoutlet.com activation center
Www.thehorizonoutlet.com activation centerWww.thehorizonoutlet.com activation center
Www.thehorizonoutlet.com activation center
 

Similar to Unit Test for ZF SlideShare Component

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
 
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
 
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
 

Unit Test for ZF SlideShare Component

  • 1. Copyright © 2006, Zend Technologies Inc. Introducing: Zend Framework John Coggeshall
  • 2. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 2014 # 11 Zend Framework from 10,000 feet
  • 12. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 2014 # 17 Example Controller • Note: indexAction() is declared abstract in Zend_Controller_Action, and therefore must be defined in any Action/Page controller
  • 18. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 2014 # 26 Sending HTML mail is now really easy
  • 27. Apr 11, 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. Apr 11, 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. Apr 11, 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. Apr 11, 2014 # 30 Adding documents to the index
  • 31. Apr 11, 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?