Sie sind auf Seite 1von 39

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Curso de Inicia c ao ao Framework PHP Yii


Igor Rafael igor at dcc.ufmg.br

12 de agosto de 2011

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Conte udo

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Vis ao Geral
O que e um framework?

Cole c ao de bibliotecas API - Interface de Programa c ao de Aplicativos Funcionalidades gen ericas customiz aveis

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Vis ao Geral
O que e um framework?

Frameworks s ao bibliotecas? N ao!

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Vis ao Geral
O que e um framework?

Invers ao de controle Comportamento padr ao Extensibilidade N ucleo do c odigo n ao pode ser modicado 1

http://en.wikipedia.org/wiki/Software framework

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Vis ao Geral
Quando eu preciso de um framework?

Aplica c oes semelhantes: sistemas de gest ao, e-commerce, etc Aumentar o paralelismo do desenvolvimento o quanto antes Reduzir custos de manuten c ao: fatora c ao de funcionalidades

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Vis ao Geral
Apresentando o framework Yii

Framework PHP Alto-desempenho Baseado em componentes Aplica c oes Web: portais, forums, CMS, e-commerce, etc Desenvolvimento em larga escala

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Vis ao Geral
Benef cios ao utilizar o Yii

Separa c ao entre interface de usu ario, regras de neg ocio e

modelo de dados: MVC


Seguran ca: autentica c ao, autoriza c ao e preven c ao contra

ataques XSS, CSRF e cokkies


Cache: componentes para m ultiplos n veis de cache Modulariza c ao: organiza c ao de componentes relacionados Gera c ao autom atica de c odigo: Gii Tratamento de erros: facilita associa c ao de erros ao tratador

correto
Internacionaliza c ao: tradu c ao de mensagens, formatos de

data, hora e n umeros


e muito mais... Acredite, a lista e longa!

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Congura c ao do Ambiente Yii

Pr e-requisitos: Yii Framework: vers ao 1.1.82 XAMPP: vers ao 1.7.4 ou WAMPP: vers ao 2.1e Passos: Descompactar o Yii no diret orio do apache (htdocs ou www) Checar os requisitos: http://localhost/yii-1.1.8/requirements/ Criar aplica c ao de teste:
Linux: yii/framework/yiic webapp teste Windows: ..\bin\php \php 5.3.5\php .exe yii \framework \yiic .php webapp teste

http://www.yiiframework.com/

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Congura c ao do Ambiente Yii

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Fundamentos
Como o Yii funciona

assets: recursos publicados css images themes protected: arquivos protegidos da aplica c ao components: componentes adicionais cong: congura c ao da aplica c ao controllers: regras de neg ocio data: sql de cria c ao/congura c ao do banco de dados extensions: extens oes para o framework messages: tradu c ao de mensagens para UI models: modelo de dados runtime: arquivos tempor arios tests: scripts de teste da aplica c ao views: interface gr aca da aplica c ao

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Fundamentos
Como o Yii funciona

Conex ao com o banco de dados Criar database teste - phpMyAdmin Executar sql protected/data/schema.mysql.sql Congurar conex ao protected/cong/main.php - application components

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Fundamentos
Como o Yii funciona

Gerando c odigo com o Gii Habilitar o Gii: protected/cong/main.php - modules Denir uma senha - N ao pode ser vazia Acessar http://localhost/teste/index.php?r=gii Model Generator: tbl user CRUD Generator: User http://localhost/teste/index.php?r=user

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Fundamentos
Como o Yii funciona

Implementa o design pattern3 MVC - Model View Controller4 Amplamente utilizado em frameworks Web Separa l ogica de neg ocio da interface de usu ario Model (modelo): representa a informa c ao e regras de neg ocio View (vis ao): contem os elementos de UI como texto e campos de formul ario Controller (controlador): gerencia comunica c ao entre Model e View, cuida de valida c ao e ltragem de dados

3 4

http://en.wikipedia.org/wiki/Desig Patterns http://en.wikipedia.org/wiki/Model-view-controller

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Fundamentos
Como o Yii funciona

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Fundamentos
Como o Yii funciona

Acesso a um blog desenvolvido em Yii http://www.example.com/index.php?r=post/showid=1

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Fundamentos
Como o Yii funciona

