This is an old revision of the document!


Zend Framework Evaluation

Introduction

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

Features

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.

Data/ORM

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

Development

  • 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
    • Ability to test ZF MVC projects by utilising the Request and Response objects. Resource

Documentation

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

Administration

Please reference the Administration evaluation on the Sahana Framework Evaluation

Features

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

  • Support for a number of pre-defined template styles within a single app
  • Template inheritance (do changes to parent templates reflect in the children)
  • Template flexibility
  • 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

Optimization/Efficiency

  • 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

Installation

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

lp:~shn-zf-ex/+junk/shn-zf-ex

Guidelines

What specific guidelines did your test follow?

Process

Outline the process for your testing.

References

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

Results

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


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