Cezar Junior de Souza
Centro de Residência em Software - Unochapecó
O que é um framework
•

“Framework é um conjunto de classes que
colaboram para realizar uma responsabilidade
para um domínio de um subsistema de
aplicação.”
Fayad e Shmidt

•

“Um framework é um conjunto de classes
que provê a abstração para resolver uma
família de problemas.”
Johnson e Foote
Vantagens em utilizar um
Framework
●

Redução no custo total do desenvolvimento;

●

Consistência;

●

Compatibilidade entre aplicações;

●

Padronização;

●

Redução da manutenção dos sistemas;

●

Erros detectados mais rapidamente;

●

Otimização dos recursos de desenvolvimento.
Alguns Frameworks
Um pouco sobre Zend
Zend Framework é um framework para aplicações
Web de código aberto, orientado a objetos,
implementado em PHP 5 e licenciado como New
BSD
License(Livre).
Zend
Framework
é
desenvolvido com o objetivo de simplificar o
desenvolvimento web enquanto promove as
melhores
práticas
na
comunidade
de
desenvolvedores PHP.
Empresas envolvidas
Certificados
MVC
Componentes Zend
Árvore de Pastas
Zend Tool


Zend Tool, como o nome já diz, é uma
ferramenta para linha de comando que nos
ajuda a gerar código para nossas aplicações.
Criando um Projeto


zf create project projeto
Árvore de Pasta – Zend Tool
Bootstrap (index.php)





Arquivo principal da aplicação;
Define todos os caminhos onde os arquivos
estão armazenados, e todos os componentes
que a aplicação vai utilizar assim como o inicio
da sessão e a definição de váriaveis staticas
que serão utilizadas na aplicação;
Responsável por inicializar a aplicação;
IndexController
<?php
class IndexController extends Zend_Controller_Action{
public function indexAction(){
$this->view->data = date('Y-m-d H:i:s');
}
}
Index.phtml
<html>
<head><title>Index</title></head>
<body>
<h1>Index Controller</h1>
<?php echo $this->data; ?>
</body>
</html>
.htaccess Permissões / URL's
RewriteEngine on
RewriteRule !.(ico|gif|txt|jpg|png|css|js|swf|svg|html|htm)
$ index.php
URL's
http://localhost/zend/projeto/classe/método


Exemplo:
http://localhost/zend/capacitacao/index
http://localhost/zend/capacitacao/admin
http://localhost/zend/capacitacao/index/exibir
http://localhost/zend/capcitacao/admin/cadastro
application.ini
Caminho:
/zend/projeto/application/configs/application.ini
zf configure db-adapter
"adapter=PDO_PGSQL&host=localhost&
dbname=curso_php&username=postgres
&password=root"
Models
Caminho: /zend/projeto/models
<?php
class Acessorios extends
Zend_Db_Table_Abstract{
protected $_name = 't_acessorio';
protected $_primary = 'ac_codigo';
}
Pegar dados do banco
No controller:
public function exibirAction(){
$acessorios = new Acessorios();
$this->view->dados = $acessorios->fetchAll();
}
Pegar dados do banco


