Laminas - Laminas

Projeto Laminas
ZendFramework-Logo.png
Autor (es) original (is) Zend Technologies
Desenvolvedor (s) Linux Foundation
lançamento inicial 3 de março de 2006 ; 15 anos atrás ( 03/03/2006 )
Versão estável
3.0.0 / 28 de junho de 2016 ; 5 anos atrás ( 2016-06-28 )
Repositório Repositório Zend
Escrito em PHP 7
Sistema operacional Plataforma cruzada
Licença Nova licença BSD
Local na rede Internet getlaminas .org Edite isso no Wikidata

Lâminas Projeto (anteriormente Zend Framework ou ZF ) é uma fonte aberta , orientada a objeto framework de aplicações web implementado em PHP 7 e licenciado sob a Licença New BSD . O framework é basicamente uma coleção de pacotes profissionais baseados em PHP . A estrutura usa vários pacotes pelo uso do Composer como parte de seus gerenciadores de dependência de pacote; alguns deles são PHPUnit para testar todos os pacotes, Travis CI para serviços de integração contínua. O Laminas fornece aos usuários um suporte do modelo-visão-controlador(MVC) em combinação com a solução Front Controller. A implementação do MVC em Laminas tem cinco áreas principais. O roteador e o despachante funcionam para decidir qual controlador executar com base nos dados da URL , e as funções do controlador em combinação com o modelo e a visualização para desenvolver e criar a página da web final.

Em 17 de abril de 2019, foi anunciado que o framework está em transição para um projeto de código aberto hospedado pela Linux Foundation a ser conhecido como Laminas.

Licença

O Laminas está licenciado sob a Nova Licença BSD aprovada pela Open Source Initiative (OSI) . Para ZFv1 todos os contribuintes de código devem assinar um Acordo Contributor License (CLA) com base na Apache Software Foundation ‘s CLA . As políticas de licenciamento e contribuição foram estabelecidas para evitar problemas de propriedade intelectual para usuários comerciais da ZF, de acordo com Andi Gutmans da Zend. O ZF2 e posterior não contém CLA. Há também um suporte de longo prazo disponível para a estrutura (suporte de longo prazo ou LTS) por uma duração total de 3 anos.

Componentes e controle de versão

A partir do Zend Framework versão 2.5, os componentes são divididos em pacotes com versão independente e zendframework / zendframework é convertido em um meta-pacote Composer. Os componentes da estrutura introduzidos após a divisão não são adicionados ao meta-pacote.

Embora a versão de lançamento do meta-pacote zendframework / zendframework permaneça em 3.0.0, ele instruirá o Composer a instalar as versões compatíveis mais recentes dos componentes do framework, de acordo com o controle de versão semântico. De forma que o componente zend-mvc seja instalado em sua versão 3.1.1 atual, zend-servicemanager na versão 3.3.0 e zend-form na versão 2.10.2.

As lâminas incluem os seguintes componentes:

