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ã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
8. 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
9. 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.
10. 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);
11. 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);
12. 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();
?>
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