Na visão
<?php
foreach($this->dados as $a){
echo $a['ac_descricao'];
}
?>
Insert
public function inserirAction(){
$dados = array(
'ac_descricao' => 'inserindo zend'
);
$acessorios = new Acessorios();
$acessorios->insert($dados);
$this->_redirect('index/exibir');
}
Update
public function updateAction(){
$dados = array(
'ac_descricao' => 'update'
);
$acessorios = new Acessorios();
$db = $acessorios->getAdapter();
$where = $db->quoteInto('ac_codigo = ?', 11);
$acessorios->update($dados, $where);
$this->_redirect('index/exibir');
}
Delete
public function deleteAction(){
$acessorios = new Acessorios();
$db = $acessorios->getAdapter();
$where = $db->quoteInto('ac_codigo = ?', 11);
$acessorios->delete($where);
$this->_redirect('index/exibir');
}
Paginação
No controller:
public function paginacaoAction(){
$acessorios = new Acessorios();
$res = $acessorios->fetchAll();
$paginator =Zend_Paginator::factory($res);
$current = $this->_getParam('page', 1);
$paginator->SetCurrentPageNumber($current)
->setItemCountPerPage(5);
$this->view->paginator = $paginator;
}
Paginação
Na visão:
<?php
if(count($this->paginator)>0){
foreach ($this->paginator as $a){
echo '<h3>'.$a['ac_codigo'].'</h3>'.'<br>'.
$a['ac_descricao']; ?>
<br><br>
<?php
}
echo $this->paginationControl($this->paginator, 'Sliding',
'partials/paginator.phtml');
}
?>
Busca
public function buscarAction(){
$post = Zend_Registry::get('post');
$acessorios = new Acessorios();
if ($post->buscar){
$db = $acessorios->getAdapter();
$where = $db->quoteInto('ac_descricao LIKE ?', '%'.
$post->buscar.'%');
}
$res = $acessorios->fetchAll($where);
$paginator = Zend_Paginator::factory($res);
$current = $this->_getParam('page', 1);
$paginator->SetCurrentPageNumber($current)
->setItemCountPerPage(5);
$this->view->paginator = $paginator;
}
Busca
<form action="<?php echo BASE_URL;?>/index/buscar"
method="post">
Buscar: <input type="text" name="buscar" /><input type="submit"
value="Buscar" />
</form>
<?php
if(count($this->paginator)>0){
foreach ($this->paginator as $a){
echo '<h3>'.$a['ac_codigo'].'</h3>'.'<br>'.$a['ac_descricao']; ?>
<br><br>
<?php
}
echo $this->paginationControl($this->paginator, 'Sliding',
'partials/paginator.phtml');
}
?>
Validações
Algumas das Validações Mais Utilizadas:



Zend_Validate_Alnum();
Zend_Validate_Alnum(array('allowWhiteSpace'
=> true));



Zend_Validate_EmailAddress();



Zend_Validate_NotEmpty();



Zend_Validate_Int();
Zend Form
O Zend_Form é um componente que permite que
formulários sejam criados e mantidos usando-se objetos,
aumentando produtividade e mantendo um padrão de
desenvolvimento. É possível também com o Zend_Form, a
implementação de formulários com herança, ou seja, você
tem um formulário genérico (ex: PessoaForm) que pode ser
utilizado para criação de outros (ex: AdministradorForm)
que possuiriam apenas alguns campos adicionais além do
form padrão.
Ele também possui componentes que permitem a utilização
de todos os Filters e Validators do Zend, bem como a
implementação de Componentes personalizados.
Zend Form


Criando um formulário:
zf create form LoginForm
Zend Form


Formulário de Login:
<?php
class Application_Form_LoginForm extends Zend_Form
{
public function init()
{
//nome do formulário
$this->setName('Login');
//elemento para o campo username
$username = new Zend_Form_Element_Text('username');
//configura
Zend Form


Formulário de Login:
//configurar o label, dizer q é obrigatório, adicionar um
filtro e um validador
$username->setLabel('Login') ->setRequired(true)
->addFilter('StripTags')->addValidator('NotEmpty');
//elemento para a senha
$password = new Zend_Form_Element_Password('password');
$password->setLabel('Senha')->setRequired(true)
->addFilter('StripTags')->addValidator('NotEmpty');
$submit = new Zend_Form_Element_Submit('submit');
$submit->setLabel('Entrar');
$submit->setAttrib('id', 'Entrar');
Zend Form


Formulário de Login:

}
}

//exemplo de class css
//$submit->setAttrib('class', 'verde buttonBar');
//adicionar os campos ao formulário
$this->addElements(array($username, $password, $submit));
//action e method
$this->setAction('/index/index')->setMethod('post');
Zend Form


Setar Atributos:
->setAttrib('maxlength','200');



Setar Validadores:
->addValidator('Alpha', true, 'allowWhiteSpace');
->addValidator('EmailAddress');
->addValidator('StringLength', true, array(0,
2000));
http://framework.zend.com/manual

Zend Framework 1.11