Zend Framework

Zend Framework
Developer(s) Zend Technologies
Initial release March 3, 2006 (2006-03-03)[1]
Stable release
3.0.0[2] / June 28, 2016 (2016-06-28)
Written in PHP 7
Operating system Cross-platform
License New BSD license
Website framework.zend.com

Zend Framework (ZF) is an open source, object-oriented web application framework implemented in PHP 5 and licensed under the New BSD License.[3] The framework is basically a collection of professional PHP[4] based packages.[5] The framework uses various packages by the use of Composer as part of its package dependency managers; some of them are PHP unit for testing all packages, Travis CI[6] for continuous Integration Services. Zend Framework provides to users a support of the Model View Controller (MVC)[7] in combination with Front Controller solution.[8] MVC implementation in Zend Framework has five main areas. The router[9] and dispatcher functions to decided which controller to run based on data from URL, and controller functions in combination with the model and view to develop and create the final web page.[5]

Licensing

Zend Framework is licensed under the Open Source Initiative (OSI)-approved New BSD License. For ZFv1 all code contributors must sign a Contributor License Agreement (CLA) based on the Apache Software Foundation’s CLA. The licensing and contribution policies were established to prevent intellectual property issues for commercial ZF users, according to Zend's Andi Gutmans.[10] ZF2 is CLA free.[11] There is also a longterm support available for the framework (long term support or LTS) for a total duration of 3 years. In order to do this one need to modify the Composer requirement for Zend Framework.[12]

$ composer require "zendframework/zendframework:~2.4.0"

This will result in modification of composer.json file and will pin the semantic version 2.4.0 which will ensure you get updates specifically from 2.4 series. If user want to use a different LTS then they need to specify X.Y.) version.

Installation

The Zend Framework documentation shows simple and easy to manage steps for the installation of the framework. The first step is the addition of the /library folder to your include path. A recommended advice; move library folder to another shared location.[13] The steps to include the Zend Framework is first to download the lates version, secondly download lates nightly snapshot, use a>>Subversion() client, exporting, and external definitions.[13] For downloading various options are available such as .zip and .tar.gz formate. The Snapshots are Zend Framework's bundled documentation which considers Subversion() client. After installation it is required that you must set up your include path to Zend in order to access the repository. According to Zend's documentation the repository can be found at http://framework.zend.com/svn/framework/standard/trunk.[13]

Anatomy of Zend Framework

The framework has a diverse structure and based on directories such as application, library, public, and tests. This is based because Zend is inclined towards keeping separation of different parts of application individually.[8] The functionality of application, library and public directory is used as per the request of the user.[5]

The recommended directory structure as shown by Zend Framework is given as:

<project name>/
application/
build/
cache/
configs/
controllers/
css/
data/
docs/
filters/
forms/
helpers/
images/
indexes/
jobs/
js/
layouts/
library/
locales/
logs/
models/
modules/
public/
scripts/
services/
sessions/
temp/
tests/
uploads/
views/
.htaccess
Bootstrap.php
application.ini
index.php

This directory contains all the nodes which are necessary to run the application and web server has no direct access to it.[14] The Framework further enahances by separation the business, display and control logic through separate directories which contains MVC framework.[14] Zend explanation also shows that the application directory contains the application directory and will house the MVC system with configuration, service and bootstrap file.[15] The config/ directory has application wide configurtions.[16] controllers/, model/, and views/ these are the default controller, view controller directories in the framework. These are simple and approachable layouts to start your application.[16] Controller/helpers/ here the actions helpers are stored and they will be namedspaced as Controller_Helper_ for default modules or <module?_Controller_Helper in different modules.[16] The module structure is also similar to that of the aforementioned directory structures and are:[17]

<modulename>
configs/
application.ini
controllers/
helpers/
forms/
layouts/
filters/
helpers/
scripts/
models/
services/
views/
filters/
helpers/
scripts/
Bootstrap.php

Creating project structure

Zend framework supports command line input to create structure of directories. We will use command line interface to start creating the directory structure for our project. This will give you complete structural understanding of directories. The interface supports and provides Zend_Tool interface giving a whole host of command functionalities.

  1. Open the command line interface, and change the hellozend directory.
  2. Windows users type: bin\zf\bat create project
  3. Linux/Mac users type: bin\zf.sh create project

