SlideShare a Scribd company logo
1 of 32
Introducing: Zend Framework
John Coggeshall

Copyright © 2006, Zend Technologies Inc.
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 5, 2013

#2
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 5, 2013

#3
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 5, 2013

#4
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 5, 2013

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

Dec 5, 2013

#6
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 5, 2013

#7
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 5, 2013

#8
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 5, 2013

#9
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 5, 2013

# 10
Zend Framework from 10,000 feet

Dec 5, 2013

# 11
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 5, 2013

# 12
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 5, 2013

# 13
Getting Zend Framework
• You can either get the framework preview

release or check out the latest repository version

• Preview Release: http://framework.zend.com/
• Repository:
$ svn checkout http://framework.zend.com/svn/framework/trunk

Dec 5, 2013

# 14
Installing Zend Framework
• Installing the framework is very easy, just modify
your include_path to include the library/
directory

From php.ini:
……
include_path=“.:/usr/local/lib/php:/usr/local/lib/ZendFramework”
……

From .htaccess
……
php_value include_path “.:/usr/local/lib/php:/usr/local/lib/ZendFramework”
……

Dec 5, 2013

# 15
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 5, 2013

# 16
Example Controller

• Note: indexAction() is declared abstract in

Zend_Controller_Action, and therefore must be
defined in any Action/Page controller

Dec 5, 2013

# 17
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 5, 2013

# 18
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 5, 2013

# 19
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 5, 2013

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

Dec 5, 2013

# 21
Input Filtering

Copyright © 2006, Zend Technologies Inc.
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 5, 2013

# 23
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 5, 2013

# 24
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 5, 2013

# 25
Sending HTML mail is now really easy

Dec 5, 2013

# 26
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 5, 2013

# 27
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 5, 2013

# 28
Using Zend_Search
• Using Zend Search is very easy

• The search engine also boasts a parser for google-like searching: zend php -java

Dec 5, 2013

# 29
Adding documents to the index

Dec 5, 2013

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

Dec 5, 2013

# 31
Questions?

Copyright © 2006, Zend Technologies Inc.

More Related Content

What's hot

PowerShell 101 - What is it and Why should YOU Care!
PowerShell 101 - What is it and Why should YOU Care!PowerShell 101 - What is it and Why should YOU Care!
PowerShell 101 - What is it and Why should YOU Care!Thomas Lee
 
Test driven development v1.0
Test driven development v1.0Test driven development v1.0
Test driven development v1.0Ganesh Kondal
 
La vita nella corsia di sorpasso; A tutta velocità, XPages!
La vita nella corsia di sorpasso; A tutta velocità, XPages!La vita nella corsia di sorpasso; A tutta velocità, XPages!
La vita nella corsia di sorpasso; A tutta velocità, XPages!Ulrich Krause
 
PHP and Zend Framework on Windows
PHP and Zend Framework on WindowsPHP and Zend Framework on Windows
PHP and Zend Framework on WindowsShahar Evron
 
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
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCUlrich Krause
 
Php Frameworks
Php FrameworksPhp Frameworks
Php FrameworksRyan Davis
 
Zend con practical-zf1-zf2-migration
Zend con practical-zf1-zf2-migrationZend con practical-zf1-zf2-migration
Zend con practical-zf1-zf2-migrationClark Everetts
 
5 hs mpostcustomizationrenefonseca
5 hs mpostcustomizationrenefonseca5 hs mpostcustomizationrenefonseca
5 hs mpostcustomizationrenefonsecassuserfadb24
 

What's hot (10)

PowerShell 101 - What is it and Why should YOU Care!
PowerShell 101 - What is it and Why should YOU Care!PowerShell 101 - What is it and Why should YOU Care!
PowerShell 101 - What is it and Why should YOU Care!
 
Test driven development v1.0
Test driven development v1.0Test driven development v1.0
Test driven development v1.0
 
Zend framework 01 - introduction
Zend framework 01 - introductionZend framework 01 - introduction
Zend framework 01 - introduction
 
La vita nella corsia di sorpasso; A tutta velocità, XPages!
La vita nella corsia di sorpasso; A tutta velocità, XPages!La vita nella corsia di sorpasso; A tutta velocità, XPages!
La vita nella corsia di sorpasso; A tutta velocità, XPages!
 
PHP and Zend Framework on Windows
PHP and Zend Framework on WindowsPHP and Zend Framework on Windows
PHP and Zend Framework on Windows
 
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
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVC
 
Php Frameworks
Php FrameworksPhp Frameworks
Php Frameworks
 
Zend con practical-zf1-zf2-migration
Zend con practical-zf1-zf2-migrationZend con practical-zf1-zf2-migration
Zend con practical-zf1-zf2-migration
 