Componente Descrição
Autenticação Autentique usuários por meio de uma variedade de adaptadores e forneça a identidade autenticada ao seu aplicativo.
Código de barras Crie e processe códigos de barras programaticamente como imagens ou em PDFs.
Cache Implementação de cache com uma variedade de opções de armazenamento, bem como estratégias de cache codificadas para retornos de chamada, classes e saída.
CAPTCHA Gere e valide CAPTCHAs usando Figlets, imagens, ReCaptcha e muito mais.
Código Extensões para PHP Reflection API, varredura de código estático e geração de código.
Instalador de componentes Plugin do Composer para injetar módulos e provedores de configuração na configuração do aplicativo.
Config Leia e grave arquivos de configuração.
Agregador de configuração Agregue e mescle a configuração de uma variedade de fontes.
Console Crie aplicativos de console usando a sintaxe getopt ou roteamento, completos com prompts
Cripta Fortes ferramentas de criptografia e hashing de senha.
DB Camada de abstração de banco de dados, abstração SQL, abstração de conjunto de resultados e implementações de RowDataGateway e TableDataGateway.
Depurar Despeje com segurança as informações de depuração em HTML.
DI Injeção automatizada de dependências e gerenciador de instâncias.
Diactoros Implementações de mensagem HTTP PSR-7.
DOM Consulte documentos HTML e XML usando seletores XPath ou CSS.
Escaper Escape de HTML, atributos HTML, JavaScript, CSS e URLs de forma segura e segura.
Gerente de eventos Implemente eventos, slots de sinal, aspectos e observadores!
Expressivo Middleware PSR-7 em minutos.
Alimentação Consuma e gere feeds Atom e RSS e interaja com o Pubsubhubbub.
Arquivo Localize os arquivos de classe do PHP.
Filtro Filtre e normalize programaticamente os dados e arquivos.
Forma Valide e exiba formulários simples e complexos, lançando formulários para objetos de negócios e vice-versa.
HAL para PSR-7 Hypertext Application Language (HAL) para PSR-7.
HTTP Mensagem HTTP e abstrações de cabeçalho e implementação de cliente HTTP. (Não é uma implementação PSR-7.)
Hidratante Serialize objetos em matrizes e vice-versa.
InputFilter Normalize e valide conjuntos de entrada da web, APIs, CLI e muito mais, incluindo arquivos.
Internacionalização Forneça traduções para seu aplicativo e filtre e valide valores internacionalizados.
JSON Des / serializar JSON em PHP, incluindo expressões JavaScript.
Servidor JSON-RPC Implementação JSON-RPC para PHP.
LDAP Execute operações LDAP, incluindo vinculação, pesquisa e modificação de entradas em um diretório LDAP.
Carregador Estratégias de carregamento automático e carregamento de plugins.
Registro Logger robusto e composto com filtragem, formatação e suporte para PSR-3.
Correspondência Analise, crie, armazene e envie mensagens de e-mail, usando uma variedade de protocolos de armazenamento e transporte.
Matemática Crie números pseudo-aleatórios criptograficamente seguros e gerencie números inteiros grandes.
Memória Gerencie dados em um ambiente com memória limitada.
MIME Crie e analise mensagens e partes MIME.
Gerente de Módulo Sistema de aplicativo modular para aplicativos zend-mvc.
MVC Camada MVC orientada a eventos do Laminas, incluindo aplicativos MVC, controladores e plug-ins.
Integração MVC-Console Integração entre zend-mvc e zend-console.
Integração MVC-i18n Integração entre zend-mvc e zend-i18n.
plugin fileprg () Post / Redirect / Get plugin com manipulação de upload de arquivo para controladores zend-mvc.
plugin flashmessenger () Plug-in para criar e expor mensagens flash por meio de controladores zend-mvc.
plugin de identidade () Plug-in para recuperar a identidade autenticada atual nos controladores zend-mvc.
plugin prg () Post / Redirect / Get plugin para controladores zend-mvc.
Navegação Gerencie árvores de ponteiros para páginas da web para construir sistemas de navegação.
Paginator Pagine coleções de dados de fontes arbitrárias.
ACL Crie, gerencie e consulte listas de controle de acesso.
RBAC Fornece e consulta controles de acesso com base em funções para o seu aplicativo.
Detalhes do problema Detalhes do problema PSR-7 para respostas e middleware da API HTTP.
Barra de progresso Crie e atualize barras de progresso em diferentes ambientes.
Ponte PSR-7 PSR-7 <-> conversões de mensagens zend-http.
Roteador Sistema de roteamento flexível para HTTP e aplicativos de console.
Serializador Serialize e desserialize estruturas PHP para uma variedade de representações.
Servidor Crie servidores RPC baseados em Reflection.
ServiceManager Recipiente de injeção de dependência orientado pela fábrica
Integração ServiceManager-Di Integração zend-di para zend-servicemanager
Sessão Interface orientada a objetos para sessões e armazenamento de PHP.
SABÃO Crie, atenda e acesse aplicativos SOAP e analise e gere WSDL.
Stdlib Extensões SPL, utilitários de array, manipuladores de erros e muito mais.
Estratigilidade Base de middleware PSR-7 para construir e despachar pipelines de middleware.
Marcação Manipule e pondere itens etiquetáveis ​​e crie nuvens de marcas.
Teste Ferramentas para facilitar o teste de unidade de aplicativos zend-mvc.
Texto Crie FIGlets e tabelas baseadas em texto.
URI Interface orientada a objetos para URIs, com facilidades para validação.
Validador Classes de validação para uma ampla gama de domínios e a capacidade de validar em cadeia para criar critérios de validação complexos.
Visualizar Camada de visualização flexível com suporte e fornecimento de várias camadas de visualização, auxiliares e muito mais.
XML-RPC Totalmente caracterizado servidor XML-RPC e implementações de cliente.
XML2JSON Converta documentos XML em JSON.

