Laminas

Last updated
Laminas
Developer(s) Laminas Project
Repository Laminas Repository

Mezzio Repository

Laminas API Tools Repository
Written in PHP
Operating system Cross-platform
License New BSD license
Website getlaminas.org OOjs UI icon edit-ltr-progressive.svg
Zend Framework
Developer(s) Zend Technologies
Initial releaseMarch 3, 2006;17 years ago (2006-03-03) [1]
Final release
3.0.0 [2] / June 28, 2016;7 years ago (2016-06-28)
Repository Zend Repository
Written in PHP 7
Operating system Cross-platform
License New BSD license
Website framework.zend.com

Laminas Project (formerly Zend Framework or ZF) is an open source, object-oriented web application framework implemented in PHP 7 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 PHPUnit for testing all packages, Travis CI for continuous Integration Services. Laminas provides to users a support of the model–view–controller (MVC) in combination with Front Controller solution. [6] MVC implementation in Laminas has five main areas. The router and dispatcher functions to decide 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]

Contents

On 17 April 2019 it was announced [7] that the framework is transitioning into an open source project hosted by the Linux Foundation to be known as Laminas.

License

Laminas is licensed under the Open Source Initiative (OSI)-approved New BSD License. All new contributions are required to be accompanied with Developer Certificate of Origin affirmation. [8]

Zend Framework also licensed under New BSD License. For ZF1 all code contributors were required to 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. [9] ZF2 and later is CLA free. [10]

Components and versioning

Laminas Project follows semantic versioning. Framework components are versioned independently and released as separate Composer packages. Dependencies between framework components are declared as Composer dependencies using semantic versioning ranges.

Prior to Zend Framework version 2.5 all components shared the same version. Starting with Zend Framework version 2.5, components were split into independently versioned packages and zendframework/zendframework converted into a Composer meta-package. [11] Framework components introduced after the split started at version 1.0 while existing components continued from 2.5. New components were not added to the meta-package and meta-package itself was discontinued after 3.0.0 release.

Zend Framework 3 was the last release before framework wide versioning was discontinued. [12] In Zend Framework 3 major versions of individual components did not match framework version anymore and caused confusion. Some components such as zend-mvc and zend-servicemanager received matching major version release but other remained on version 2 while newly introduced zend-diactoros, zend-stratigility and zend-expressive were at major version 1.

Laminas Project does not carry a single framework version. Components transitioned from Zend Framework continued with existing versions and had all past releases migrated from their counterparts. zendframework/zendframework meta-package does not have a counterpart in Laminas.

Laminas includes following components: [13]

