Introdução
Evandro Klimpel Balmant
@EvandroBalmant
Framework ?
“Framework é um conjunto de classes
que colaboram para realizar uma responsabilidade
para um domínio de um subsistema da aplicação.”
FAYAD e SCHMIDT
“Em desenvolvimento de software,
um framework ou arcabouço é uma abstração que
une códigos comuns entre vários projetos de
software provendo uma funcionalidade genérica.”
Wikipédia
DRY
Don‘t repeat yourself
“Não se repita”
“É um princípio de desenvolvimento de software com
vista a reduzir a repetição de informações de todos
os tipos.”
Wikipédia
Zend Framework ?
Jiraya
Framework
Zend ?
Arquitetura MVC
Componentes Zend
Configuração Básica
Nome do Projeto
Diretório da Aplicação
Arquivos de Configuração
Controladoras
Controladora Principal
Models
Views
Templates
Templates da Controladora Index
Template do Método indexAction()
Definição de permissão de acesso
Arquivos de Documentação
Bibliotecas
Classes do Zend Framework
Definição de permissão de acesso
Arquivos Públicos
Folhas de estilo
Imagens
JavaScrips
Definição de permissão de acesso
Definição de permissão de acesso
Bootstrap
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 utilizar;
• Responsável por inicializar a aplicação, ele invoca
os arquivos de controlador que são responsáveis
pelo funcionamento da aplicação.
index.php (Bootstrap)
<?php
/** Identifica o sistema operacional do servidor, considerando que podem ser
Windows ou Linux */
$operationalSystem = stripos($_SERVER['SERVER_SOFTWARE'],'win32') !==
FALSE ? 'WINDOWS' : 'LINUX';
$pathSeparator = $operationalSystem == 'WINDOWS' ? ';' : ':';
/** Configura o caminho a ser procurado em todos os includes */
$path = $pathSeparator . 'library';
$path .= $pathSeparator . 'application' . DIRECTORY_SEPARATOR . 'models';
$path .= $pathSeparator . 'application' . DIRECTORY_SEPARATOR .
'controllers';
set_include_path(get_include_path() . $path);
/** Zend_Loader_Autoloader carrega arquivos, classes e recursos*/
require_once('Zend/Loader/Autoloader.php');
/** Inicializa o autoloader */
$autoloader = Zend_Loader_Autoloader::getInstance();
/** Configurar para que outras classes sem namespace sejam incluidas */
$autoloader->setFallbackAutoloader(true);
index.php (Bootstrap)
/** Parte das Visões */
/** Cria um novo objeto do tipo view */
$view = new Zend_View();
$view->setEncoding('UTF-8');
$view->setEscape('htmlentities');
/** Definindo diretório onde estarão as views */
$view->setBasePath('./application/views/');
/** Registra na memória o objeto $view */
Zend_Registry::set('view', $view);
/** Configura o controlador do projeto, que por acaso, é o index.php */
$baseUrl = substr($_SERVER['PHP_SELF'], 0, strpos($_SERVER['PHP_SELF'],
'/index.php'));
/** Cria uma nova instância da classe controladora */
$frontController = Zend_Controller_Front::getInstance();
/** Configura o endereço do controlador do projeto */
$frontController->setBaseUrl($baseUrl);
/** Indica o diretório onde estão os outros controladores da aplicação */
$frontController->setControllerDirectory('./application/controllers');
/** O controlador deve tratar as excessões */
$frontController->throwExceptions(true);
index.php (Bootstrap)
/** Carrega configurações da base de dados.
* do arquivo config.ini na sessão database */
$config = new Zend_Config_Ini('./application/configs/config.ini', 'database');
/** Registra na memória a variável config */
Zend_Registry::set('config', $config);
/** Configura a conexão com a base de dados, pegando as variáveis do arquivo
de configuração */
$db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray());
Zend_Db_Table_Abstract::setDefaultAdapter($db);
/** Registra a variável db */
Zend_Registry::set('db',$db);
/** Configura o formato para data */
date_default_timezone_set("America/Sao_Paulo");
/** Executa o controlador do projeto
* Ele Irá receber todas as requisições */
$frontController->dispatch();
?>
IndexController
<?php
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$this->view->assign('data', date('d/m/Y'));
}
}
?>
index.phtml
<html>
<head>
<title>Hello World</title>
</head>
<body>
<p>Olá, hoje é dia <?=$this->data?>.</p>
</body>
</html>
.htaccess (URL’s Amigáveis / Permissões)
RewriteEngine on
RewriteRule .* index.php
php_flag magic_quotes_gpc off
php_flag register_globals off
Arquivo: .htaccess
deny from all
Arquivo: application/.htaccess
RewriteEngine off
Arquivo: library/.htaccess
Arquivo: public/.htaccess
URL’s
http://localhost/ Classe: IndexController
Método: indexAction()
http://localhost/produtos Classe: ProdutosController
Método: indexAction()
http://localhost/produtos/cadastro Classe: ProdutosController
Método: cadastroAction()
http://localhost/loja-virtual Classe: LojaVirtualController
Método: indexAction()
config.ini
[database]
db.adapter = PDO_MYSQL
db.config.host = localhost
db.config.username = root
db.config.password = root
db.config.dbname = nome_banco
Arquivo: application/configs/config.ini
DAO (Zend_Db_Table)
<?php
class Produto extends Zend_Db_Table
{
protected $_name = “tb_produto”;
}
?>
Arquivo: application/models/Produto.php
Insert
<?php
$dao = new Produto();
$dados = array(
‘titulo’ => ‘Blablablabla’,
‘descricao’ => ‘Nononononono’
);
$dao->insert($dados);
?>
Select
<?php
$dao = new Produto();
$sql = $dao->select()
->from($dao, array(‘titulo’,’descricao’))
->order(‘titulo’);
$dados = $dao->fetchAll($sql)->toArray();
?>
Update
<?php
$dao = new Produto();
$dados = array(
‘titulo’ => ‘Blablablabla’,
‘descricao’ => ‘Nononononono’
);
$where = $dao->getAdapter()->quoteInto(‘id = ?’, 10);
$dao->update($dados, $where);
?>
Delete
<?php
$dao = new Produto();
$sql = $dao->getAdapter()->quoteInto(‘id = ?’,
10);
$dao->delete($sql);
?>
Dúvidas ?
Evandro Klimpel Balmant
@EvandroBalmant
http://www.blogalizado.com.br