1. requisi c ao ` a URL aciona index.php. 2. cria c ao da aplica c ao 3. informa c oes da requisi c ao 4. controlador (PostController) e a c ao 5. instancia e aciona a c ao (actionShow) 6. carrega post (ID=1) em modelo (Post) 7. a c ao carrega view (show) com o modelo 8. view exibe atributos do modelo 9. view carrega widgets necess arios 10. view e inserida em um layout 11. a c ao envia renderiza c ao ao usu ario

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Fundamentos
MVC

1. Controladores - CController 2. Modelos - CModel 3. Vis oes - c odigo html + php

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Casos de Uso
5

Cadastrar colaboradores da empresa Cadastrar projetos, cujo respons avel deve ser um colaborador

cadastrado
Cadastrar atividades gerais, que s ao usualmente utilizadas nos

projetos
Apropriar esfor co realizado em uma atividade por um

colaborador alocado em um projeto


Alocar um colaborar ` a um projeto durante um per odo de

tempo com uma dedica c ao di aria

http://en.wikipedia.org/wiki/Use case

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Hist orias de Usu ario
6

Como gerente, preciso gerenciar os colaboradores da minha

empresa para que eu tenha os registros de todos os funcion arios que j a passaram pela mesma
Como gerente, preciso administrar os projetos que realizo para

que a diretoria acompanhe o andamento do trabalho


Como gerente, preciso cadastrar atividades gerais para que

possamos acompanhar o esfor co investido na mesma em diversos projetos


Como colaborador, preciso apropriar as horas que trabalhei

para facilitar o acompanhamento das minhas atividades