ComponentDescription
AuthenticationAuthenticate users via a variety of adapters, and provide the authenticated identity to your application.
BarcodeProgrammatically create and render barcodes as images or in PDFs.
CacheCaching implementation with a variety of storage options, as well as codified caching strategies for callbacks, classes, and output.
CaptchaGenerate and validate CAPTCHAs using Figlets, images, ReCaptcha, and more.
CodeExtensions to the PHP Reflection API, static code scanning, and code generation.
Component InstallerComposer plugin for injecting modules and configuration providers into application configuration.
ConfigRead and write configuration files.
Config AggregatorAggregate and merge configuration from a variety of sources.
ConsoleBuild console applications using getopt syntax or routing, complete with prompts
CryptStrong cryptography tools and password hashing.
DBDatabase abstraction layer, SQL abstraction, result set abstraction, and RowDataGateway and TableDataGateway implementations.
DebugSafely dump debug information to HTML.
DIAutomated dependency injection and instance manager.
DiactorosPSR-7 HTTP message implementations.
DOMQuery HTML and XML documents using XPath or CSS selectors.
EscaperSecurely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs.
EventManagerImplement events, signal slots, aspects, and observers!
ExpressivePSR-7 middleware in minutes.
FeedConsume and generate Atom and RSS feeds, and interact with Pubsubhubbub.
FileLocate PHP classfiles.
FilterProgrammatically filter and normalize data and files.
FormValidate and display simple and complex forms, casting forms to business objects and vice versa.
HAL for PSR-7Hypertext Application Language (HAL) for PSR-7.
HTTPHTTP message and header abstractions, and HTTP client implementation. (Not a PSR-7 implementation.)
HydratorSerialize objects to arrays, and vice versa.
InputFilterNormalize and validate input sets from the web, APIs, the CLI, and more, including files.
InternationalizationProvide translations for your application, and filter and validate internationalized values.
JSONDe/Serialize JSON in PHP, including JavaScript expressions.
JSON-RPC ServerJSON-RPC implementation for PHP.
LDAPPerform LDAP operations, including binding, searching and modifying entries in an LDAP directory.
LoaderAutoloading and plugin loading strategies.
LogRobust, composite logger with filtering, formatting, and PSR-3 support.
MailParse, create, store, and send email messages, using a variety of storage and transport protocols.
MathCreate cryptographically secure pseudo-random numbers, and manage big integers.
MemoryManage data in an environment with limited memory.
MIMECreate and parse MIME messages and parts.
Module ManagerModular application system for zend-mvc applications.
MVCLaminas's event-driven MVC layer, including MVC Applications, Controllers, and Plugins.
MVC-Console integrationIntegration between zend-mvc and zend-console.
MVC-i18n integrationIntegration between zend-mvc and zend-i18n.
fileprg() pluginPost/Redirect/Get plugin with file upload handling for zend-mvc controllers.
flashmessenger() pluginPlugin for creating and exposing flash messages via zend-mvc controllers.
identity() pluginPlugin for retrieving the current authenticated identity within zend-mvc controllers.
prg() pluginPost/Redirect/Get plugin for zend-mvc controllers.
NavigationManage trees of pointers to web pages in order to build navigation systems.
PaginatorPaginate collections of data from arbitrary sources.
ACLCreate, manage, and query access control lists.
RBACProvide and query Role-Based Access Controls for your application.
Problem DetailsPSR-7 Problem Details for HTTP API responses and middleware.
ProgressBarCreate and update progress bars in different environments.
PSR-7 BridgePSR-7 <-> zend-http message conversions.
RouterFlexible routing system for HTTP and console applications.
SerializerSerialize and deserialize PHP structures to a variety of representations.
ServerCreate Reflection-based RPC servers.
ServiceManagerFactory-Driven Dependency Injection Container
ServiceManager-Di integrationzend-di integration for zend-servicemanager
SessionObject-oriented interface to PHP sessions and storage.
SOAPCreate, serve, and access SOAP applications, and parse and generate WSDL.
StdlibSPL extensions, array utilities, error handlers, and more.
StratigilityPSR-7 middleware foundation for building and dispatching middleware pipelines.
TagManipulate and weight taggable items, and create tag clouds.
TestTools to facilitate unit testing of zend-mvc applications.
TextCreate FIGlets and text-based tables.
URIObject oriented interface to URIs, with facilities for validation.
ValidatorValidation classes for a wide range of domains, and the ability to chain validators to create complex validation criteria.
ViewFlexible view layer supporting and providing multiple view layers, helpers, and more.
XML-RPCFully featured XML-RPC server and client implementations.
XML2JSONConvert XML documents to JSON.

Installation

Officially supported install method is via Composer package manager.

Laminas provides meta-package that includes 61 component but recommended way is to install required framework components individually. Composer will resolve and install all additional dependencies.

For instance, if you need MVC package, you can install with the following command:

$ composerrequirelaminas/laminas-mvc 

Full list of components is available in Laminas Framework documentation. [13]

Anatomy of the framework

Laminas follows configuration-over-convention approach and does not impose any particular application structure. Skeleton applications for zend-mvc and zend-expressive are available and provide everything necessary to run applications and to serve as a good starting point.

Zend Technologies, co-founded by PHP core contributors Andi Gutmans and Zeev Suraski, was the original corporate sponsor of Zend Framework. [14] Technology partners include IBM, [15] Google, [16] Microsoft, [17] Adobe Systems, [18] and StrikeIron. [19]

Features

Laminas features include: [20]

Development of applications

Laminas 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 Laminas 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. [23] 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. [24] 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 Laminas are subject to rigorous code, documentation, and test standards. All code must meet project coding standards and unit tests must reach 80% code coverage before the corresponding code may be moved to the release branch. [25]

Simple cloud API

On September 22, 2009, Zend Technologies announced [26] 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, [27] but a separate site called simplecloud.org [28] 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.

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. [12] 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. [29] 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. [30] The first stable release of Zend Framework 2.0 was released 5 September 2012. [31]

