Zend Framework Evaluation


Zend framework is a use-at-will framework which does not limit you to a single development paradigm or pattern. It consist of loosely-coupled component library simplified to provide most of the functionality needed by a developer.

Zend Framework Site

Zend Framework Wikipedia


On the Sahana Framework Evaluation page there is a detailed list of ideal features. What of these requirements does this framework have? Are there other useful features not listed or that are particularly exceptional? Please use the categories below to help facilitation your evaluation.


The default database components provided by ZF features Table Data Gateway, and Row Data Gateway design patterns.

  • Database Engine support
    • Zend_Db provides Adapter classes to PDO drivers for the following RDBMS brands:
      • IBM DB2 and Informix Dynamic Server (IDS), using the » pdo_ibm PHP extension
      • MySQL, using the » pdo_mysql PHP extension
      • Microsoft SQL Server, using the » pdo_dblib PHP extension
      • Oracle, using the » pdo_oci PHP extension
      • PostgreSQL, using the » pdo_pgsql PHP extension
      • SQLite, using the » pdo_sqlite PHP extension
    • In addition, Zend_Db provides Adapter classes that utilize PHP database extensions for the following RDBMS brands:
      • MySQL, using the » mysqli PHP extension
      • Oracle, using the » oci8 PHP extension
      • IBM DB2 and DB2/i5, using the » ibm_db2 PHP extension
      • Firebird/Interbase, using the » php_interbase PHP extension
  • ORM Engine Support
    • If you are interested in an ORM a third party library like Doctrine can be easily integrate in to ZF.
  • Object Views
  • Transaction History with rollback
    • Use the beginTransaction() method to initiate a transaction. Subsequent SQL statements are executed in the context of the same transaction until you resolve it explicitly.
    • To resolve the transaction, use either the commit() or rollBack() methods. The commit() method marks changes made during your transaction as committed
    • The rollBack() method does the opposite: it discards the changes made during your transaction
  • Auditing and Statistics
    • Zend_Db_Profiler can be enabled to allow profiling of queries. Profiles include the queries processed by the adapter as well as elapsed time to run the queries, allowing inspection of the queries that have been performed without needing to add extra debugging code to classes.
  • Custom Data Types
  • Triggers and constraints