Instalação

O método de instalação oficialmente suportado é por meio do gerenciador de pacotes Composer .

O Laminas fornece um meta-pacote que inclui 61 componentes, mas a maneira recomendada é instalar os componentes necessários da estrutura individualmente. O Composer resolverá e instalará todas as dependências adicionais.

Por exemplo, se você precisa do pacote MVC, pode instalar com o seguinte comando:

$ composer require zendframework/zend-mvc

A lista completa de componentes está disponível na documentação do Zend Framework.

Anatomia da estrutura

O Laminas segue a abordagem de configuração sobre convenção e não impõe nenhuma estrutura de aplicação particular. Os aplicativos básicos para zend-mvc e zend-expressive estão disponíveis e fornecem tudo o que é necessário para executar os aplicativos e servir como um bom ponto de partida.

Estrutura de diretório de aplicativo MVC recomendada

ZendSkeletonApplication, aplicativo de esqueleto usando sistemas de módulos e camadas MVC do Laminas, pode ser instalado com:

$ composer create-project zendframework/skeleton-application <project-path>

Ele criará uma estrutura de arquivo semelhante a esta:

<project name>/
├── config/
│  ├── autoload/
│  │  ├── global.php
│  │  └── local.php.dist
│  ├── application.config.php
│  └── modules.config.php
├── data/
│  └── cache/
├── module/
├── public/
│  └── index.php
├── vendor/
├── composer.json
├── composer.lock
└── phpunit.xml.dist

O diretório config / possui configurações de todo o aplicativo. módulo / diretório contém módulos locais que são confirmados junto com o aplicativo. vendor / contém o código do fornecedor e outros módulos gerenciados independentemente do aplicativo, o conteúdo da pasta é normalmente gerenciado pelo Composer.

O módulo Laminas tem apenas um requisito: a classe de módulo existe em um namespace de módulo e pode ser carregada automaticamente. A classe de módulo fornece configuração e lógica de inicialização para o aplicativo. A estrutura do módulo recomendada é a seguinte:

<modulename>
├── config/
│  └── module.config.php
├── src/
│  └── Module.php
├── test/
├── view/
├── composer.json
└── phpunit.xml.dist

O diretório config / contém as configurações do módulo, o diretório src / contém o código-fonte do módulo, conforme definido no padrão de carregamento automático PSR-4 , o diretório test / contém testes de unidade para o módulo e os scripts de exibição / diretório contêm scripts de exibição.

Criando a estrutura do projeto

O Laminas suporta entrada de linha de comando para criar estrutura de diretórios. Usaremos a interface de linha de comando para começar a criar a estrutura de diretório para nosso projeto. Isso lhe dará uma compreensão estrutural completa dos diretórios. A interface oferece suporte e fornece a interface Zend_Tool, oferecendo uma série de funcionalidades de comando.

  1. Abra a interface da linha de comando e altere o diretório hellozend.
  2. Os usuários do Windows digitam: bin \ zf \ bat criar projeto
  3. Os usuários de Linux / Mac digitam: bin \ zf.sh criar projeto

Este procedimento criará o projeto Laminas em um local especificado por você. Depois de executar Zend_Toll, ele criará o esqueleto básico do aplicativo. Isso não apenas criará uma estrutura de diretório, mas também todos os elementos básicos da estrutura MVC . Para obter as funcionalidades do Apache , as configurações do host virtual serão as seguintes:

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