This procedure will create Zend Framework project in a your own specified location. After running Zend_Toll it will create the basic application skeleton.[18] This will not only create directory structure but also all the basic elements of the MVC framework.[18] In order to get Apache functionalities the virtual host settings will be as:[18]

Listen 8080
<VirtualHost *: 8080>
DocumentRoot /User/keithpope/Sites/hellozend/public
</VirtualHost>

The basic directory structure created will be somewhat as mentioned in the aforementioned directory structure of Zend Framework with similar explanation. There is another aspect of Zend-Tool which is automatically initialized during installation is bootstrapping. Here the basic purpose is to initialize the request of page by developer. The main entery here created by Zend Framework is the Index file. Index file provides function to handle user request.This is the main entry point for all requests. Following shows the functionalities.[18]

  1. Application-path: defines the path to application directory
  2. Application_Env: changes the application behavior depending on various factors such as how the application is used.
  3. getenv(): checks system environment.
  4. Initialize Zend-Application application: includes Zend-Application and create an instance of it.
  5. Call bootstrap() method coupled with run() method starting MVC.

In general Zend-Tool creates many important directory structures. This system is built upon Rapid Application Development technology. As a general rule of support the framework focuses on coding and project structures instead of focusing on smaller parts.[19]

Controllers

Controller is the main entry to Zend Framework application.[14] The front controller handler is main hub for accepting requests and running the accurate actions as requested by the commands. The whole process of requesting and reacting is routing and dispatching (which basically means calling correct methods in a class) which determines the functionality of the code.[14] This is implemented by Zend_Controller_Router_- Interface.[14] The router functionality is to find which actions need to be run and on contrary dispatcher runs those requested actions.[14] The controller in Zend Framework is connected in a diverse array of structural directories, which provides a support to efficient routing.[14] The main entry point and the command controller is the Zend_Controller_Front, this works as a foundation which delegates the work received and sent. The request is shaped and encapsulated with an instance of Zend Controller Request HTTP, as a provider of access to HTTP requests.[14] The HTTP hold all the superglobals of the framework ($_GET, $_POST, $_COOKIE, $_SERVER, and $_ENV) with their relevant paths. Moreover, the controller also provides getParam() functions which enables collection of requested variables.

Actions

Actions are important functionalities. Controllers does not function without Actions. For this purpose we create another method which has action appended in its name and automatically the front controller will recognize it as an action.[18] The Action has init() method which shows its private nature and not accessible by anyone.[18] Following commands are run so that Zend_Tool can create action for us.[18] Through the use of standard dispatcher all functions are named after the action's name and followed by word "Action" appended.[14] This leads to controller action class containing methods like indexAction(), viewAction(), editAction(), and deleteAction().

Windows users:

bin\zf.bat create actions about index

Linux and Mac users:

bin/zf.ch create action about index

An example of forms and actions:[20]

 namespace Album\Form;

 use Zend\Form\Form;

 class AlbumForm extends Form
 {
     public function __construct($name = null)
     {
         // we want to ignore the name passed
         parent::__construct('album');

         $this->add(array(
             'name' => 'id',
             'type' => 'Hidden',
         ));
         $this->add(array(
             'name' => 'title',
             'type' => 'Text',
             'options' => array(
                 'label' => 'Title',
             ),
         ));
         $this->add(array(
             'name' => 'artist',
             'type' => 'Text',
             'options' => array(
                 'label' => 'Artist',
             ),
         ));
         $this->add(array(
             'name' => 'submit',
             'type' => 'Submit',
             'attributes' => array(
                 'value' => 'Go',
                 'id' => 'submitbutton',
             ),
         ));
     }//source: Zend Framework Guide
     
 }

Standard router

Standard router is an important Front Controller tool. Here the main decisions are made in order what module, controller and action are being requested.[18] These are all processed here. The following are defaults structure.

  1. Module
  2. Controller
  3. Actions

The request follows a pattern first information is taken from URL endpoint of HTTP. URI is the end point of the request. URL structure follows as:[18] http://domain.com/moduleName/controllerName/actionName

The default router code example:[21]

// Assuming the following:
$ctrl->setControllerDirectory(
    array(
        'default' => '/path/to/default/controllers',
        'news'    => '/path/to/news/controllers',
        'blog'    => '/path/to/blog/controllers'
    )
);

 
Module only:
http://example/news
    module == news
 
