Existe dois caminhos para começar a usar o
Zend_Application, eles dependem de como você quer
iniciar seu projeto. Em cada caso, você sempre inicia com a criação da classe
Bootstrap e a configuração do arquivo.
Se você pretende criar um projeto novo usando o
Zend_Tool continue lendo abaixo.
Se você pretende adicionar um projeto existente ao
Zend_Application
clique aqui.
A melhor maneira de iniciar seu projeto
Zend_Application é usando o
Zend_Tool para gerar seu projeto.
Ele também cria para você a classe e o arquivo Bootstrap
Para criar o projeto, execute o comando zf (em sistemas unix)
% zf create project newproject
Ou o comando zf.bat para windows:
C:> zf.bat create project newproject
Ambos comandos criam a estrutura do projeto, segue a seguir um exemplo:
newproject
|-- application
| |-- Bootstrap.php
| |-- configs
| | `-- application.ini
| |-- controllers
| | |-- ErrorController.php
| | `-- IndexController.php
| |-- models
| `-- views
| |-- helpers
| `-- scripts
| |-- error
| | `-- error.phtml
| `-- index
| `-- index.phtml
|-- library
|-- public
| `-- index.php
`-- tests
|-- application
| `-- bootstrap.php
|-- library
| `-- bootstrap.php
`-- phpunit.xml
No diagrama a cima, seu bootstrap está em
newproject/application/Bootstrap.php,
primeiramente ele contém apenas isso:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}
Também é notável a criação de um arquivo de configuração:
newproject/application/configs/application.ini.
Ele contém o seguinte conteúdo:
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
Todas as configurações são descritas nesse arquivo para ser usado com
Zend_Application e pelo seu bootstrap.
Outro arquivo interessante é o
newproject/public/index.php, que invoca e executa o
Zend_Application.
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH',
realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV',
(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
: 'production'));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();
Para continuar criando e configurando seu projeto, clique aqui e leia "Criando e Adicionando Recursos
O básico do Zend_Application é relativamente simples:
Crie o arquivo application/Bootstrap.php, com
a classe Bootstrap.
Crie o arquivo de configuração
application/configs/application.ini
com base na configuração necessária para o
Zend_Application
Modifique seu public/index.php para utilizar
o Zend_Application.
Primeiramente crie sua classe Bootstrap.
Crie o arquivo application/Bootstrap.php,
com o seguinte conteúdo:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}
Agora crie seu arquivo de configuração. Neste tutorial nós vamos usar
um arquivo do tipo INI.
Você pode, é claro, usar um arquivo de configuração no formato
XML ou PHP.
Crei o arquivo application/configs/application.ini,
e coloque os seguinte conteúdo:
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
Aora vamos modificar seu script public/index.php.
Se o arquivo não existir, crie ele, senão substitua o conteúdo pelo seguinte:
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH',
realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV',
(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
: 'production'));
// Typically, you will also want to add your library/ directory
// to the include_path, particularly if it contains your ZF installed
set_include_path(implode(PATH_SEPARATOR, array(
dirname(dirname(__FILE__)) . '/library',
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();
Você pode notar que o ambiente do aplicativo contém um valor de
constantes procurando pela variável de ambiente "APPLICATION_ENV".
Nós recomendamos configurar essa variável no seu web server. No Apache,
você pode configurar isso na definição do seu virtual host ou no seu
arquivo .htaccess.
Nós recomendamos o seguinte conteúdo para o seu arquivo
public/.htaccess:
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
![]() |
Leia mais sobre mod_rewrite |
|---|---|
As regras rewrite a cima permitem acesso a qualquer arquivo sobe seu document root do virtual host. Se lá contém arquivos que você não quer expor nesse diretório, você pode desejar ser mais restritivo em suas regras.Vá até o website do Apache e tenha maiores informações sobre mod_rewrite |
Neste ponto, você já tem tudo pronto para começar a utilizar o
Zend_Application
Se você seguiu corretamente o tutorial a cima, então sua classe bootstrap vai utilizar o front controller, e quando o Zend_Application for executado, vai ser executado o front controller. Contudo, provávelmente, você vai precisar de mais algumas pequenas configurações do que o existente.
Agora nós vamos procurar adicionar dois recursos no seu aplicativo. O primeiro, será a configuração de layouts e então personalizar seu view object (objeto de visualização).
Um dos recursos padrões fornecidos com o
Zend_Application é o recurso de "layout".
Este recurso espera que você defina valores de configuração que vão
ser utilizados para a configurar a sua instância do
Zend_Layout.
Para usa-lo, todos nós precisamos fazer uma pequena alteração no arquivo de configuração.
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" ; ADICIONE AS SEGUINTES LINHAS resources.layout.layout = "layout" resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
Se você não tem, crie o diretório
application/layouts/scripts/, e o arquivo
layout.phtml dentro desse diretório.
Um bom exemplo de como começar o seu layout segue abaixo:
<?php echo $this->doctype() ?>
<html>
<head>
<?php echo $this->headTitle() ?>
<?php echo $this->headLink() ?>
<?php echo $this->headStyle() ?>
<?php echo $this->headScript() ?>
</head>
<body>
<?php echo $this->layout()->content ?>
</body>
</html>
Nesse ponto, você já tem um layout funcional.
Agora, nós adicionamos uma personalização no view resource. Quando inicializamos
o view nós queremos que o HTML DocType e o valor
padrão do título do HTML head.
Isso pode ser colocado dentro da sua classe
Bootstrap adicionando o método:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initView()
{
// Initialize view
$view = new Zend_View();
$view->doctype('XHTML1_STRICT');
$view->headTitle('My First Zend Framework Application');
// Add it to the ViewRenderer
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
'ViewRenderer'
);
$viewRenderer->setView($view);
// Return it, so that it can be stored by the bootstrap
return $view;
}
}
Esse método vai ser automáticamente executado quando o seu aplicativo for iniciado e vai ter certeza que sua view é inicializada de acordo com as necessidades que seu aplicativo precisa.