See also

Related Research Articles

<span class="mw-page-title-main">PHP</span> Scripting language created in 1994

PHP is a general-purpose scripting language geared towards web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by the PHP Group. PHP was originally an abbreviation of Personal Home Page, but it now stands for the recursive initialism PHP: Hypertext Preprocessor.

An application server is a server that hosts applications or software that delivers a business application through a communication protocol. For a typical web application, the application server sits behind the web servers.

The Zend Engine is a compiler and runtime environment for the PHP scripting language and consists of the Zend Virtual Machine, which is composed of the Zend Compiler and the Zend Executor, that compiles and executes the PHP code. It was originally developed by Andi Gutmans and Zeev Suraski while they were students at the Technion – Israel Institute of Technology. They later founded a company called Zend Technologies in Ramat Gan, Israel. The name Zend is a combination of their forenames, Zeev and Andi.

<span class="mw-page-title-main">Zend (company)</span>

Zend, formerly Zend Technologies, is a Minneapolis, Minnesota-based software company. The company's products, which include Zend Studio, assist software developers with developing, deploying, and managing PHP-based web applications.

Zend Studio is a commercial, proprietary integrated development environment (IDE) for PHP developed by Zend Technologies, based on the PHP Development Tools (PDT) plugin for the Eclipse platform.

A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build and deploy web applications on the World Wide Web. Web frameworks aim to automate the overhead associated with common activities performed in web development. For example, many web frameworks provide libraries for database access, templating frameworks, and session management, and they often promote code reuse. Although they often target development of dynamic web sites, they are also applicable to static websites.

<span class="mw-page-title-main">CakePHP</span> Open-source web framework in PHP

CakePHP is an open-source web framework. It follows the model–view–controller (MVC) approach and is written in PHP, modeled after the concepts of Ruby on Rails, and distributed under the MIT License.

WURFL is a set of proprietary application programming interfaces (APIs) and an XML configuration file which contains information about device capabilities and features for a variety of mobile devices, focused on mobile device detection. Until version 2.2, WURFL was released under an "open source / public domain" license. Prior to version 2.2, device information was contributed by developers around the world and the WURFL was updated frequently, reflecting new wireless devices coming on the market. In June 2011, the founder of the WURFL project, Luca Passani, and Steve Kamerman, the author of Tera-WURFL, a popular PHP WURFL API, formed ScientiaMobile, Inc to provide commercial mobile device detection support and services using WURFL. As of August 30, 2011, the ScientiaMobile WURFL APIs are licensed under a dual-license model, using the AGPL license for non-commercial use and a proprietary commercial license. The current version of the WURFL database itself is no longer open source.

Qcodo is an open-source PHP web application framework which builds an object-relational model (ORM), CRUD UI pages, and AJAX hooks from an existing data model. It additionally includes a tightly integrated HTML and JavaScript form toolkit which interfaces directly with the generated entities. It is a robust, comprehensive framework which can be utilized by small and large Web applications alike.

This is a comparison of notable web frameworks, software used to build and deploy web applications.

<span class="mw-page-title-main">Ext JS</span> JavaScript application framework

Ext JS is a JavaScript application framework for building interactive cross-platform web applications using techniques such as Ajax, DHTML and DOM scripting. It can be used as a simple component framework but also as a full framework for building single-page applications (SPAs).

<span class="mw-page-title-main">PureMVC</span>

PureMVC is a software framework for creating applications based on the well-established model–view–controller (MVC) design pattern. It was originally implemented in the ActionScript 3 language for use with Adobe Flex, Flash, and AIR, and it has since been ported to nearly all major web development platforms. It is free and open-source software released under a BSD 3-clause license.

Zend Server is a complete and certified PHP distribution stack originally developed by Zend Technologies intended for high performance and scalable use cases.

<span class="mw-page-title-main">Node.js</span> JavaScript runtime environment

Node.js is a cross-platform, open-source JavaScript runtime environment that can run on Windows, Linux, Unix, macOS, and more. Node.js runs on the V8 JavaScript engine, and executes JavaScript code outside a web browser.

<span class="mw-page-title-main">Nette Framework</span>

Nette Framework is an open-source framework for creating web applications in PHP 5 and 7. It supports AJAX, DRY, KISS, MVC and code reusability. The original author of the framework is David Grudl, but further development is now maintained by the Nette Foundation organization. Nette is a free software released under both the New BSD license and the GNU GPL version 2 or 3.