A estrutura de diretório básica criada será semelhante à mencionada na estrutura de diretório mencionada anteriormente do Zend Framework com explicação semelhante. Há outro aspecto do Zend-Tool que é inicializado automaticamente durante a instalação é a inicialização. Aqui, o objetivo básico é inicializar a solicitação da página pelo desenvolvedor. A entrada principal aqui criada pelo Zend Framework é o arquivo de índice. O arquivo de índice fornece função para lidar com a solicitação do usuário. Este é o principal ponto de entrada para todas as solicitações. A seguir mostra as funcionalidades.

  1. Caminho do aplicativo: define o caminho para o diretório do aplicativo
  2. Application_Env: altera o comportamento do aplicativo dependendo de vários fatores, como a forma como o aplicativo é usado.
  3. getenv (): verifica o ambiente do sistema.
  4. Inicializar o aplicativo Zend-Application: inclui o Zend-Application e cria uma instância dele.
  5. Chame o método bootstrap () junto com o método run () iniciando o MVC .

Em geral, o Zend-Tool cria muitas estruturas de diretório importantes. Este sistema é construído com base na tecnologia de desenvolvimento rápido de aplicativos . Como regra geral de suporte, a estrutura se concentra na codificação e nas estruturas do projeto, em vez de se concentrar em partes menores.

  • Estrutura do diretório do projeto
  • Controladores
  • Ações
  • Visualizações
  • Arquivo de bootstrap

Controladores

O controlador é a principal entrada para o aplicativo Laminas. O front controller handler é o principal hub para aceitar solicitações e executar as ações precisas conforme solicitado pelos comandos. Todo o processo de solicitação e reação é roteamento e despacho (o que basicamente significa chamar métodos corretos em uma classe) que determina a funcionalidade do código. Isso é implementado pela Interface Zend_Controller_Router_-. A funcionalidade do roteador é descobrir quais ações precisam ser executadas e, caso contrário, o despachante executa essas ações solicitadas. O controlador no Laminas está conectado em uma ampla variedade de diretórios estruturais, que fornecem um suporte para um roteamento eficiente. O principal ponto de entrada e controlador de comando é o Zend_Controller_Front, que funciona como uma base que delega o trabalho recebido e enviado. A solicitação é formada e encapsulada com uma instância do Zend Controller Request HTTP , como um provedor de acesso a solicitações HTTP . O HTTP contém todas as superglobais da estrutura ($ _GET, $ _POST, $ _COOKIE, $ _SERVER e $ _ENV) com seus caminhos relevantes. Além disso, o controlador também fornece funções getParam () que permitem a coleção de variáveis ​​solicitadas.

Ações

Ações são funcionalidades importantes. Os controladores não funcionam sem ações. Para este propósito, criamos outro método que tem ação anexada ao seu nome e automaticamente o front controller irá reconhecê-lo como uma ação. O Action possui o método init () que mostra sua natureza privada e não pode ser acessado por ninguém. Os comandos a seguir são executados para que Zend_Tool possa criar ações para nós. Através do uso do despachante padrão, todas as funções são nomeadas após o nome da ação e seguidas pela palavra "Ação" anexada. Isso leva à classe de ação do controlador contendo métodos como indexAction (), viewAction (), editAction () e deleteAction ().

Usuários do Windows:

bin\zf.bat create actions about index

Usuários de Linux e Mac :

bin/zf.sh create action about index

Um exemplo de formulários e ações:

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
    
}

Roteador padrão

O roteador padrão é uma ferramenta importante do Front Controller. Aqui, as principais decisões são tomadas em ordem de módulo, controlador e ação que estão sendo solicitados. Tudo isso é processado aqui. A seguir estão a estrutura padrão.

  1. Módulo
  2. Controlador
  3. Ações

A solicitação segue um padrão, as primeiras informações são obtidas do ponto de extremidade da URL de HTTP . URI é o ponto final da solicitação. A estrutura do URL segue: http://domain.com/moduleName/controllerName/actionName