5 hs mpostcustomizationrenefonseca
5 hs mpostcustomizationrenefonseca5 hs mpostcustomizationrenefonseca
5 hs mpostcustomizationrenefonseca
 

Viewers also liked

Redakční systémy pro odborná periodika
Redakční systémy pro odborná periodikaRedakční systémy pro odborná periodika
Redakční systémy pro odborná periodikaKarolinumPress
 
YANA SHKARUPA resume
YANA SHKARUPA resumeYANA SHKARUPA resume
YANA SHKARUPA resumeYana Shkarupa
 
Tv advert detailed analysis your choice
Tv advert detailed analysis   your choiceTv advert detailed analysis   your choice
Tv advert detailed analysis your choicehfhrehgkerg
 
Debate coam mayo 2015
Debate coam mayo 2015Debate coam mayo 2015
Debate coam mayo 2015jnavarrog
 

Viewers also liked (6)

Redakční systémy pro odborná periodika
Redakční systémy pro odborná periodikaRedakční systémy pro odborná periodika
Redakční systémy pro odborná periodika
 
το ταξιδι στο διαστημα
το ταξιδι στο διαστηματο ταξιδι στο διαστημα
το ταξιδι στο διαστημα
 
YANA SHKARUPA resume
YANA SHKARUPA resumeYANA SHKARUPA resume
YANA SHKARUPA resume
 
Tv advert detailed analysis your choice
Tv advert detailed analysis   your choiceTv advert detailed analysis   your choice
Tv advert detailed analysis your choice
 
Debate coam mayo 2015
Debate coam mayo 2015Debate coam mayo 2015
Debate coam mayo 2015
 
INTEGRATION OF SHARIAH WITH SECULAR ECONOMICS CREATING ISLAMIC ECONOMICS AND ...
INTEGRATION OF SHARIAH WITH SECULAR ECONOMICS CREATING ISLAMIC ECONOMICS AND ...INTEGRATION OF SHARIAH WITH SECULAR ECONOMICS CREATING ISLAMIC ECONOMICS AND ...
INTEGRATION OF SHARIAH WITH SECULAR ECONOMICS CREATING ISLAMIC ECONOMICS AND ...
 

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 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 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 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 ComponentKaiuwe
 
Unit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentUnit Test for ZF SlideShare Component
Unit Test for ZF SlideShare ComponentKaiuwe
 

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

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 

Recently uploaded (20)

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

Unit Test for ZF SlideShare Component

  • 1. Introducing: Zend Framework John Coggeshall Copyright © 2006, Zend Technologies Inc.
  • 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 5, 2013 #2
  • 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 5, 2013 #3
  • 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 5, 2013 #4
  • 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 5, 2013 #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) Dec 5, 2013 #6
  • 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 5, 2013 #7
  • 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 5, 2013 #8
  • 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 5, 2013 #9
  • 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 5, 2013 # 10
  • 11. Zend Framework from 10,000 feet Dec 5, 2013 # 11
  • 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 5, 2013 # 12
  • 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 5, 2013 # 13
  • 14. Getting Zend Framework • You can either get the framework preview release or check out the latest repository version • Preview Release: http://framework.zend.com/ • Repository: $ svn checkout http://framework.zend.com/svn/framework/trunk Dec 5, 2013 # 14
  • 15. Installing Zend Framework • Installing the framework is very easy, just modify your include_path to include the library/ directory From php.ini: …… include_path=“.:/usr/local/lib/php:/usr/local/lib/ZendFramework” …… From .htaccess …… php_value include_path “.:/usr/local/lib/php:/usr/local/lib/ZendFramework” …… Dec 5, 2013 # 15
  • 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 5, 2013 # 16
  • 17. Example Controller • Note: indexAction() is declared abstract in Zend_Controller_Action, and therefore must be defined in any Action/Page controller Dec 5, 2013 # 17
  • 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 5, 2013 # 18
  • 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 5, 2013 # 19
  • 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 5, 2013 # 20
  • 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 Dec 5, 2013 # 21
  • 22. Input Filtering Copyright © 2006, Zend Technologies Inc.
  • 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 5, 2013 # 23
  • 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 5, 2013 # 24
  • 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 5, 2013 # 25
  • 26. Sending HTML mail is now really easy Dec 5, 2013 # 26
  • 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 5, 2013 # 27
  • 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 5, 2013 # 28
  • 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 5, 2013 # 29
  • 30. Adding documents to the index Dec 5, 2013 # 30
  • 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 Dec 5, 2013 # 31
  • 32. Questions? Copyright © 2006, Zend Technologies Inc.