Invalid module maps to controller name:
http://example/foo
    controller == foo
 
Module + controller:
http://example/blog/archive
    module == blog
    controller == archive
 
Module + controller + action:
http://example/blog/archive/list
    module == blog
    controller == archive
    action == list
 
Module + controller + action + params:
http://example/blog/archive/list/sort/alpha/date/desc
    module == blog
    controller == archive
    action == list
    sort == alpha
    date == desc

Utility methods

The Zend Framework also provides some utility methods. Following are some utility methods provided in the framework.[18]

_forward()
it is used to call action
_forward{$action, $controller = null, $module = null, array $params = null}
$actions
string, action required
$controller
optional string parameter and is place where controller is in.
$module
string, has module in which we have the controller.
$params
array, user parameter

Another method is the redirect utility method. This is the opposite of aforementioned -forward() method.[18] _redirect() performs HTPP in redirection in creation of a new request.[18] _redirect() methods accepts two arguments namely $url, and $options.

Furthermore, Action Helpers are also a way to provide extra functionalities within the framework. Action helpers are useful when there is a need to provide functionality between controllers.[18]

//application/controllers/IndexController.php
public function init()
{
  $this->_helper->viewRenderer->setNoRender();
}

During initialization phase of IndexController and ContactController, viewReader is called and noRender flag is called on the view object.[18] The lack of this process creates an error in our application.

View directories

Zend Framework provides the view framework to our project and controller and actions are automatically provided to our application. Inside the Zend Framework in view folder we observe the following folders.[18]

  1. View
  2. Helpers
  3. Scripts
  4. Contacts
  5. errors
  6. index

In order to create a view we follow:[18]

<!-- application/views/scripts/index/index.phtml -->
<html>
<head>
<title><Hello Zend</title>
</head>
<body>
<hi>Hello Zend</hi>
<p>Hello from Zend Framework</p>
</body>
</html>

View Sample:[22]

// https://framework.zend.com/manual/2.4/en/modules/zend.view.quick-start.html
namespace Foo\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class BazBatController extends AbstractActionController
{
    public function doSomethingCrazyAction()
    {
        $view = new ViewModel(array(
            'message' => 'Hello world',
        ));
        $view->setTemplate('foo/baz-bat/do-something-crazy');
        return $view;
    }
}

Zend Technologies, co-founded by PHP core contributors Andi Gutmans and Zeev Suraski, is the corporate sponsor of Zend Framework.[23] Technology partners include IBM,[24] Google,[25] Microsoft,[26] Adobe Systems,[27] and StrikeIron.[28]

Requirements

Zend Framework version 1.7 requires PHP 5.2.4 or later. Previous versions required PHP 5.1.4 or later, although the ZF Programmer's Reference Guide strongly recommended PHP 5.2.3 or later for security and performance improvements included i these versions of PHP. Zend Framework 2.0 requires PHP 5.3.3 or later. PHPUnit 3.0 or later is required to run the unit tests shipped with Zend Framework. Many components also require PHP extensions.[29] Below is a table showing PHP used in Zend Framework.[30]