<span class="mw-page-title-main">KDE Frameworks</span> Collection of libraries and software frameworks for the Qt framework

KDE Frameworks is a collection of libraries and software frameworks readily available to any Qt-based software stacks or applications on multiple operating systems. Featuring frequently needed functionality solutions like hardware integration, file format support, additional graphical control elements, plotting functions, and spell checking, the collection serves as technological foundation for KDE Plasma 5 and KDE Gear distributed under the GNU Lesser General Public License (LGPL).

Phalcon is a PHP web framework based on the model–view–controller (MVC) pattern. Originally released in 2012, it is an open-source framework licensed under the terms of the BSD License.

<span class="mw-page-title-main">Pop PHP Framework</span> Free and open source PHP web framework

The Pop PHP Framework a free and open source PHP Web framework that was created by Nick Sagona. It is distributed under the BSD License and hosted on GitHub. The framework is intended to be utilized for rapid application development, with an emphasis on web applications.

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. Archived from the original on 2009-02-11. Retrieved 2009-02-12.
  4. "PHP 5 Tutorial". www.w3schools.com. Retrieved 2017-02-20.
  5. 1 2 Company, Zend, a Rogue Wave. "Zend Framework - About". framework.zend.com. Retrieved 2017-02-05.{{cite web}}: CS1 maint: multiple names: authors list (link)
  6. Supaartagorn, C. (2011). PHP Framework for database management based on MVC pattern. International Journal of Computer Science & Information Technology (IJCSIT), 3(2), 251-258.
  7. "From Zend to Laminas". 17 April 2019.
  8. "Technical Charter (the "Charter") for Laminas Project a Series of LF Projects, LLC". GitHub .
  9. 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.
  10. "Contributor Guide (ZF v1)".
  11. "Split Framework". GitHub .
  12. 1 2 zendframework (2016-06-28). "Zend Framework 3 Released!" . Retrieved 2016-10-12.
  13. 1 2 "Documentation for the ZF components".
  14. "History of PHP and related projects". The PHP Group. Retrieved 2009-02-11.
  15. LaMonica, Martin (2005-02-25). "IBM backs open-source Web software". cnet.com. Retrieved 2009-02-11.
  16. Kernel, Sean Michael (2006-12-20). "Google Data Joins PHP Zend Framework". internetnews.com. Retrieved 2009-02-11.
  17. Krill, Paul (2006-10-31). "Microsoft, Zend boost PHP for Windows". infoworld.com. Retrieved 2009-02-11.
  18. Potter, Mike (2014-05-21). "Adobe Contributing AMF Support to Zend Framework". The Official Flex Team Blog. Archived from the original on 2009-02-07. Retrieved 2009-02-11.
  19. "StrikeIron Featured Partners" . Retrieved 2009-02-11.
  20. "About Zend Framework". Archived from the original on 2009-02-11. Retrieved 2009-02-11.
  21. Why to Use Zend Framework? By SuntecOSS, Retrieved, April 21st, 2016
  22. Zend’s Apigility, an Open Source API Builder for Developing Quality APIs By SuntecOSS, Retrieved, May 19th, 2016
  23. "Zend site". Zend.com. Retrieved May 17, 2017.
  24. "Download Zend Studio - IDE, PHP profiler, mobile, unit testing & more". www.Zend.com. Archived from the original on June 1, 2017. Retrieved May 17, 2017.
  25. "Zend Framework Contributor Guide". July 1, 2006. Archived from the original on May 18, 2008. Retrieved July 14, 2008.
  26. "Simple Cloud API Press Release". Archived from the original on December 1, 2009. Retrieved 2009-11-05.
  27. "Zend Framework website" . Retrieved 2009-11-05.
  28. simplecloud.org
  29. "Zend Framework 2.0.0dev1". 2010-08-06. Retrieved 2010-09-04.
  30. "Zend Framework 2.0.0dev2". 2011-11-03. Archived from the original on 2011-07-16. Retrieved 2011-03-18.
  31. "Zend Framework 2.0.0 STABLE Released! - Zend Framework - Zend Framework". Framework.zend.com. September 5, 2012. Retrieved June 14, 2013.