Curso de Introdução - PHP Zend Framework

Preview:

DESCRIPTION

Apresentação do curso de Introdução PHP Zend Framework

Citation preview

Introdução

Evandro Klimpel Balmant

@EvandroBalmant

Framework ?

“Framework é um conjunto de classesque colaboram para realizar uma responsabilidadepara 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 ?

JirayaFramework

Zend ?

Arquitetura MVC

Componentes Zend

Configuração Básica

Nome do ProjetoDiretório da AplicaçãoArquivos de ConfiguraçãoControladorasControladora PrincipalModelsViewsTemplatesTemplates da Controladora IndexTemplate do Método indexAction()Definição de permissão de acessoArquivos de DocumentaçãoBibliotecasClasses do Zend FrameworkDefinição de permissão de acessoArquivos PúblicosFolhas de estiloImagensJavaScripsDefinição de permissão de acessoDefinição de permissão de acessoBootstrap

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

<?phpclass 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 onRewriteRule .* index.phpphp_flag magic_quotes_gpc offphp_flag register_globals off

Arquivo: .htaccess

deny from all

Arquivo: application/.htaccess

RewriteEngine off

Arquivo: library/.htaccessArquivo: public/.htaccess

URL’s

http://localhost/ Classe: IndexControllerMétodo: indexAction()

http://localhost/produtos Classe: ProdutosControllerMétodo: indexAction()

http://localhost/produtos/cadastro Classe: ProdutosControllerMétodo: cadastroAction()

http://localhost/loja-virtual Classe: LojaVirtualControllerMétodo: indexAction()

config.ini

[database]db.adapter = PDO_MYSQLdb.config.host = localhostdb.config.username = rootdb.config.password = rootdb.config.dbname = nome_banco

Arquivo: application/configs/config.ini

DAO (Zend_Db_Table)

<?phpclass 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