O exemplo de código do roteador padrão:

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

 
Módulo apenas:
http: // example / news
    module == news
 
Módulo inválido mapeia para o nome do controlador:
http: // example / foo
    controller == foo
 
Module + controller:
http: // example / blog / archive
    module == blog
    controller ==
 
Módulo de arquivo + controlador + ação:
http: // exemplo / blog / arquivo /
    módulo de lista ==
    controlador de blog ==
    ação de arquivo ==
 
Módulo de lista + controlador + ação + parâmetros:
http: // exemplo / blog / arquivo / list / sort / alpha / date / desc
    module == blog
    controller == archive
    action == list
    sort == alpha
    date == desc

Métodos utilitários

O Projeto Laminas também fornece alguns métodos utilitários. A seguir estão alguns métodos utilitários fornecidos na estrutura.

_frente()
é usado para chamar a ação
_forward{$action, $controller = null, $module = null, array $params = null}
$ ações
string, ação necessária
$ controlador
parâmetro de string opcional e é o local onde o controlador está.
$ módulo
string, possui módulo no qual temos o controlador.
$ params
array, parâmetro do usuário

Outro método é o método do utilitário de redirecionamento. Isso é o oposto do método _forward () mencionado anteriormente. _redirect () executa HTTP no redirecionamento na criação de uma nova solicitação. Os métodos _redirect () aceitam dois argumentos, a saber $ url e $ options.

Além disso, os Action Helpers também são uma forma de fornecer funcionalidades extras dentro do framework. Os ajudantes de ação são úteis quando há necessidade de fornecer funcionalidade entre os controladores.

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

Durante a fase de inicialização de IndexController e ContactController, viewReader é chamado e o sinalizador noRender é chamado no objeto de exibição. A falta desse processo cria um erro em nosso aplicativo.

Ver diretórios

O Laminas fornece a estrutura de visualização para nosso projeto e controlador e as ações são fornecidas automaticamente para nosso aplicativo. Dentro da pasta Laminas, observamos as seguintes pastas.

  1. Visualizar
  2. Ajudantes
  3. Scripts
  4. Contatos
  5. erros
  6. índice

Para criar uma visão, nós seguimos:

<!-- 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>

Ver amostra:

// 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;
    }
}

A Zend Technologies , co-fundada pelos contribuidores principais do PHP Andi Gutmans e Zeev Suraski , foi o patrocinador corporativo original do Zend Framework. Os parceiros de tecnologia incluem IBM , Google , Microsoft , Adobe Systems e StrikeIron .

Recursos

As características de laminas incluem:

Desenvolvimento de aplicações

Os aplicativos do Laminas podem ser executados em qualquer pilha PHP que atenda aos requisitos técnicos. A Zend Technologies fornece uma pilha PHP, Zend Server (ou Zend Server Community Edition), que é anunciada para ser otimizada para executar aplicativos Laminas. Zend Server inclui Zend Framework em seus instaladores, junto com PHP e todas as extensões necessárias. De acordo com a Zend Technologies, o Zend Server fornece desempenho aprimorado para PHP e, especialmente, aplicativos Zend Framework por meio de aceleração de opcode e vários recursos de cache, e inclui monitoramento de aplicativos e recursos de diagnóstico. Zend Studio é um IDE que inclui recursos especificamente para integração com o Zend Framework. Ele fornece uma visão MVC, geração de código MVC baseada em Zend_Tool (um componente do Zend Framework), um formatador de código, autocompletar código, assistente de parâmetro e muito mais. Zend Studio não é software livre, enquanto Zend Framework e Zend Server Community Edition são gratuitos. O Zend Server é compatível com ferramentas de depuração comuns, como o Xdebug . Outros desenvolvedores podem querer usar uma pilha PHP diferente e outro IDE, como o Eclipse PDT, que funciona bem com o Zend Server. Uma versão gratuita pré-configurada do Eclipse PDT com Zend Debug está disponível no site da Zend.

