ZendWi Presentation 19/10/2012
Índice 1. Introdução ao Zend Framework 2 2. MVC 3. Zend Tools 4. Estrutura 5. Zend DB Model Generator 6. Back-End Developer 7. Front-End Developer 8. Links Úteis
Introdução ao Zend Framework 2 Zend Framework 2 é um framework de código aberto para o desenvolvimento de aplicações e serviços web usando PHP 5.3 +. Zend Framework 2 usa 100% de código orientado a objetos e utiliza a maior parte dos novos recursos do PHP 5.3, ou seja, espaços de nomes, tarde vinculação estática, funções lambda e encerramentos. Zend Framework 2 evoluíram a partir de um Zend Framework, um framework PHP de sucesso com mais de 15 milhões de downloads. Nota ZF2 não é compatível com ZF1, por causa dos novos recursos do PHP 5.3 + implementadas pelo quadro, e devido ao grande regravações de muitos componentes. A estrutura componente do Zend Framework 2 é único, cada componente é projetado com poucas dependências em outros componentes. ZF2 segue o princípio de design SOLID objeto orientado. Esta arquitetura flexível permite aos desenvolvedores usar qualquer componentes que eles querem. Nós chamamos isso de "usar à vontade" design. Apoiamos Pyrus e compositor como a instalação e os mecanismos de dependência de rastreamento para o quadro como um todo e para cada componente, aumentando ainda mais o seu design. Nós usamos PHPUnit para testar o nosso código e Travis CI como um serviço de integração contínua. Enquanto eles podem ser usados separadamente, Zend Framework dois componentes sob a forma biblioteca padrão uma estrutura de aplicativo poderoso e extensível web quando combinados. Além disso, oferece um robusto e de alto desempenho MVC implementação, uma abstração de banco de dados que é simples de usar, e um componente de formulários que implementa HTML5 renderização forma, validação e filtragem de modo que os desenvolvedores podem consolidar todas essas operações usando um easy-to- usar, objeto de interface orientado. Outros componentes, como o Zend \ Autenticação e Zend \ Permissões \ Acl, fornecer autenticação e autorização do usuário contra todas as lojas credenciadas comuns. Outros ainda, com o namespace ZendService, implementar bibliotecas de cliente para simplesmente acessar os serviços mais populares da web disponível. O que quer que suas necessidades de aplicação são, é provável que você encontrar um Zend Framework 2 componente que pode ser usado para reduzir drasticamente o tempo de
desenvolvimento com uma base completamente testado. O principal patrocinador do projeto Zend Framework 2 'é a Zend Technologies, mas muitas empresas têm contribuído componentes ou recursos significativos para o quadro. Empresas como Google, Microsoft e StrikeIron uma parceria com a Zend para fornecer interfaces de serviços Web e outras tecnologias que desejam colocar à disposição do Zend Framework 2 desenvolvedores. Zend Framework 2 não poderia entregar e suportar todos esses recursos sem a ajuda do Zend Framework 2 vibrante comunidade. Os membros da comunidade, incluindo colaboradores, se tornam disponíveis em listas de discussão, canais de IRC e outros fóruns. Qualquer pergunta que você tem sobre o Zend Framework 2, a comunidade está sempre disponível para resolver. Model View Controller MVC Model: O modelo (model) é usado para definir e gerenciar o domínio da informação e notificar observadores sobre mudanças nos dados. Ele é uma representação detalhada da informação que a aplicação opera. View: A visão (view) apresenta o modelo num formato adequado ao utilizador, na saída de dados, e diferentes visões podem existir para um mesmo modelo, para diferentes propósitos. Controller: O controlador (controller) recebe a entrada de dados e inicia a resposta ao utilizador ao invocar objetos do modelo, e por fim uma visão baseada na entrada. Ele também é responsável pela validação e filtragem da entrada de dados.
Zend Tools Para utilizar a Zend Tools basta iniciar o terminal do linux ou mac, cmd do windows e digita zf que ele lista uma série de comandos para criação de um novo projeto.
Criar um projeto em Zend Framework basta digitar: zf create project nomedoprojeto
Application zf change application.class-name-prefix class-name-prefix Model zf create model name module View zf create view controller-name action-name-or-simple-name module Controller zf create controller name index-action-included[=1] module Action zf create action name controller-name[=index] view-included[=1] module Module zf create module name Form zf enable form module zf create form name module Layout zf enable layout zf disable layout DbAdapter zf configure db-adapter dsn section-name[=production] DbTable zf create db-table name actual-table-name module force-overwrite
Estrutura Pasta_Projeto Application { configs/ controllers/ { NomeControllers.php } models/ { Models.php } views/ { controllers/{ nomeview.phtml } } library/{ Zend/{ ZendFiles/etc... } }
Zend DB Model Generator O que é Zend DB Model Generator? É um gerador de classes na qual chamamos: Models, Mappers, DbTables. Como funciona? Banco criado, classes geradas! Não entendeu? Seguinte, após a criação do banco, nós abriremos o arquivo de configuração do model generator e o configuraremos para o banco que estamos utilizando para que ele tenha acesso e possar gerar todos os arquivos possíveis, então iremos no terminal ou cmd e iniciaremos o comando com: php zend-model-db-generator.php database nome_da_tabela all-tables. Exemplo SQL: CREATE TABLE IF NOT EXISTS `zendwi` ( `id_zendwi` int(11) NOT NULL AUTO_INCREMENT, `titulo` varchar(225) NOT NULL, `descricao` text NOT NULL, `ativo` int(1) NOT NULL, `data_cadastro` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id_zendwi`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Exemplo de uso Db-Generator: Config: <?php $config=array( # author name used in documentation 'docs.author' => 'Web Interativa', # licence for your code 'docs.license' => 'http://www.webinterativa.com.br', # copyright for your (generated) code 'docs.copyright' => 'ZF model generator - Over Web Interativa', # database type 'db.type' => 'mysql', # database host 'db.host' => '127.0.0.1',...
Executando ZDMG:
Arquivos criados: Link principal do projeto: http://code.google.com/p/zend-db-model-generator/downloads/list
Exemplo de utilização no Controller: Back-End Developer public function indexaction() { } $ZendWi = new Default_Model_Mapper_Zendwi(); $qtd = $ZendWi->getDbTable() ->countallrows(); $this->view->qtd = $qtd; Exemplo de utilização na View: <?php?> <html> </html> var_dump($this->qtd); <head> <meta charset="utf-8"> <title>visão IndexController</title> </head> <body> <p>esta é a visão.</p> </body>
Bootstrap.php <?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initviews() { $this->bootstrap("view"); $view = $this->getresource("view"); $view->doctype('html5'); $view->headtitle('zendwi')->setseparator(' '); $view->headmeta()->appendhttpequiv('content-type', 'text/html; charset=utf-8'); } } Zend_Registry::set('view', $view);
Configuração(application.ini), Exemplo Padrão: [production] phpsettings.display_startup_errors = 1 phpsettings.display_errors = 1 includepaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" appnamespace = "Default" resources.frontcontroller.controllerdirectory = APPLICATION_PATH "/controllers" resources.frontcontroller.baseurl = "/" resources.frontcontroller.params.displayexceptions = 1 phpsettings.date.timezone = "America/Recife" resources.layout.layoutpath = APPLICATION_PATH "/layouts/scripts/" resources.view.doctype = "XHTML1_STRICT" resources.db.adapter = resources.db.params.host = resources.db.params.username = resources.db.params.password = resources.db.params.dbname = "pdo_mysql" "localhost" "root" "password" "banco" [staging : production] [testing : production] phpsettings.display_startup_errors = 1 phpsettings.display_errors = 1 [development : production] phpsettings.display_startup_errors = 1 phpsettings.display_errors = 1 resources.frontcontroller.params.displayexceptions = 1
Front-End Developer Utilizando Zend Layout: zf enable layout /application/layouts/scripts/layout.phtml arquivo: layout.phtml <html> <head> <?=$this->headmeta()?> <?=$this->headtitle()?> <?=$this->headlink() ->prependstylesheet($this->baseurl('/'). "caminhocss/")?> <?=$this->headscript() ->appendfile($this->baseurl('/'). "caminhojs/")?> </head> <body> </body> <div class='topo'> TOPO </div> <div class="main"> <?=$this->layout()->content;?> </div> <div class="rodape"> RODAPÉ </div> </html> Arquivos de CSS, JavaScript e Imagens ficarão alocados em: /PastaProjeto/public/[css][js][imgs]
Links Úteis http://zend.com http://youtube.com/geovannylc http://code.google.com/p/zend-db-model-generator/ PS: A versão que está sendo mencionada é anterior a recente. Um novo relatório será realizado após a obtenção de novos dados sobre a nova versão da ferramenta. http://framework.zend.com/