Extension Dependency Type Used by Zend Framework Components
» apc Hard » Zend_Cache_Backend_Apc
Soft » Zend_File_Transfer
» bcmath Soft » Zend_Locale
» bitset Soft » Zend_Search_Lucene
» bz2  ———   ——— 
» calendar  ———   ——— 
» com_dotnet  ———   ——— 
» ctype Hard » Zend_Auth_Adapter_Http
» Zend_Gdata
» Zend_Http_Client
» Zend_Pdf
» Zend_Rest_Client
» Zend_Rest_Server
» Zend_Search_Lucene
» Zend_Uri
» Zend_Validate
» curl Hard » Zend_Http_Client_Adapter_Curl
» date Soft » Zend_Amf
» dba  ———   ——— 
» dbase  ———   ——— 
» dom Hard » Zend_Amf
» Zend_Dom
» Zend_Feed
» Zend_Gdata
» Zend_Log_Formatter_Xml
» Zend_Rest_Server
» Zend_Soap
» Zend_Search_Lucene
» Zend_Service_Amazon
» Zend_Service_Delicious
» Zend_Service_Flickr
» Zend_Service_Simpy
» Zend_Service_Yahoo
» Zend_XmlRpc
» exif  ———   ——— 
» fbsql  ———   ——— 
» fdf  ———   ——— 
» filter  ———   ——— 
» ftp  ———   ——— 
» gd Hard » Zend_Captcha
» Zend_Pdf
» gettext  ———   ——— 
» gmp  ———   ——— 
» hash Hard » Zend_Auth_Adapter_Http
» ibm_db2 Hard » Zend_Db_Adapter_Db2
» iconv Hard » Zend_Currency
» Zend_Locale_Format
» Zend_Mime
» Zend_Pdf
» Zend_Search_Lucene
» Zend_Service_Audioscrobbler
» Zend_Service_Flickr
» Zend_XmlRpc_Client
» igbinary Hard » Zend_Serializer_Adapter_Igbinary
» imap  ———   ——— 
» informix  ———   ——— 
» interbase Hard Zend_Db_Adapter_Firebird
» json Soft » Zend_Json
» Zend_Serializer_Adapter_Json
» ldap Hard » Zend_Ldap
» libxml  ———   ——— 
» mbstring Hard » Zend_Feed
» mcrypt Hard » Zend_Service_ReCaptcha
» memcache Hard » Zend_Cache_Backend_Memcached
» mhash  ———   ——— 
» mime_magic Hard » Zend_Http_Client
» ming  ———   ——— 
» msql  ———   ——— 
» mssql  ———   ——— 
» mysql  ———   ——— 
» mysqli Hard » Zend_Db_Adapter_Mysqli
» ncurses  ———   ——— 
» oci8 Hard » Zend_Db_Adapter_Oracle
» odbc  ———   ——— 
» openssl  ———   ——— 
» pcntl  ———   ——— 
» pcre Hard Virtually all components
» pdo Hard All database adapters
» pdo_dblib  ———   ——— 
» pdo_firebird  ———   ——— 
» pdo_mssql Hard » Zend_Db_Adapter_Pdo_Mssql
» pdo_mysql Hard » Zend_Db_Adapter_Pdo_Mysql
» pdo_oci Hard » Zend_Db_Adapter_Pdo_Oci
» pdo_pgsql Hard » Zend_Db_Adapter_Pdo_Pgsql
» pdo_sqlite Hard » Zend_Db_Adapter_Pdo_Sqlite
» pgsql  ———   ——— 
» posix Soft » Zend_Mail
» pspell  ———   ——— 
» readline  ———   ——— 
» recode  ———   ——— 
» Reflection Hard » Zend_Controller
» Zend_Filter
» Zend_Filter_Input
» Zend_Json
» Zend_Log
» Zend_Rest_Server
» Zend_Server_Reflection
» Zend_Validate
» Zend_View
» Zend_XmlRpc_Server
» session Hard » Zend_Controller_Action_Helper_Redirector
» Zend_Session
» shmop  ———   ——— 
» SimpleXML Hard » Zend_Config_Xml
» Zend_Feed
» Zend_Rest_Client
» Zend_Serializer_Adapter_Wddx
» Zend_Service_Audioscrobbler
» Zend_Soap
» Zend_XmlRpc
Soft » Zend_Amf
» soap Hard » Zend_Service_StrikeIron
» Zend_Soap
» sockets  ———   ——— 
» SPL Hard Virtually all components
» SQLite Hard » Zend_Cache_Backend_Sqlite
» standard Hard Virtually all components
» sybase  ———   ——— 
» sysvmsg  ———   ——— 
» sysvsem  ———   ——— 
» sysvshm  ———   ——— 
» tidy  ———   ——— 
» tokenizer  ———   ——— 
» wddx Hard » Zend_Serializer_Adapter_Wddx
» xml Hard » Zend_Translate_Adapter_Qt
» Zend_Translate_Adapter_Tmx
» Zend_Translate_Adapter_Xliff
» XMLReader  ———   ——— 
» xmlrpc  ———   ——— 
» XMLWriter  ———   ——— 
» xsl  ———   ——— 
» zip  ———   ——— 
» zlib Hard » Zend_Pdf
» Zend_Filter_Compress

Features

Zend Framework features include:[31]

Development of applications