Código, documentação e padrões de teste

As contribuições de código para o Laminas estão sujeitas a códigos, documentação e padrões de teste rigorosos. Todo o código deve atender aos padrões de codificação do projeto e os testes de unidade devem atingir 80% de cobertura de código antes que o código correspondente possa ser movido para o branch de lançamento.

API de nuvem simples

Em 22 de setembro de 2009, Zend Technologies anunciou que estaria trabalhando com parceiros de tecnologia como Microsoft , IBM , Rackspace , Nirvanix e GoGrid juntamente com a comunidade Zend Framework para desenvolver uma API comum para cloud serviços de aplicativos chamado de Simples Cloud API . Este projeto é parte do Zend Framework e será hospedado no site Zend Framework, mas um site separado chamado simplecloud.org foi lançado para discutir e baixar as versões mais atuais da API. A API Simple Cloud e vários serviços em nuvem estão incluídos no Zend Framework. Os adaptadores para serviços de nuvem populares alcançaram qualidade de produção.

Hello World: arquivo por arquivo

Para criar o programa Hello World, existem várias etapas, incluindo:

  • Primeiro crie quatro arquivos dentro da estrutura de diretório. Esses arquivos são um arquivo de bootstrap, um arquivo de controle do Apache ( .htaccess ), um arquivo de controlador e um controlador de visualização para a visualização.
  • Em segundo lugar, uma cópia do Zend Framework precisa ser desenvolvida. Com o crescimento da complexidade, é necessário código adicional que fornecerá a funcionalidade e que seja relativamente pequeno e se concentre nos benefícios do sistema MVC . Quanto ao processo em mais detalhes, o arquivo de bootstrap é a inicialização de uma forma ou de outra.

Em seguida, é necessário garantir que o ambiente esteja correto e que não haja erros, seguido pela configuração de data e hora para a funcionalidade de rastreamento. Para definir a data e a hora, muitos procedimentos podem ser seguidos; por exemplo, o método data_default_timezone_set () pode ser chamado e Zend assume que o diretório padrão incluirá o caminho phd. O Zend Framework não depende de nenhum arquivo específico, mas as classes auxiliares são úteis neste caso. A seguir estão alguns exemplos:

  • Zend_Loader :: loadClass () o objetivo principal aqui é corrigir o arquivo para o nome de classe fornecido.
  • Em seguida, os sublinhados são convertidos em estruturas específicas de diretório. Como resultado, as linhas de código Zend_Loader :: loadClass ('Zend_Controller_Front'); e include_once 'Zend / Controller / Front.php'; mostram resultados semelhantes.
  • Zend_Debug :: dump () funciona em termos de informações de depuração e é focado na saída var_dump () formatada. Finalmente, o bootstrap executa o front controller e o inicializa. O padrão de design usado por Zend_Controller_Front é o design Singleton e getInstance () é usado para obter a instância única.

Desenvolvimento atual

Zend Framework 3.0 foi lançado em 28 de junho de 2016. Inclui novos componentes como um servidor JSON RPC, um conversor XML para JSON, funcionalidade PSR-7 e compatibilidade com PHP 7. Zend Framework 3.0 é executado até 4 vezes mais rápido que Zend Framework 2, e os pacotes foram desacoplados para permitir uma maior reutilização. Os contribuidores do Zend Framework estão incentivando ativamente o uso do Zend Framework versão 3.x. O fim da vida útil declarado para Zend Framework 1 é 2016-09-28, e para Zend Framework 2 é 2018-03-31. A primeira versão de desenvolvimento do Zend Framework 2.0 foi lançada em 6 de agosto de 2010. As alterações feitas nesta versão foram a remoção das instruções require_once , migração para namespaces PHP 5.3, um conjunto de testes refatorado, um Zend \ Session reescrito e a adição do novo Zend \ Stdlib . A segunda versão de desenvolvimento foi em 3 de novembro de 2010. A primeira versão estável do Zend Framework 2.0 foi lançada em 5 de setembro de 2012.

Veja também

Referências

links externos