Curso de Introdução - PHP Zend Framework

  • 1.
  • 2.
    Framework ? “Framework éum conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.” FAYAD e SCHMIDT “Em desenvolvimento de software, um framework ou arcabouço é uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica.” Wikipédia
  • 3.
    DRY Don‘t repeat yourself “Nãose repita” “É um princípio de desenvolvimento de software com vista a reduzir a repetição de informações de todos os tipos.” Wikipédia
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
    Configuração Básica Nome doProjeto Diretório da Aplicação Arquivos de Configuração Controladoras Controladora Principal Models Views Templates Templates da Controladora Index Template do Método indexAction() Definição de permissão de acesso Arquivos de Documentação Bibliotecas Classes do Zend Framework Definição de permissão de acesso Arquivos Públicos Folhas de estilo Imagens JavaScrips Definição de permissão de acesso Definição de permissão de acesso Bootstrap
  • 9.
    Bootstrap (index.php) • Arquivoprincipal da aplicação; • Define todos os caminhos onde os arquivos estão armazenados, e todos os componentes que a aplicação utilizar; • Responsável por inicializar a aplicação, ele invoca os arquivos de controlador que são responsáveis pelo funcionamento da aplicação.
  • 10.
    index.php (Bootstrap) <?php /** Identificao sistema operacional do servidor, considerando que podem ser Windows ou Linux */ $operationalSystem = stripos($_SERVER['SERVER_SOFTWARE'],'win32') !== FALSE ? 'WINDOWS' : 'LINUX'; $pathSeparator = $operationalSystem == 'WINDOWS' ? ';' : ':'; /** Configura o caminho a ser procurado em todos os includes */ $path = $pathSeparator . 'library'; $path .= $pathSeparator . 'application' . DIRECTORY_SEPARATOR . 'models'; $path .= $pathSeparator . 'application' . DIRECTORY_SEPARATOR . 'controllers'; set_include_path(get_include_path() . $path); /** Zend_Loader_Autoloader carrega arquivos, classes e recursos*/ require_once('Zend/Loader/Autoloader.php'); /** Inicializa o autoloader */ $autoloader = Zend_Loader_Autoloader::getInstance(); /** Configurar para que outras classes sem namespace sejam incluidas */ $autoloader->setFallbackAutoloader(true);
  • 11.
    index.php (Bootstrap) /** Partedas Visões */ /** Cria um novo objeto do tipo view */ $view = new Zend_View(); $view->setEncoding('UTF-8'); $view->setEscape('htmlentities'); /** Definindo diretório onde estarão as views */ $view->setBasePath('./application/views/'); /** Registra na memória o objeto $view */ Zend_Registry::set('view', $view); /** Configura o controlador do projeto, que por acaso, é o index.php */ $baseUrl = substr($_SERVER['PHP_SELF'], 0, strpos($_SERVER['PHP_SELF'], '/index.php')); /** Cria uma nova instância da classe controladora */ $frontController = Zend_Controller_Front::getInstance(); /** Configura o endereço do controlador do projeto */ $frontController->setBaseUrl($baseUrl); /** Indica o diretório onde estão os outros controladores da aplicação */ $frontController->setControllerDirectory('./application/controllers'); /** O controlador deve tratar as excessões */ $frontController->throwExceptions(true);
  • 12.
    index.php (Bootstrap) /** Carregaconfigurações da base de dados. * do arquivo config.ini na sessão database */ $config = new Zend_Config_Ini('./application/configs/config.ini', 'database'); /** Registra na memória a variável config */ Zend_Registry::set('config', $config); /** Configura a conexão com a base de dados, pegando as variáveis do arquivo de configuração */ $db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray()); Zend_Db_Table_Abstract::setDefaultAdapter($db); /** Registra a variável db */ Zend_Registry::set('db',$db); /** Configura o formato para data */ date_default_timezone_set("America/Sao_Paulo"); /** Executa o controlador do projeto * Ele Irá receber todas as requisições */ $frontController->dispatch(); ?>
  • 13.
    IndexController <?php class IndexController extendsZend_Controller_Action { public function indexAction() { $this->view->assign('data', date('d/m/Y')); } } ?>
  • 14.
  • 15.
    .htaccess (URL’s Amigáveis/ Permissões) RewriteEngine on RewriteRule .* index.php php_flag magic_quotes_gpc off php_flag register_globals off Arquivo: .htaccess deny from all Arquivo: application/.htaccess RewriteEngine off Arquivo: library/.htaccess Arquivo: public/.htaccess
  • 16.
    URL’s http://localhost/ Classe: IndexController Método:indexAction() http://localhost/produtos Classe: ProdutosController Método: indexAction() http://localhost/produtos/cadastro Classe: ProdutosController Método: cadastroAction() http://localhost/loja-virtual Classe: LojaVirtualController Método: indexAction()
  • 17.
    config.ini [database] db.adapter = PDO_MYSQL db.config.host= localhost db.config.username = root db.config.password = root db.config.dbname = nome_banco Arquivo: application/configs/config.ini
  • 18.
    DAO (Zend_Db_Table) <?php class Produtoextends Zend_Db_Table { protected $_name = “tb_produto”; } ?> Arquivo: application/models/Produto.php
  • 19.
    Insert <?php $dao = newProduto(); $dados = array( ‘titulo’ => ‘Blablablabla’, ‘descricao’ => ‘Nononononono’ ); $dao->insert($dados); ?>
  • 20.
    Select <?php $dao = newProduto(); $sql = $dao->select() ->from($dao, array(‘titulo’,’descricao’)) ->order(‘titulo’); $dados = $dao->fetchAll($sql)->toArray(); ?>
  • 21.
    Update <?php $dao = newProduto(); $dados = array( ‘titulo’ => ‘Blablablabla’, ‘descricao’ => ‘Nononononono’ ); $where = $dao->getAdapter()->quoteInto(‘id = ?’, 10); $dao->update($dados, $where); ?>
  • 22.
    Delete <?php $dao = newProduto(); $sql = $dao->getAdapter()->quoteInto(‘id = ?’, 10); $dao->delete($sql); ?>
  • 23.
    Dúvidas ? Evandro KlimpelBalmant @EvandroBalmant http://www.blogalizado.com.br