Observações
Zend Framework 2 (ZF2) é uma moderna e flexível framework PHP que ajuda na web programadores para criar aplicativos da web de diferentes complexidades. O principal patrocinador da empresa Zend Framework é a Zend Technologies, o que a torna muito forte e estável. Existem duas grandes melhorias nesta segunda versão sobre o ZF1. Primeiro, uma arquitetura baseada em módulo foi adotada por padrão sem nenhum ajuste. Isso é útil ao desenvolver um aplicativo da web de grande porte que requer uma decomposição em módulos. Em segundo lugar, ZF2 implementa todos os recursos PHP5.3+ pode oferecer particularmente os namespaces. Nas versões anteriores, um controlador de classe é denominada da seguinte forma:
class IndexController extends Zend_Controller_Action{}
Essa mesma classe é reescrito da seguinte forma ZF2:
namespace Application\Controller;use Zend\Mvc\Controller\AbstractActionController;class IndexController extends AbstractActionController{}
A seguir estão alguns outros recursos interessantes do ZF2:
- Injeção de Dependência
- EventManager
- ServiceManager
Um simples Olá Mundo
Na linha de comando, entre no diretório que você deseja criar o projeto e, em seguida, digite: composer create-project zendframework/skeleton-application helloWorldTest
. Durante a instalação, você será perguntado se deseja uma instalação mínima: digamos que sim no momento, estamos apenas testando.
por uma questão de simplicidade, usaremos o servidor CLI PHP integrado. Na linha de comando, entre no diretório raiz do seu projeto (helloWorldTest
) e execute : php -S 0.0.0.0:8080 -t public/ public/index.php
. Agora, abra seu navegador da web e vá para http://localhost/, você deve ver a página de boas-vindas do aplicativo ZF2 Skeleton.
se você fizer isso, vamos agora configurar uma nova página. Em module/Application/config/module.config.php
você pode ver que uma rota dinâmica é já o programa de configuração para a subpasta da aplicação:
return , 'application' => ', 'defaults' => , ], ], ], ],
Definir uma nova acção “helloWorldAction()
” em module/Applicaiton/src/Controller/IndexController.php
:
class IndexController extends AbstractActionController{ public function indexAction() { ... } public function helloWorldAction() { return new ViewModel(); }}
Finalmente, crie o arquivo de modo de exibição module/Application/view/application/index/hello-world.phtml
com o seguinte conteúdo:
<?phpecho "Hello World !";
Agora, vá para http://localhost/application/hello-world, e dizer oi para ZF2 !
como criar uma fábrica
quando uma classe precisa ser fornecida com dependências rígidas, a melhor prática é usar um padrão de injeção de construtor onde essas dependências são injetadas usando uma fábrica.
vamos supor que MyClass
é difícil dependente de um valor $dependency
que precisa ser resolvido a partir da configuração do aplicativo.
<?phpnamespace Application\Folder;use Zend\ServiceManager\FactoryInterface;use Zend\ServiceManager\ServiceLocatorInterface;class MyClass{ protected $dependency; public function __construct($dependency) { $this->dependency = $dependency; }}
para injetar essa dependência, uma classe de fábrica é criada. Esta fábrica resolverá a dependência da configuração e injetará o valor de configuração na construção da classe e retornará o resultado:
<?phpnamespace Application\Factory;use Zend\ServiceManager\FactoryInterface;use Zend\ServiceManager\ServiceLocatorInterface;class MyClassFactory implements FactoryInterface{ public function createService(ServiceLocatorInterface $serviceLocator) { $config = $servicelocator->get('Config'); $dependency = $config; $myClass = new MyClass($dependency); return $myClass; }}
agora que a classe factory foi criada, ela deve ser registrada dentro da configuração do Gerenciador de serviços no arquivo de configuração do módulo module.config.php
nas principais fábricas. É uma boa prática usar os mesmos nomes, tanto para a classe e a fábrica, de modo que é fácil encontrá-las na pasta de projeto árvore:
<?phpnamespace Application;return array( //... 'service_manager' => ], //...);
Alternativamente, o nome da classe de constantes pode ser utilizada para registrá-los:
<?phpnamespace Application;use Application\Folder\MyClass;use Application\Factory\MyClassFactory;return array( //... 'service_manager' => ], //...);
Agora a classe pode ser recolhida no service manager usando a chave que usamos quando registar a fábrica para essa classe:
$serviceManager->get('Application\Folder\MyClass');
ou
$serviceManager->get(MyClass::class);
o Gerenciador de serviços encontrará, coletará e executará a fábrica e, em seguida, retornará sua instância de classe com a dependência injetada.
instalação ou configuração
instruções detalhadas sobre como configurar ou instalar o Zend Framework 2. Existem várias maneiras de instalar a estrutura. Abaixo estão alguns deles:
usando Composer-Recommended way
supondo que composer
esteja instalado na caixa de destino.
Para instalar um esqueleto aplicativo MVC, execute no terminal para criar um novo zend framework 2 do projecto no local especificado:
php composer.phar create-project -sdev \ --repository-url="https://packages.zendframework.com" \ zendframework/skeleton-application path/to/install
para instalar manualmente um mínimo de ZF2 (MVC do Zend + seu punhado de dependências), executar na linha de comando:
composer require zendframework/zend-mvc
ou para uma completa ZF2 (+64 módulos):
composer require zendframework/zendframework`
Por favor, note que a primeira opção executa um instalador que irá fornecer-lhe com um totalmente functionnal aplicação, juntamente com o habitual aplicação de estrutura de pastas. Outras opções permitirão que você construa todo o aplicativo do zero, pois ele simplesmente fornece módulos ZF2 para construir.
Usando o Git Submódulos
Execute o comando abaixo para clonar zf2 e dependências recursivamente a partir do Github:
git clone git://github.com/zendframework/ZendSkeletonApplication.git --recursive
HTTP Configuração do Servidor
Uma aplicação web normal requer a execução de um serviço HTTP escutando uma porta dedicada (normalmente :80) para passar a receber solicitações de aplicação, processo e servir a saída (resposta) de volta.
Nota: Você também pode escrever aplicativos com reconhecimento de console no Zend Framework 2 sem a necessidade de um Servidor HTTP.
Opção 1-servidor CLI PHP
a maneira mais simples de começar se você estiver usando o PHP 5.4 ou superior é iniciar o servidor CLI PHP interno no diretório raiz.
vá para o diretório do projeto e execute:
php -S 0.0.0.0:8080 -t public/ public/index.php`.
isso iniciará o CLI-server integrado na porta 8080
e o vinculará a todas as interfaces de rede.
Opção 2 – Um Servidor HTTP personalizado
Configure um virtualhost no servidor Apache ou Microsoft IIS ou Nginx e passe as solicitações HTTP recebidas para o aplicativo.