We will be using Doctrine ORM with Zend framework. As you may already know it is a powerful ORM available for PHP. ZF developers has mentioned that in the near future they will support Doctrine integration with ZF which means standard ZF release will contain Doctrine integration components. Till that happen we can use components available in the community to integrate both.http://www.doctrine-project.org/


  • Error Handling/Exception Handling
    • Uniform Exception Framework
      • Zend_Exception is the base exception class. All other components throw its exception specific exceptions that are inherited from Zend_Exception
    • Proper/Standard Error Codes
      • Transparency
      • Verbosity easily transfigurable
  • QA/Testing
    • Framework components are well tested, according to ZF standards unit test should cover more than 80% for a component to be included in a release.
    • ZF use PHPUnit 3 for unit testing
    • You have the ability to test ZF MVC projects by utilising the Request and Response objects. Resource. Using this feature you can automate functional tests.


  • External (by the framework's community)
    • Has a refrence guide which is available in 6 languages. Link
    • It is very detail and has lots of code example which makes it easy to understand.
    • The documentation get updated with every new release and you can refer documentation of the previous releases if needed.
    • Also has a community wiki where additional stuff are documented.
  • Internal (within the framework itself)


  • ACL support/library: The default ACL library is called Zend_ACL which is a Roal based acl library. One feature that unique to this library is that it is storage media independent. You have the compleat freedom to stroe ACl permissions either in DB or a file.


  • Standards Validation Library
    • ISO
    • IEEE
    • W3C compliance
      • XML
      • XHTML (version & strictness)
      • WCAG
      • Other
    • Other standards bodies
    • Custom validation library support (eg, Regex)
    • Code sanitation
  • Modularity
    • Ease of development of modular applications
    • Supports template modules for rapid development of additional modules
    • Ability enable / disable independent of removal
    • Versioning & compatibility support (eg, works with Sahana v 1.0 –> 1.5.x)
    • Upgradability
  • Client support
    • Browser support
    • Graceful Degradation (ex: browser with no javascript or other libraries)
    • Not dependent on AJAX
  • Web Services
    • SOAP : Zend_Soap has a SOAP client and a server implementation.
    • JSON : Zend_Json is there to easily encode/decode JSON strings ( Used in POC ). Also there is a Zend_Json_Server - JSON-RPC server which implements JSON-RPC specification.
    • ATOM/RSS : Has support for both publishing and consuming feeds though Zend_Feed package.
    • REST : Has Zend_Rest_Controller to easily develop REST based services. Also has separate REST client and server implementation. Community is in more favour of RESTful services ( Sample service is implemented in the POC )
    • Custom
  • Geospacial Capabilities
    • Standards
    • Engines
    • Modular data abstraction (multiple dbs for different purposes)
    • 3rd party data provider support
  • Database Migration/Upgrade
    • Features
    • How does it compare to Rails RAKE?
  • Templating

Zend_View is responsible for handling the View part of MVC. By default it uses basic php in its templates but provide the capability to support other template engines. Any third party template engine can be integrate with Zend_View by implementing Zend_View_Interface and for most common template engines implementations are already there. The Zend Application allows you to have site wide layouts and the content will be generated using action templates. Reusable parts of the templates can put in to par-tiles or view-helpers which will minimise the code duplication. Also the view templates them self can be reused in multiple actions.

  • Performance
    • Statistics & conclusions
    • Test bed specification
    • Relevant software versions
    • Date of testing
    • Tester / reporter
  • Scalability
    • Statistics & conclusions
    • Test bed specification
    • Relevant software versions
    • Date of testing
    • Tester / report
  • Internationalisation
    • Contains a package to manage I18n easily featuring date and currency formatting to selected locale.
    • Has a separate package for translations which support most of the common translation libraries that are available. (Ex : gettext, tbx , tmx, Qt and etc..) http://framework.zend.com/manual/en/zend.translate.adapter.html


  • Has Zend_Cach as a base component which can utilise wide range of caching media ( file , memcache , database)
  • Indexing
    • Automatic / trained index features
    • Manual tuning
  • Options for pre-computing data
  • Other efficiency features


  • Requirements
    • Resource requirements
    • Complexity/Skill level required is standard
    • Packaging ( Can be downloaded from site as zip or tar.gz)
    • How are updates handled? ( Manual )
    • Language Support ( Localised to many languages)
  • Out-of-box OS support

Will support most of the common OS.

  • Licensing
    • New BSD
    • Need to sign a CLA to contribute code back to the framework.

Major Implementations

You can find a list of projects based on ZF hear. One project that can be highlighted is Magento which is one of the popular e-commerce platform.

Evaluation and Testing

Have you tested the framework with Sahana? Please detail your testing for others to review and replicate. Be sure to include a label on your results so in the event of another persons testing more than one group can share.

Zend Framework Evaluation

Goal of Testing

The test will cover following areas.

  • Configure ZF to support self containing modules.
  • Doctrine and ZF integration.
  • Sessions.
  • Translations.
  • Authentication and ACL.
  • REST services.
  • Unit testing

For more info visit ZF Experiment

Source Code

Source is hosted on Launchpad in an open group.



What specific guidelines did your test follow?


Outline the process for your testing.


Are there any reviews or reference sites you recommend or that influenced your testing?


Outline your results. How did it perform? Were there any problems or challenges? Describe how well it compared to the goals you had starting out.

Questions and Discussion

Do you or anyone else in the community have open questions on this framework? You can post your own questions for discussion or this space can be for others to ask you from. Be sure to sign your post using the Signature button above (all the way to the right).

QR Code
QR Code dev:zendframeworkeval (generated for current page)