KEMBAR78
Unit Test for ZF SlideShare Component | PPT
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?

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?