Como gerente, preciso alocar um colaborar ` a um projeto

durante um per odo de tempo com uma dedica c ao di aria para dimensionar o tamanho da minha equipe ao longo do projeto
6

http://en.wikipedia.org/wiki/User story

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Modelo de Dados

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Congura c ao

Importa c ao do banco de dados7 : phpMyAdmin Cria c ao da aplica c ao: yiic Alterar nome da aplica c ao: cong/main.php Congura c ao do banco de dados: cong/main.php Habilita c ao do Gii: cong/main.php Gerar modelos e CRUDs: Gii Alterar menu: views/layouts/main.php Proteger acesso via login menu: propriedade visible controladores: accessRules

http://homepages.dcc.ufmg.br/igor/classes/yiiframework/gestao horas.sql

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Alternativa para a prote c ao de acesso via login

Alterar o template utilizado pelo Gii Editar o arquivo yii/framework/gii/generators/crud/templates/default/controller.php Outras possibilidades: Extender o comportamento do gerador de c odigo Copiar o template atual para protected/gii/templates/safe/ e fazer as altera c oes

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Apresenta c ao visual

Corrigir r otulos: attributeLabels nos modelos Corrigir textos O Yii gera texto padr ao para os formul arios (e.g. Create Colaboradors) Tal texto pode ser alterado nas p aginas (admin.php, form.php, create.php, etc) de cada modelo: views/<nomeDoModelo>/<nomeDaVis ao>.php

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Utilizando dropDownList em chaves estrangeiras

Editar form.php: views/projeto/ form.php Encontrar campo que ser a alterado:

responsavel idColaborador
Substituir $form->textField(...) para

$form->dropdownlist($model,responsavel idColaborador, CHtml::listData(Colaborador::model()->ndAll(), id, nome)); Alternativa


Criar m etodo para montar op c oes: getColaboradoresList no

modelo Projeto
Editar form.php para utilizar o m etodo criado

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Utilizando janelas modais para formul arios8

Incluir no form.php o link para a janela Instanciar componente CJuiDialog: form.php Criar JS para tratar click no link: form.php Alterar controlador para tratar chamada Ajax:

NomeDoControladorController.php
Exerc cio para pr oxima aula: Atualizar o drowpDownList ao

fechar a janela

http://www.yiiframework.com/wiki/145/cjuidialog-for-create-new-model

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Internacionaliza c ao

A linguagem padr ao do Yii e o Ingl es Para mudar para o portugu es devemos Editar as congura c oes da aplica c ao: cong/main.php Incluir atributo language=>pt no primeiro n vel do arranjo (e.g. logo ap os a propriedade name) Nem todas as mensagens ser ao traduzidas, verique se as

mesmas est ao sendo exibidas atrav es da fun c ao Yii::t (e.g. <h1><?=Yii::t(app,Contact Us)?></h1> ao inv es de <h1>Contact Us</h1> na view site/contact.php)
Crie a pasta pt dentro de protected/messages Crie nessa pasta o arquivo app.php

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Internacionaliza c ao

Conte udo inicial do arquivo protected/messages/pt/app.php

<?php return array( Contact Us => Entre em contato ); ?>

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Atividades de xa c ao

Utilizar dropDownList em todas as chaves estrangeiras de

todos os modelos
Traduzir as vis oes para portugu es Utilizar o CJuiDialog para o campo Equipe no modelo

Colaborador (semelhante ao que foi feito com CategoriaAtividade e Atividade) Esconder chaves prim arias de todos os modelos
Alterar as tabelas no banco de dados para que as chaves

prim arias sejam auto increment


Retirar o campo ID dos formul arios

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Melhorando visualiza c ao de relacionamentos

as vis oes index/view/admin por enquanto exibem IDs de

chaves estrangeiras para substituir pelo item correspondente:


alterar nome do relacionamento: models (e.g. Alocacao.php:

mudar projetoIdProjeto para projeto)


incluir atributo nos labels (e.g. Alocacao.php:

projeto.nome=>Projeto)
alterar atributo utilizado nas vis oes (e.g.

view/alocacao/admin.php: projeto idProjeto para projeto.nome no CGridView)

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Melhorando visualiza c ao de relacionamentos

adaptando o CGridView: incluir atributo no modelo (e.g. Alocacao.php: public $projetoNome;) alterar regra da busca (m etodo rules) para incluir o atributo (e.g. trocar projeto IdProjeto para projetoNome) alterar m etodo search para incluir relacionamento criteria > with = array ( projeto ); criteria > together = true ; . . . criteria > compare ( projeto .nome ,this->projetoNome, true);

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Melhorando visualiza c ao de relacionamentos

adaptando o CGridView: alterar par ametros do widget CGridView //projeto.nome, array( name=>projetoNome, value=>data > projeto > nome , type=>text, header=>Projeto, ),

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Formata c ao de datas

admin.php: par ametros do CGridView

//dataInicial, array( name=>dataInicial, value=>Yii::app()->dateFormatter-> formatDateTime($data->dataInicial, medium,null), ),


view.php:

<b><?php echo CHtml::encode($data->getAttributeLabel (dataInicial)); ?>:</b> <?php echo CHtml::encode(Yii::app()->dateFormatter-> formatDateTime($data->dataInicial,medium,null)); ?><br />

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Formata c ao de datas

view.php: par ametros do CDetailView

array( name=>dataInicial, value=>Yii::app()->dateFormatter-> formatDateTime($model->dataInicial, medium,null), ),

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Formata c ao de datas

form.php: utilizar o CJuiDatePicker

<div class="row <?php echo $form->labelEx($model,dataInicial); ?> <?php $this->widget(zii.widgets.jui.CJuiDatePicker, array(name=>dataInicial, model=>$model, attribute=>dataInicial, value=>$model->dataInicial, options=>array(dateFormat=>dd/mm/yy), ));?> <?php echo $form->error(model , dataInicial ); ? > </div>

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Formata c ao de datas

Alternativa utilizando behaviors: beforeSave

public function beforeSave() { if ($this->dataInicial == ) $this->setAttribute(dataInicial, null); else $this->dataInicial=implode(-,array reverse( explode(/,$this->dataInicial))); if ($this->dataFinal == ) $this->setAttribute(dataFinal, null); else $this->dataFinal=implode(-,array reverse( explode(/,$this->dataFinal))); return parent::beforeSave(); }

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Formata c ao de datas

Alternativa utilizando behaviors: afterFind

public function afterFind() { if(!is null($this->dataInicial)) $this->dataInicial=Yii::app()->dateFormatter-> ($this->dataInicial,medium,null); if(!is null($this->dataFinal)) $this->dataFinal=Yii::app()->dateFormatter-> ($this->dataFinal,medium,null); return parent::afterFind(); }

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Estudo de caso: Aplicativo de gest ao de horas


Passos no desenvolvimento de uma aplica c ao Yii

Criar esqueleto da aplica c ao: yiic Congurar a aplica c ao: cong/main.php Criar um modelo para cada entidade do banco de dados Criar um controlador para cada tipo de requisi c ao do usu ario Implementar a c oes e suas respectivas vis oes Congurar ltros para as a c oes dos controladores Congurar internacionaliza c ao e mapear mensagens Preparar a aplica c ao para o ambiente de produ c ao:

http://www.yiiframework.com/doc/guide/ 1.1/en/topics.performance

Vis ao Geral

Congura c ao

Fundamentos

Estudo de caso

Refer encias I

Yii Framework Guide http://www.yiiframework.com/doc/guide/ CJuiDialog example http://www.yiiframework.com/wiki/145/cjuidialog-for-createnew-model

Das könnte Ihnen auch gefallen