Zend Framework applications can run on any PHP stack that fulfills the technical requirements. Zend Technologies provides a PHP stack, Zend Server (or Zend Server Community Edition), which is advertised to be optimized for running Zend Framework applications. Zend Server includes Zend Framework in its installers, along with PHP and all required extensions. According to Zend Technologies, Zend Server provides improved performance for PHP and especially Zend Framework applications through opcode acceleration and several caching capabilities, and includes application monitoring and diagnostics facilities.[34] Zend Studio is an IDE that includes features specifically to integrate with Zend Framework. It provides an MVC view, MVC code generation based on Zend_Tool (a component of the Zend Framework), a code formatter, code completion, parameter assist, and more.[35] Zend Studio is not free software, whereas the Zend Framework and Zend Server Community Edition are free. Zend Server is compatible with common debugging tools such as Xdebug. Other developers may want to use a different PHP stack and another IDE such as Eclipse PDT which works well together with Zend Server. A pre configured, free version of Eclipse PDT with Zend Debug is available on the Zend web site.

Code, documentation, and test standards

Code contributions to Zend Framework are subject to rigorous code, documentation, and test standards. All code must meet ZF’s coding standards and unit tests must reach 80% code coverage before the corresponding code may be moved to the release branch.[36]

Simple cloud API

On September 22, 2009, Zend Technologies announced[37] that it would be working with technology partners including Microsoft, IBM, Rackspace, Nirvanix, and GoGrid along with the Zend Framework community to develop a common API to cloud application services called the Simple Cloud API. This project is part of Zend Framework and will be hosted on the Zend Framework website,[38] but a separate site called simplecloud.org[39] has been launched to discuss and download the most current versions of the API.The Simple Cloud API and several Cloud Services are included in Zend Framework. The adapters to popular cloud services have reached production quality.

Hello World: file by file

In order to create Hello World program, there are multiple steps including:

First create four files within the directory structure. These files are bootstrap file, an Apache Control file (.htaccess), a controller file and a view controller for the view.[14]

Secondly we also need to develop a copy of Zend Framework. With the growth of complexity, additional code is required which will provide the functionality and that is relative small and focuses on the benefits of MVC system.[14] If we look at the process in mode details we can observe the bootstrap file is initialization in one or another form.

At first the environment is correctly ensured that there are no errors and followed by date and time for tracking functionality.[14] In order to set up date and time we can follow many procedures; for example we can call the method data_default_timezone_set() and Zend assumes that default directory will include the phd path.[14] The Zend Framework does not depend on any specific file, but helper classes are helpful in this case. Following are some examples:

Zend_Loader::loadClass() the main purpose here is to correct file for the supplied class name.

Following this the underscores are converted into directory-specific structures.[14] As a result, the code lines Zend_Loader::loadClass('Zend_Controller_Front'); and include_once 'Zend/Controller/Front.php'; shows similar results.

Zend_Debug::dump() functions in terms of debugging information and is focused on formatted var_dump() output.[14] Finally the bootstrap runs the front controller and initialize it. The design patter used by Zend_Controller_Front, implements is the Singleton design and getInstance() is used to get this functionality.[14]

Current development

Zend Framework 3.0 was released on June 28, 2016. It includes new components like a JSON RPC server, a XML to JSON converter, PSR-7 functionality, and compatibility with PHP 7. Zend Framework 3.0 runs up to 4 times faster than Zend Framework 2, and the packages have been decoupled to allow for greater reuse.[40] The contributors of Zend Framework are actively encouraging the use of Zend Framework version 3.x. The stated end of life for Zend Framework 1 is 2016-09-28, and for Zend Framework 2 is 2018-03-31. The first development release of Zend Framework 2.0 was released on August 6, 2010.[41] Changes made in this release were the removal of require_once statements, migration to PHP 5.3 namespaces, a refactored test suite, a rewritten Zend\Session, and the addition of the new Zend\Stdlib. The second development release was on November 3, 2010.[42] The first stable release of Zend Framework 2.0 was released 5 September 2012.[43]

See also

