compared with
Current by Wil Sinclair
on Sep 19, 2008 07:36.

Key
This line was removed.
This word was removed. This word was added.
This line was added.

Changes (120)

View Page History
h1. What is Zend Framework?
<h1>What is Zend Framework?</h1>

<p>Zend Framework is a simple, straightforward, open-source [software framework|http://en.wikipedia.org/wiki/Software_framework] <a href="http://en.wikipedia.org/wiki/Software_framework">software framework</a> for PHP 5 designed to eliminate the tedious details of coding and let you focus on the big picture. Its strength is in its highly-modular [MVC|http://en.wikipedia.org/wiki/Model-view-controller] <a href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a> design, making your code more reusable and easier to maintain.</p>
Still not sure? Visit [Is Zend Framework right for me?] for more information.

h1. Goals of Zend Framework components
<h1>Goals of Zend Framework components</h1>

<p>The following lists the components of Zend Framework, with a 2-3 line description and list of goals for the value that each component provides.</p>

h2. Zend_Acl
<h2>Zend_Acl</h2>

<p>Zend_Acl provides lightweight and flexible access control list (ACL) functionality and privileges management.</p>
- includes basic implementations for Roles and Resources
<ul class="alternate">
<li>includes basic implementations for Roles and Resources</li>
- Role <li>Role and Resource objects may be instances of user-defined classes</li>
- Resource tree supports rule inheritance
- supports multiple inheritance of access control rules among Roles
- supports conditional rule applicability via an assertion interface
<li>Resource tree supports rule inheritance</li>
<li>supports multiple inheritance of access control rules among Roles</li>
<li>supports conditional rule applicability via an assertion interface</li>
</ul>

h2. Zend_Auth

Zend_Auth provides an API for authentication and includes concrete authentication adapters for common use case scenarios.
- provides adapter interface for customized authentication mechanisms
- identity storage is abstracted for simple customization
- simple and extensible API
<h2>Zend_Auth</h2>

h2. Zend_Cache
<p>Zend_Auth provides an API for authentication and includes concrete authentication adapters for common use case scenarios.</p>
<ul class="alternate">
<li>provides adapter interface for customized authentication mechanisms</li>
<li>identity storage is abstracted for simple customization</li>
<li>simple and extensible API</li>
</ul>

Zend_Cache provides a flexible approach toward caching data, including tagging, manipulating, iterating, and removing subsets.
- provides multiple storage backends (File, Sqlite, Memcached...)
- provides multiple frontends (helpers for caching function or method calls, for caching a whole page...)
- simple and flexible for generic uses

h2. Zend_Config
<h2>Zend_Cache</h2>

Zend_Config simplifies the use of configuration data for web applications.
- provides a property-based interface for reading configuration data
- supports a variety of hierarchical data storage formats
- supports inheritance of configuration data from one section into another
<p>Zend_Cache provides a flexible approach toward caching data, including tagging, manipulating, iterating, and removing subsets.</p>
<ul class="alternate">
<li>provides multiple storage backends (File, Sqlite, Memcached...)</li>
<li>provides multiple frontends (helpers for caching function or method calls, for caching a whole page...)</li>
<li>simple and flexible for generic uses</li>
</ul>

h2. Zend_Console_Getopt

Command-line PHP applications benefit from this convenient object-oriented interface for declaring, parsing, and reporting command-line arguments and options.
- supports GNU getopt syntax
- supports more extensive option declaration syntax
- supports automatic reporting of option usage help
<h2>Zend_Config</h2>

h2. Zend_Controller and Zend_View
<p>Zend_Config simplifies the use of configuration data for web applications.</p>
<ul class="alternate">
<li>provides a property-based interface for reading configuration data</li>
<li>supports a variety of hierarchical data storage formats</li>
<li>supports inheritance of configuration data from one section into another</li>
</ul>

These components provide the infrastructure for a Model-View-Controller website.
- provides simple and extensible MVC pattern
- provides PHP-based template engine by default
- provides support for application modules
- provides configuration-less architecture

h2. Zend_Date
<h2>Zend_Console_Getopt</h2>

Zend_Date offers a detailed, but simple API for manipulating dates and times.
- supports I18N and L10N throughout its API
- supports ISO and GNU/PHP standard tokens
- provides handling for dates bigger than 64bit
- provides sunset and sunrise calculation based on cities
<p>Command-line PHP applications benefit from this convenient object-oriented interface for declaring, parsing, and reporting command-line arguments and options.</p>
<ul class="alternate">
<li>supports GNU getopt syntax</li>
<li>supports more extensive option declaration syntax</li>
<li>supports automatic reporting of option usage help</li>
</ul>

h2. Zend_Db

This is a lightweight database access layer, providing an interface to PDO and other database extensions in PHP. It includes adapters for each database driver, a query profiler, and an API to construct most SELECT statements.
- provides abstract interface to multiple PHP database extensions
- based on PDO interface, but extends beyond that
- provides query profiler
- provides query builder
- provides robust SQL support including parameters and quoting
<h2>Zend_Controller and Zend_View</h2>

h2. Zend_Db_Table
<p>These components provide the infrastructure for a Model-View-Controller website.</p>
<ul class="alternate">
<li>provides simple and extensible MVC pattern</li>
<li>provides PHP-based template engine by default</li>
<li>provides support for application modules</li>
<li>provides configuration-less architecture</li>
</ul>

The Zend_Db_Table component is a lightweight solution for object-oriented programming with databases.
- implements table data gateway and row data gateway patterns
- discovers database metadata without the need for complex configuration files
- provides a solution for querying related tables

h2. Zend_Feed
<h2>Zend_Date</h2>

This component provides a very simple way to work with live syndicated feeds.
- consumes RSS and Atom feeds
- provides utilities for discovering feed links
- imports feeds from multiple sources
- providers feed building and posting operations
<p>Zend_Date offers a detailed, but simple API for manipulating dates and times.</p>
<ul class="alternate">
<li>supports I18N and L10N throughout its API</li>
<li>supports ISO and GNU/PHP standard tokens</li>
<li>provides handling for dates bigger than 64bit</li>
<li>provides sunset and sunrise calculation based on cities</li>
</ul>

h2. Zend_Filter / Zend_Validate

The input filtering component encourages the development of secure websites by providing the basic tools necessary for input filtering and validation.
- provides an extensible architecture for filters and validators
- supports UTF text data
- supports user-configurable messages for validation failures
<h2>Zend_Db</h2>

h2. Zend_Filter_Input
<p>This is a lightweight database access layer, providing an interface to PDO and other database extensions in PHP. It includes adapters for each database driver, a query profiler, and an API to construct most SELECT statements.</p>
<ul class="alternate">
<li>provides abstract interface to multiple PHP database extensions</li>
<li>based on PDO interface, but extends beyond that</li>
<li>provides query profiler</li>
<li>provides query builder</li>
<li>provides robust SQL support including parameters and quoting</li>
</ul>

This is a configurable solution for declaring and enforcing filtering and validation rules. This component serves as a "cage" for input data, so they are available to your application only after being validated.
- does not require configuration files
- supports declarative syntax for applying rules to collections of input data
- supports chaining of filters and validators
- supports automatic escaping of validated data values

h2. Zend Google Data Client
<h2>Zend_Db_Table</h2>

The Google Data APIs provide read/write access to services hosted at google.com, for example, Spreadsheets, Calendar, Blogger, and CodeSearch.
- supports both authentication mechanisms of Google Data servers
- supports queries and posting changes against Google Data services
- supports service-specific element kinds in an object-oriented interface
- matches functionality and design of other Google Data API clients
<p>The Zend_Db_Table component is a lightweight solution for object-oriented programming with databases.</p>
<ul class="alternate">
<li>implements table data gateway and row data gateway patterns</li>
<li>discovers database metadata without the need for complex configuration files</li>
<li>provides a solution for querying related tables</li>
</ul>

h2. Zend_Http_Client

This component provides a client for the HTTP protocol, without requiring any PHP extensions. It drives our web services
components. <h2>Zend_Feed</h2>
- supports URL validation
- supports cookies
- supports proxy servers

h2. Zend_Json
<p>This component provides a very simple way to work with live syndicated feeds.</p>
<ul class="alternate">
<li>consumes RSS and Atom feeds</li>
<li>provides utilities for discovering feed links</li>
<li>imports feeds from multiple sources</li>
<li>providers feed building and posting operations</li>
</ul>

Easily convert PHP structures into JSON and vice versa for use in AJAX-enabled applications.
- uses PHP's ext/json when available
- supports decoding Javascript objects to native PHP structures
- supports encoding native PHP objects to JSON notation

h2. Zend_Loader
<h2>Zend_Filter / Zend_Validate</h2>

Load files, classes, and resources dynamically in your PHP application.
- supports SPL autoloader
- supports include_path
- provides exception-based failure mechanism
<p>The input filtering component encourages the development of secure websites by providing the basic tools necessary for input filtering and validation.</p>
<ul class="alternate">
<li>provides an extensible architecture for filters and validators</li>
<li>supports UTF text data</li>
<li>supports user-configurable messages for validation failures</li>
</ul>

h2. Zend_Locale

Zend_Locale is the Framework's answer to the question, "How can the same application be used around the whole world?" This component is the foundation of Zend_Date, Zend_Translate, and others.
- provides access to CLDR, an international data repository for I18N issues, for all framework classes
- provides localizing of numbers
- provides normalizing of dates, times and numbers
<h2>Zend_Filter_Input</h2>

h2. Zend_Log
<p>This is a configurable solution for declaring and enforcing filtering and validation rules. This component serves as a &quot;cage&quot; for input data, so they are available to your application only after being validated.</p>
<ul class="alternate">
<li>does not require configuration files</li>
<li>supports declarative syntax for applying rules to collections of input data</li>
<li>supports chaining of filters and validators</li>
<li>supports automatic escaping of validated data values</li>
</ul>

Log data to the console, flat files, or a database. Its no-frills, simple, procedural API reduces the hassle of logging to one line and is perfect for cron jobs and error logs.
- provides a simple object-oriented interface inspired by log4j
- supports extensible output channels
- supports extensible output formats

h2. Zend_Mail and Zend_Mime
<h2>Zend Google Data Client</h2>

Almost every internet application needs to send email. Zend_Mail, assisted by Zend_Mime, creates email messages and sends them.
- supports attachments
- supports MIME types
- supports a variety of mail storage protocols
- supports multiple mail transport agents
- supports a variety of authentication mechanisms
<p>The Google Data APIs provide read/write access to services hosted at google.com, for example, Spreadsheets, Calendar, Blogger, and CodeSearch.</p>
<ul class="alternate">
<li>supports both authentication mechanisms of Google Data servers</li>
<li>supports queries and posting changes against Google Data services</li>
<li>supports service-specific element kinds in an object-oriented interface</li>
<li>matches functionality and design of other Google Data API clients</li>
</ul>

h2. Zend_Measure

Using Zend_Measure, you can convert measurements into different units of the same type. They can be added, subtracted and compared against each other.
- supports localized handling of measurements and numbers
- supports converting of measurements and numbers
<h2>Zend_Http_Client</h2>

h2. Zend_Memory
<p>This component provides a client for the HTTP protocol, without requiring any PHP extensions. It drives our web services<br />
components.</p>
<ul class="alternate">
<li>supports URL validation</li>
<li>supports cookies</li>
<li>supports proxy servers</li>
</ul>

Zend_Memory offers an API for managing data in a limited memory mode. A PHP developer can create a Zend_Memory object to store and access large amounts of data, which would exceed the memory usage limits imposed by some PHP environments.
- provide transparent mechanism to work with swappable memory blocks
- support all existing Zend_Cache backends as storage providers as well as 'None' backend which gives an ability to work in non-limited memory mode through the same API and with minimal overhead

h2. Zend_Pdf
<h2>Zend_Json</h2>

Portable Document Format (PDF) from Adobe is the de facto standard for cross-platform rich documents. Now, PHP applications can create or read PDF documents on the fly, without the need to call utilities from the shell, depend on PHP extensions, or pay licensing fees. Zend_PDF can even modify existing PDF documents.
- supports Adobe PDF file format
- parses PDF structure and provides access to elements
- creates or modifies PDF documents
- utilizes memory efficiently
<p>Easily convert PHP structures into JSON and vice versa for use in AJAX-enabled applications.</p>
<ul class="alternate">
<li>uses PHP's ext/json when available</li>
<li>supports decoding Javascript objects to native PHP structures</li>
<li>supports encoding native PHP objects to JSON notation</li>
</ul>

h2. Zend_Registry

This component provides an object-oriented storage mechanism for application-global data.
<h2>Zend_Loader</h2>

h2. Zend_Rest_Client / Zend_Rest_Server
<p>Load files, classes, and resources dynamically in your PHP application.</p>
<ul class="alternate">
<li>supports SPL autoloader</li>
<li>supports include_path</li>
<li>provides exception-based failure mechanism</li>
</ul>

Zend_Rest provides a simple, object oriented interface for consuming and providing XML-based REST web services.

Roy Fielding says:
{quote} <h2>Zend_Locale</h2>
REST enables intermediate processing by constraining messages to be self-descriptive: interaction is stateless between requests, standard methods and media types are used to indicate semantics and exchange information, and responses explicitly indicate cacheability.
{quote}

h2. Zend_Search_Lucene
<p>Zend_Locale is the Framework's answer to the question, &quot;How can the same application be used around the whole world?&quot; This component is the foundation of Zend_Date, Zend_Translate, and others.</p>
<ul class="alternate">
<li>provides access to CLDR, an international data repository for I18N issues, for all framework classes</li>
<li>provides localizing of numbers</li>
<li>provides normalizing of dates, times and numbers</li>
</ul>

The Apache Lucene engine is a powerful, feature-rich Java search engine that is flexible about document storage and supports many complex query types. Zend_Search_Lucene is a port of this engine written entirely in PHP 5
- allows PHP-powered websites to leverage powerful search capabilities without the need for web services or Java
- provides binary compatibility with Apache Lucene
- matches Apache Lucene in performance

h2. Zend_Service: Akismet, Amazon, Audioscrobbler, Delicious, Flickr, Simpy, StrikeIron and Yahoo\!
<h2>Zend_Log</h2>

Web services are important to the PHP developer creating the next generation of mashups and composite applications. The Zend Framework provides wrappers for service APIs from major providers to make it as simple as possible to use those web services from your PHP application.
- fetch web service data from popular providers with just a few lines of code
- simplified object-oriented API encapsulates the underlying protocols and formats
- features an ever-growing set of components to accommodate new and relevant services
<p>Log data to the console, flat files, or a database. Its no-frills, simple, procedural API reduces the hassle of logging to one line and is perfect for cron jobs and error logs.</p>
<ul class="alternate">
<li>provides a simple object-oriented interface inspired by log4j</li>
<li>supports extensible output channels</li>
<li>supports extensible output formats</li>
</ul>

h2. Zend_Session

Zend_Session helps manage and preserve session data across multiple page requests by the same client.
- provides an object-oriented interface to access session data
- provides optional security features to help protect against session hijacking
- supports namespaced access to the PHP session for interoperability
<h2>Zend_Mail and Zend_Mime</h2>

h2. Zend_Translate
<p>Almost every internet application needs to send email. Zend_Mail, assisted by Zend_Mime, creates email messages and sends them.</p>
<ul class="alternate">
<li>supports attachments</li>
<li>supports MIME types</li>
<li>supports a variety of mail storage protocols</li>
<li>supports multiple mail transport agents</li>
<li>supports a variety of authentication mechanisms</li>
</ul>

The Zend_Translate component provides the Zend Framework with message translation functionality.
- provides a simple and consistent object-oriented interface to translated message storage
- supports industry-standard message storage formats such as gettext, TMX, Qt, XLIFF and others
- provides thread-safe gettext implementation

h2. Zend_Uri
<h2>Zend_Measure</h2>

Zend_Uri is a component that aids in manipulating and validating Uniform Resource Identifiers (URIs).
<p>Using Zend_Measure, you can convert measurements into different units of the same type. They can be added, subtracted and compared against each other.</p>
<ul class="alternate">
<li>supports localized handling of measurements and numbers</li>
<li>supports converting of measurements and numbers</li>
</ul>

h2. Zend_XmlRpc

<h2>Zend_Memory</h2>

<p>Zend_Memory offers an API for managing data in a limited memory mode. A PHP developer can create a Zend_Memory object to store and access large amounts of data, which would exceed the memory usage limits imposed by some PHP environments.</p>
<ul class="alternate">
<li>provide transparent mechanism to work with swappable memory blocks</li>
<li>support all existing Zend_Cache backends as storage providers as well as 'None' backend which gives an ability to work in non-limited memory mode through the same API and with minimal overhead</li>
</ul>


<h2>Zend_Pdf</h2>

<p>Portable Document Format (PDF) from Adobe is the de facto standard for cross-platform rich documents. Now, PHP applications can create or read PDF documents on the fly, without the need to call utilities from the shell, depend on PHP extensions, or pay licensing fees. Zend_PDF can even modify existing PDF documents.</p>
<ul class="alternate">
<li>supports Adobe PDF file format</li>
<li>parses PDF structure and provides access to elements</li>
<li>creates or modifies PDF documents</li>
<li>utilizes memory efficiently</li>
</ul>


<h2>Zend_Registry</h2>

<p>This component provides an object-oriented storage mechanism for application-global data.</p>

<h2>Zend_Rest_Client / Zend_Rest_Server</h2>

<p>Zend_Rest provides a simple, object oriented interface for consuming and providing XML-based REST web services.</p>

<p>Roy Fielding says:</p>
<blockquote>
<p>REST enables intermediate processing by constraining messages to be self-descriptive: interaction is stateless between requests, standard methods and media types are used to indicate semantics and exchange information, and responses explicitly indicate cacheability.</p></blockquote>

<h2>Zend_Search_Lucene</h2>

<p>The Apache Lucene engine is a powerful, feature-rich Java search engine that is flexible about document storage and supports many complex query types. Zend_Search_Lucene is a port of this engine written entirely in PHP 5</p>
<ul class="alternate">
<li>allows PHP-powered websites to leverage powerful search capabilities without the need for web services or Java</li>
<li>provides binary compatibility with Apache Lucene</li>
<li>matches Apache Lucene in performance</li>
</ul>


<h2>Zend_Service: Akismet, Amazon, Audioscrobbler, Delicious, Flickr, Simpy, StrikeIron and Yahoo!</h2>

<p>Web services are important to the PHP developer creating the next generation of mashups and composite applications. The Zend Framework provides wrappers for service APIs from major providers to make it as simple as possible to use those web services from your PHP application.</p>
<ul class="alternate">
<li>fetch web service data from popular providers with just a few lines of code</li>
<li>simplified object-oriented API encapsulates the underlying protocols and formats</li>
<li>features an ever-growing set of components to accommodate new and relevant services</li>
</ul>


<h2>Zend_Session</h2>

<p>Zend_Session helps manage and preserve session data across multiple page requests by the same client.</p>
<ul class="alternate">
<li>provides an object-oriented interface to access session data</li>
<li>provides optional security features to help protect against session hijacking</li>
<li>supports namespaced access to the PHP session for interoperability</li>
</ul>


<h2>Zend_Translate</h2>

<p>The Zend_Translate component provides the Zend Framework with message translation functionality.</p>
<ul class="alternate">
<li>provides a simple and consistent object-oriented interface to translated message storage</li>
<li>supports industry-standard message storage formats such as gettext, TMX, Qt, XLIFF and others</li>
<li>provides thread-safe gettext implementation</li>
</ul>


<h2>Zend_Uri</h2>

<p>Zend_Uri is a component that aids in manipulating and validating Uniform Resource Identifiers (URIs).</p>

<h2>Zend_XmlRpc</h2>

<p>Zend_XmlRpc makes it easy to communicate with and create XML-RPC services from PHP.</p>
- mimics PHP's SOAP extension
<ul class="alternate">
<li>mimics PHP's SOAP extension</li>
- flexible <li>flexible request and response implementation allows for use with non-HTTP services</li>
- server <li>server implementation allows attaching existing classes to quickly expose APIs as XML-RPC services</li>
</ul>