References

  1. "Archives". Zend Framework. Retrieved May 1, 2013.
  2. "zendframework/zendframework". GitHub. Retrieved May 17, 2017.
  3. "Introduction to Zend Framework". ZF Programmer's Reference Guide. Retrieved 2009-02-12.
  4. "PHP 5 Tutorial". www.w3schools.com. Retrieved 2017-02-20.
  5. 1 2 3 Company, Zend, a Rogue Wave. "Zend Framework - About". framework.zend.com. Retrieved 2017-02-05.
  6. "Travis CI". Wikipedia. 2017-01-19.
  7. "Model–view–controller". Wikipedia. 2017-02-18.
  8. 1 2 Supaartagorn, C. (2011). PHP Framework for database management based on MVC pattern. International Journal of Computer Science & Information Technology (IJCSIT), 3(2), 251-258.
  9. "Router (computing)". Wikipedia. 2017-02-19.
  10. Gutmans, Andi (2005-10-27). "Zend Framework (post is too long so make sure to grab coffee)". Andi on Web & IT. Retrieved 2009-02-11.
  11. "Contributor Guide (ZF v1)".
  12. Company, Zend, a Rogue Wave. "Zend Framework - Long Term Support". framework.zend.com. Retrieved 2017-02-06.
  13. 1 2 3 Company, Zend, a Rogue Wave. "Zend Framework - Issue". framework.zend.com. Retrieved 2017-02-06.
  14. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Allen, R., Lo, N., & Brown, S. (2009). Zend framework in action. Manning.
  15. Company, Zend, a Rogue Wave. "Zend Framework - Issue". framework.zend.com. Retrieved 2017-02-06.
  16. 1 2 3 Company, Zend, a Rogue Wave. "Zend Framework - Issue". framework.zend.com. Retrieved 2017-02-06.
  17. Company, Zend, a Rogue Wave. "Zend Framework - Issue". framework.zend.com. Retrieved 2017-02-07.
  18. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Pope, Keith. Zend Framework 1.8 Web Application Development (1). Olton, GB: Packt Publishing, 2009. ProQuest ebrary. Web. 13 February 2017.
  19. Padilla, A. (2009). Beginning Zend Framework. Apress.
  20. Company, Zend, a Rogue Wave. "Zend Framework - Issue". framework.zend.com. Retrieved 2017-02-14.
  21. Company, Zend, a Rogue Wave. "Zend Framework - Issue". framework.zend.com. Retrieved 2017-02-14.
  22. Company, Zend, a Rogue Wave. "Zend Framework - Issue". framework.zend.com. Retrieved 2017-02-14.
  23. "History of PHP and related projects". The PHP Group. Retrieved 2009-02-11.
  24. LaMonica, Martin (2005-02-25). "IBM backs open-source Web software". cnet.com. Retrieved 2009-02-11.
  25. Kernel, Sean Michael (2006-12-20). "Google Data Joins PHP Zend Framework". internetnews.com. Retrieved 2009-02-11.
  26. Krill, Paul (2006-10-31). "Microsoft, Zend boost PHP for Windows". infoworld.com. Retrieved 2009-02-11.
  27. Potter, Mike (2014-05-21). "Adobe Contributing AMF Support to Zend Framework". The Official Flex Team Blog. Retrieved 2009-02-11.
  28. "StrikeIron Featured Partners". Retrieved 2009-02-11.
  29. "Zend Framework Requirements". ZF Programmer's Reference Guide. Retrieved 2009-02-12.
  30. Company, Zend, a Rogue Wave. "Zend Framework - Issue". framework.zend.com. Retrieved 2017-02-07.
  31. "About Zend Framework". Retrieved 2009-02-11.
  32. Why to Use Zend Framework? By SuntecOSS, Retrieved, April 21st, 2016
  33. Zend’s Apigility, an Open Source API Builder for Developing Quality APIs By SuntecOSS, Retrieved, May 19th, 2016
  34. "Zend site". Zend.com. Retrieved May 17, 2017.
  35. "Download Zend Studio - IDE, PHP profiler, mobile, unit testing & more". www.Zend.com. Retrieved May 17, 2017.
  36. "Zend Framework Contributor Guide". July 1, 2006. Retrieved July 14, 2008.
  37. "Simple Cloud API Press Release". Archived from the original on December 1, 2009. Retrieved 2009-11-05.
  38. "Zend Framework website". Retrieved 2009-11-05.
  39. simplecloud.org
  40. zendframework (2016-06-28). "Zend Framework 3 Released!". Retrieved 2016-10-12.
  41. "Zend Framework 2.0.0dev1". 2010-08-06. Retrieved 2010-09-04.
  42. "Zend Framework 2.0.0dev2". 2011-11-03. Retrieved 2011-03-18.
  43. "Zend Framework 2.0.0 STABLE Released! - Zend Framework - Zend Framework". Framework.zend.com. September 5, 2012. Retrieved June 14, 2013.

Tutorials

Books

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.