Anda di halaman 1dari 24

AMBIENTE INTEGRADO DE DESENVOLVIMENTO

EM SOFTWARE LIVRE PARA ZEND FRAMEWORK


Flávio Gomes da Silva Lisboa

2008

Versão 1.1

flaviogomesdasilva@yahoo.com.br

www.fgsl.eti.br

Sumário
AMBIENTE INTEGRADO DE DESENVOLVIMENTO.................................................................. 3
Instalação do XAMPP Linux 1.6.1.................................................................................................. 3
Passo 1: Download......................................................................................................................3
Passo 2: Instalação...................................................................................................................... 3
Passo 3: Iniciando....................................................................................................................... 4
Passo 4: Teste..............................................................................................................................4
Passo 5: Segurança......................................................................................................................4
Passo 6: Trocando a versão do PHP............................................................................................5
Passo 7: Parâmetros avançados do XAMPP............................................................................... 6
CAMADA DE VISÃO.........................................................................................................................7
Instalação do Smarty Template Engine........................................................................................... 7
Instalação Básica.........................................................................................................................7
PADRÕES.......................................................................................................................................... 12
Padrões de Codificação PHP......................................................................................................... 12
BANCO DE DADOS......................................................................................................................... 16
Instalação do PostgreSQL 8.2.4.....................................................................................................16
GERENCIADOR DE BANCO DE DADOS..................................................................................... 17
Instalação do phpPgAdmin 4.1.3................................................................................................... 17
FRAMEWORK.................................................................................................................................. 17
Instalação do Zend Framework......................................................................................................17
DOCUMENTAÇÃO.......................................................................................................................... 18
Instalação do phpDocumentor....................................................................................................... 18
ALTERANDO A CAMADA DE VISÃO DO ZEND FRAMEWORK............................................ 21
Integração do Smarty com o Zend Framework............................................................................. 21
ANEXO 9........................................................................................................................................... 25
Introdução ao Ambiente Web........................................................................................................ 25
ANEXO 10......................................................................................................................................... 26
Introdução ao MVC [5]..................................................................................................................26

1
AMBIENTE INTEGRADO DE DESENVOLVIMENTO

Instalação do XAMPP Linux 1.6.1

Apache Friends é um projeto sem fins lucrativos criado para promover o uso do servidor
web Apache, através de atividades que tornam mais amigáveis a instalação de software e a leitura
de documentação, além da criação de uma comunidade on-line para ajudar os usuários de Apache.

Esse projeto foi criado em 2002 por Kai 'Oswald' Seidler and Kay Vogelgesang.

Um dos produtos gerados por esse projeto foi o LAMPP, agora denominado XAMPP Linux.

O XAMPP é um pacote de softwares, que envolve, entre outros:

Apache 2.2.4, MySQL 5.0.37 e PHP 5.2.1 & 4.4.6.

A url do projeto é: http://www.apachefriends.org.

Passo 1: Download

O pacote utilizado na elaboração deste guia estava disponível na URL:


http://www.apachefriends.org/download.php?xampp-linux-1.6.1.tar.gz.

Passo 2: Instalação

Depois de efetuar o download, execute os dseguintes comandos:

1. Vá ao shell do Linux e efetue o login como administrador do sistema (root):

su

2. Extraia o arquivo descarregado para /opt

tar xvfz xampp-linux-1.6.1.tar.gz – C /opt

Aviso 1: Por favor, use somente este comando para instalar XAMPP. Não use quaisquer
ferramentas do Windows para extrair esse arquivo, isso não funciona.

2
Aviso 2: Versões do XAMPP já instaladas são sobrescritas por esse comando.

Isso é tudo. XAMPP será instalado no diretório /opt/lampp.

Passo 3: Iniciando

Para inicar o XAMPP, simplesmente digite este comando:

/opt/lampp/lampp start

Você deve ver algo como isto em sua tela:

Starting XAMPP 1.6.1...


LAMPP: Starting Apache...
LAMPP: Starting MySQL...
LAMPP started.

Pronto. Apache e MySQL estão rodando. Se eventualmente surgir alguma mensagem de


erro, existe uma relação delas disponível na URL: http://www.apachefriends.org/en/faq-xampp-
linux.html#start.

Passo 4: Teste

Para verificar se tudo está realmente funcionado digite a seguinte URL no seu browser de
internet:

http://localhost

Agora você deve ver a página inicial do XAMPP contendo alguns links para verifica o status
do software instalado e alguns exemplos de programação.

Passo 5: Segurança

A instalação padrão do XAMPP deixa várias brechas de segurança, a saber:

● As páginas do XAMPP estão acessíveis por qualquer pessoa na rede.

3
● O MySQL está acesível na rede.

● O usuário principal do phpMyAdmin não possui uma senha.

● O usuário administrador do MySQL não possui uma senha.

● O servidor de FTP FileZilla não possui uma senha.

Você pode corrigir essas falhas individualmente, ou utilizar o programa interativo de


segurança:

/opt/lampp/lampp security

Esse programa irá configurar, respectivamente:

● Uma senha para o acesso às páginas (o usuário é lampp).

● O bloqueio do MySQL via rede.

● Uma senha para o usuário pma (administrador do phpMyAdmin).

● Uma senha para o usuário root do MySQL.

● Uma senha para ftp.

Passo 6: Trocando a versão do PHP

O XAMPP permite a troca entre os interpretadores das versões 4 e 5 do PHP.

Para configurar o interpretador da versão 4 como padrão, use o seguinte comando:

/opt/lampp/lampp php4

Para configurar o interpretador da versão 5 como padrão, use o seguinte comando:

/opt/lampp/lampp php5

4
Se você esquecer qual versão do PHP está em uso, utilize a função phpinfo() em um script
php ou este comando:

/opt/lampp/lampp phpstatus

Passo 7: Parâmetros avançados do XAMPP

Parâmetro Descrição
start Inicia o XAMPP
stop Encerra o XAMPP
restart Encerra e, em seguida, inicia o XAMPP
startapache Inicia somente o Apache
startssl Inicia o Apache com suporte a SSL. Este comando ativa o suporte SSL de
modo permanente. Isso quer dizer que se você reiniciar o XAMPP no
futuro a SSL estará ativada.
startmysql Inicia somente o servidor de banco de dados MySQL
startftp Inicia o servidor ProFTPD. Através de FTP você pode carregar arquivos
para o seu servidor web (usuário “nobody”, senha “lampp”). Este
comando ativa o ProFTPD de modo permanente. Isso quer dizer que se
você reiniciar o XAMPP no futuro o FTP estará ativado.
stopapache Encerra o Apache.
stopssl Encerra o suporte SSL do Apache. Este comando desativa o suporte de
modo permanente. Isso quer dizer que se você reiniciar o XAMPP no
futuro a SSL estará desativada.
stopmysql Encerra o servidor de banco de dados MySQL
stopftp Encerra o servidor ProFTPD. Este comando desativa o ProFTPD de modo
permanente. Isso quer dizer que se você reiniciar o XAMPP no futuro o
FTP estará desativado.
security Inicia um pequeno programa de verificação de segurança

5
CAMADA DE VISÃO

Instalação do Smarty Template Engine

O Smarty requer, para sua instalação, um servidor web rodando PHP 4.0.6 ou superior.

Instalação Básica

Instale os arquivos da biblioteca do Smarty que estão no subdiretório /libs/ da distribuição.


Estes são os arquivos PHP que você NÃO PRECISA editar. Eles são comuns a todas as aplicações
e eles só são atualizados quando você atualiza para uma nova versão do Smarty.

Arquivos da biblioteca do Smarty necessários:

● Smarty.class.php
● Smarty_Compiler.class.php
● Config_File.class.php
● debug.tpl
● /internals/*.php (all of them)
● /plugins/*.php (todos eles por precaução, embora a sua pagina precise apenas de alguns)

O Smarty utiliza uma constante do PHP chamada SMARTY_DIR que é o caminho completo
para o diretório 'libs/' do Smarty. Basicamente, se sua aplicação puder encontrar o arquivo
Smarty.class.php, você não precisa definir SMARTY_DIR, o Smarty irá encontrar por si só.
Entretanto, se Smarty.class.php não estiver em seu include_path, ou você não indicar um caminho
absoluto para ele em sua aplicação, então você deverá definir SMARTY_DIR manualmente.
SMARTY_DIR deve incluir uma barra ao final.

Aqui está um exemplo de como você cria uma instância do Smarty em seus scripts PHP:

//NOTE: Smarty has a capital 'S'

6
require_once('Smarty.class.php');
$smarty = new Smarty();
Criação de uma instância do Smarty

Tente rodar o script acima. Se você obtiver um erro dizendo que o arquivo Smarty.class.php
não pôde ser encontrado, você tem que fazer uma das coisas a seguir:

Definir a constante SMARTY_DIR manualmente

// estilo *nix (atente para a maiúscula 'S')


define('SMARTY_DIR', '/usr/local/lib/php/Smarty-v.e.r/libs/');

// estilo windows
define('SMARTY_DIR', 'c:/webroot/libs/Smarty-v.e.r/libs/');

// exemplo que trabalha em ambos *nix e windows


// Smarty é assumido como estando no diretório 'includes/' debaixo do script
atual.
define('SMARTY_DIR',str_replace("\\","/",getcwd()).'/includes/Smarty-
v.e.r/libs/');

require_once(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty();

Adicionar o diretório da biblioteca para o include_path do PHP

// Edite o seu arquivo php.ini, adicione o diretório da biblioteca do Smarty


// para o include_path e reinicie o servidor web.
// Então o código a seguir funcionaria:
require('Smarty.class.php');
$smarty = new Smarty;

Defina a constante SMARTY_DIR manualmente

define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
require(SMARTY_DIR.'Smarty.class.php');
$smarty = new Smarty;

7
Agora que os arquivos da biblioteca estão no lugar, é hora de configurar os diretórios do
Smarty para a sua aplicação.
O Smarty necessita de quatro diretórios, que são chamados por padrão 'templates/',
'templates_c/', 'configs/' e 'cache/'.
Cada um deles pode ser definido pelas propriedades da classe Smarty $template_dir,
$compile_dir, $config_dir, e $cache_dir repectivamente. É altamente recomendado que você
configure um conjunto diferente destes diretórios para cada aplicação que for usar o Smarty.
Certifique-se que você sabe a localização do 'document root' do seu servidor web. Em nosso
exemplo, o 'document root' é "/web/www.mydomain.com/docs/". Os diretórios do Smarty só são
acessados pela biblioteca do Smarty e nunca acessados diretamente pelo navegador. Então para
evitar qualquer preocupação com segurança, é recomendado colocar estes diretórios fora do
document root.
Para o nosso exemplo de instalação, nós estaremos configurando o ambiente do Smarty para
uma aplicação de livro de visitas. Nós escolhemos uma aplicação só para o propósito de uma
convenção de nomeação de diretório. Você pode usar o mesmo ambiente para qualquer aplicação,
apenas substitua "guestbook" com o nome de sua aplicação. Nós colocaremos nossos diretórios do
Smarty dentro de "/web/www.mydomain.com/smarty/guestbook/".
Você precisará pelo menos de um arquivo dentro de seu 'document root', e que seja acessado
pelo navegador. Nós chamamos nosso script de "index.php", e o colocamos em um subdiretório
dentro do 'document root' chamado "/guestbook/".
Nota Técnica: É conveniente configurar o servidor web para que 'index.php' possa ser
identificado como o índice padrão do diretório, asssim se você acessar
http://www.example.com/guestbook/, o script 'index.php' será executado sem adicionar 'index.php'
na URL. No Apache você pode configurar isto adicionando "index.php" ao final da sua
configuração DirectoryIndex (separe cada item com um espaço.) como no exemplo de httpd.conf:

DirectoryIndex index.htm index.html index.php index.php3 default.html index.cgi

Vamos dar uma olhada na estrutura de arquivos até agora:

/usr/local/lib/php/Smarty-v.e.r/libs/Smarty.class.php
/usr/local/lib/php/Smarty-v.e.r/libs/Smarty_Compiler.class.php
/usr/local/lib/php/Smarty-v.e.r/libs/Config_File.class.php

8
/usr/local/lib/php/Smarty-v.e.r/libs/debug.tpl
/usr/local/lib/php/Smarty-v.e.r/libs/internals/*.php
/usr/local/lib/php/Smarty-v.e.r/libs/plugins/*.php

/web/www.example.com/smarty/guestbook/templates/
/web/www.example.com/smarty/guestbook/templates_c/
/web/www.example.com/smarty/guestbook/configs/
/web/www.example.com/smarty/guestbook/cache/

/web/www.example.com/docs/guestbook/index.php

O Smarty irá precisar de acesso de escrita (usuários de windows por favor ignorem) em
$compile_dir e $cache_dir, então tenha certeza que o usuário do servidor web possa escrever. Este é
geralmente o usuário "nobody" e o grupo "nobody" (ninguém). Para SO com X usuários, o usuário
padrão é "www" e o grupo "www". Se você está usando Apache, você pode olhar em seu arquivo
httpd.conf (normalmente em "/usr/local/apache/conf/") para ver qual o usuário e grupo estão sendo
usados.

chown nobody:nobody /web/www.example.com/smarty/guestbook/templates_c/


chmod 770 /web/www.example.com/smarty/guestbook/templates_c/

chown nobody:nobody /web/www.example.com/smarty/guestbook/cache/


chmod 770 /web/www.example.com/smarty/guestbook/cache/

Nota Técnica: chmod 770 será a segurança correta suficientemente restrita, só permite ao
usuário "nobody" e o grupo "nobody" acesso de leitura/escrita aos diretórios. Se você gostaria de
abrir o acesso de leitura para qualquer um (na maioria das vezes para sua própria conveniência de
querer ver estes arquivos), você pode usar o 775 ao invés do 770.
Nós precisamos criar o arquivo "index.tpl" que o Smarty vai ler. Ele estará localizado em
seu diretório templates.

{* Smarty *}

Ola! {$name}, bem vindo ao Smarty!

9
Nota Técnica: {* Smarty *} é um comentário de template. Ele não é exigido, mas é uma
prática boa iniciar todos os seus arquivos de template com este com este comentário. Isto faz com
que o arquivo seja reconhecido sem levar em consideração a sua extensão. Por exemplo, editores de
texto poderiam reconhecer o arquivo e habilitar coloração de sintaxe especial.
Agora vamos editar 'index.php'. Nós vamos criar uma instancia do Smarty, definir (assign)
uma variável do template e mostrar (display) o arquivo 'index.tpl'.

<?php

// load Smarty library


require_once(SMARTY_DIR . 'Smarty.class.php');

$smarty = new Smarty();

$smarty->template_dir = '/web/www.example.com/smarty/guestbook/templates/';
$smarty->compile_dir = '/web/www.example.com/smarty/guestbook/templates_c/';
$smarty->config_dir = '/web/www.example.com/smarty/guestbook/configs/';
$smarty->cache_dir = '/web/www.example.com/smarty/guestbook/cache/';

$smarty->assign('name','Ned');

$smarty->display('index.tpl');
?>

Nota Técnica: No nosso exemplo, nós estamos definindo caminhos absolutos para todos os
diretórios do Smarty. Se /web/www.example.com/smarty/guestbook/ estiver dentro do seu
include_path do PHP, então estas definições não são necessárias. Entretanto, é mais eficiente e (por
experiência) causa menos erros definir como caminhos absolutos. Isto te faz ter certeza que o
Smarty está lendo os arquivos dos diretórios que você quer.
Agora carregue o arquivo index.php em seu navegador. Você veria "Olá, Ned! bem vindo ao
Smarty"
A configuração básica para o Smarty está completa.

10
PADRÕES

Padrões de Codificação PHP

Este arquivo lista diversos padrões que qualquer programador, ao adicionar ou alterar código
em PHP, deveria seguir. Como este arquivo foi adicionado em um estágio tardio do
desenvolvimento do PHP 3.0, o código base não o segue totalmente (ainda), mas está caminhando
nessa direção. Como nós agora estamos dentro dos releases da versão 4, muitas seções tem sido
recodificadas para usar estas regras.

(...)

Convenções de Nomeação

--------------------------------

[1] Nomes de funções para funções em nível de usuário (...) devem estar em minúsculo, com
palavras separadas por underscore, com o cuidado de minimizar a quantidade de letras. Abreviações
não devem ser usadas quando elas prejudicam a legibilidade do nome da própria função.

Bom:

'mcrypt_enc_self_test'

'mysql_list_fields'

Aceitável:

'mcrypt_module_get_algo_supported_key_sizes'

(poderia ser 'mcrypt_mod_get_algo_sup_key_sizes'?)

'get_html_translation_table'

(poderia ser 'html_get_trans_table'?)

Ruim:

11
'hw_GetObjectByQueryCollObj'

'pg_setclientencoding'

'jf_n_s_i'

[2] Se elas são parte de um “conjunto-pai” de funções, esse pai deve ser incluído no nome da
função de usuário, e deve ser claramente relacionado ao programa pai ou família de funções. Isso
deveria estar na forma parent_*.

Uma família de funções 'foo', por exemplo:

Bom:

'foo_select_bar'
'foo_insert_baz'
'foo_delete_baz'

Ruim:

'fooselect_bar'
'fooinsertbaz'
'delete_foo_baz'

[3] Nomes de funções usadas por funções de usuário devem ser prefixadas com “_php_”, e
seguidas por uma palavra ou uma lista de palavras delimitada por underscores, em letras
minúsculas, que descreva a função. Se aplicável, elas devem ser declaradas como 'static'.

[4] Nomes de variáveis devem ser significativos. Nomes de variáveis de uma letra devem ser
evitados, exceto em lugares onde a variável não tem significado real ou tem um significado trivial.
(por exemplo, em for (i=0; i<100; i++) ).

[5] Nomes de variáveis devem ser escritas em minúsculo. Use underscores para separar as
palavras.

[6] Nomes de método seguem a convenção de nomeação 'Camel Case', com o cuidado de
minimizar a quantidade de letras. A letra inicial do nome é minúscula, e cada letra que inicia uma
nova palavra é em maiúsculo.

12
Bom:

'connect()'

'getData()'

'buildSomeWidget()'

Ruim:

'get_Data()'

'buildsomewidget'

'getI()'

[7] Para classes devem ser dados nomes descritivos. Evite usar abreviações quando possível.
Cada palavra no nome da classe deve começar com uma letra maiúscula, sem underscores como
delimitadores (Camel case com inicial maiúscula). O nome da classe deve ser prefixado com o
nome do 'conjunto pai' (por exemplo, o nome da extensão).

Bom:

'Curl'
'FooBar'

Ruim:
'foobar'
'foo_bar'

Sintaxe e indentação

-------------------------

[1] Nunca use comentários estilo C++ (//). Sempre use comentários estilo C puro. PHP é escrito
em C, e é indicado para compilar debaixo de qualquer compilador ANSI_C. Mesmo que muitos
compiladores aceitem comentários estilo C++ no código C, você tem de garantir que seu código
compile com outros compiladores da mesma forma. A única exceção para esa regra é o código que
é específico para Win32, porque a porta para o Win32 é especificamente o MS-Visual C++, e esse

13
compiladore e conhecido por aceitar comentários estilo C++ em código C.

[2] Use o estilo K&R. Na verdade, nós não podemos e não queremos forçar ninguém a usar um
estilo ao qual não está acostumado, mas, quando você escreve código que vai para o núcleo do PHP
ou um de seus módulos padrão, por favor, mantenha o estilo K&R. Isso é aplicável a tudo,
começando com indentação e estilos de comentário e passando para sintaxe de declaração de
funções. (Veja mais em http://www.catb.org/~esr/jargon/html/I/indent-style.html).

[3] Seja generoso com espaços em branco e chaves. Sempre prefira:

if (foo) {

bar;

a:

if(foo)bar;

Mantenha uma linha vazia entre a seção de declaração de variáveis e os comandos em um


bloco, assim como entre grupos de comando lógicos em um bloco. Mantenha ao menos uma linha
vazia entre duas funções, preferencialmente duas.

[4] Quando indentar, use o caracter tab. Espera-se que um tab represente quatro espaços. É
importante manter consistência de modo que definições, comentários e estruturas de controle
estejam alinhados corretamente.

[5] Comandos de pré-processador (#if e outros) DEVEM começar na coluna 1. Para indentar
diretivas de pré-processador você deve colocar o # no começo de uma linha, seguido por um
número qualquer de espaços em branco.

(...)

14
BANCO DE DADOS

Instalação do PostgreSQL 8.2.4

O sistema de gerenciamento de banco de dados relacional PostgreSQL é o trabalho coletivo


de centenas de desenvolvedores, sobre quase vinte anos de desenvolvimento, iniciado na
Universidade de Berkeley na Califórnia. Com suporte há muito tempo de recursos como transações,
funções definidas pelo usuário, gatilhos, e subconsultas, o PostgreSQL está sendo utilizado por
muitas das empresas mais exigentes e agências do governo. O PostgreSQL é desenvolvido sob a
licença BSD, que permite o uso e distribuição sem nenhuma taxa para uso comercial ou não.
O PostgreSQL pode ser baixado no site www.postgresql.org. A versão utilizada nesta
apostila foi obtida no endereço:
http://ftp2.br.postgresql.org/postgresql/v8.2.4/
Desse endereço foi baixado o seguinte arquivo: postgresql-8.2.4.tar.bz2.
O arquivo foi descompactado no diretório opt, gerando um subdiretório postgresql-8.2.4.
A descompactação, na linha de comando, pode ser feita assim:
$ tar -xjvf postgresql-8.2.4.tar.bz2
Em seguida, acessamos o diretório postgresql-8.2.4 e executamos os seguintes comandos:
Configuração do ambiente:
$./configure --prefix=/usr/local/postgres\ --bindir=/usr/bin –sysconfdir=/etc/postgres --
without-readline

Compilação:

$ gmake

Instalação:

$su
# gmake install

Criação de grupo e usuário:

#groupadd postgres
# adduser postgres

Criação do diretório para os dados e atribuição de propriedade para o usuário postgres

#mkdir usr/local/postgres/data

15
# chown postgres:postgres /usr/local/postgres/data

Inicialização do banco:

#su postgres
$ initdb -D /usr/local/postgres/data
Para rodar o PostgreSQL foi usado o seguinte comando:

$ postgres -D /usr/local/postgres/data

Poderia ser usado também:

$ pg_ctl start

E para parar:

$ pg_ctl stop

GERENCIADOR DE BANCO DE DADOS

Instalação do phpPgAdmin 4.1.3

Estamos assumindo aqui a prévia instalação e carregamento do XAMPP. O phpPgAdmin é


uma ferramenta de administração baseada em web para PostgreSQL, feita em PHP. Pode ser obtida
no endereço: http://phppgadmin.sourceforge.net/

Ele foi descompactado no diretório htdocs do XAMPP.

Renomeie o diretório criado de phpPgAdmin-4.1.3 para phppgadmin.

Foi criado um usuário admin no psql com os comandos:

create role admin login password 'admin';

Através do endereço http://localhost/phppgadmin pode-se acessar a interface do


phpPgAdmin. Com o usuário admin, é possível manipular as bases de dados.

FRAMEWORK

Instalação do Zend Framework

Estamos assumindo aqui a prévia instalação e carregamento do XAMPP. Segundo a Zend


Corporation, o Zend Framework é baseado em simplicidade, melhores práticas de orientação a

16
objetos, licenciamento corporativamente amigável e uma base de código ágil testada rigorosamente.
É focado na construção de aplicações Web 2.0 e web services mais seguras, confiáveis e modernas.

O Zend Framework pode ser baixado do site http://framework.zend.com/download

Nós obtivemos nesse endereço o arquivo ZendFramework-1.0.1.tar.gz.

Descompactamos ele dentro de /opt/lampp/htdocs.

Em seguida renomeamos o diretório criado ZendFramework-1.0.1 para zend.

Apagamos todo o conteúdo do diretório criado exceto o subdiretório library.

Criamos um arquivo .htaccess dentro de library com o conteúdo:

deny from all

O sucesso da instalação pode ser confirmado invocando-se a seguinte URL:

http://localhost/zend/acme

DOCUMENTAÇÃO

Instalação do phpDocumentor

O phpDocumentor, algumas vezes chamado de phpdoc ou phpdocu, é a atual ferramenta


padrão de autodocumentação para a linguagem PHP. Similar ao Javadoc, e escrito em PHP, o
phpDocumentor pode ser usado através da linha de comando ou de uma interface web para criar
documentação profissional do código fonte. phpDocumentor tem suporte para ligação dinâmica
entre documentações, incorporando documentos do nível de usuário como tutoriais e a criação de
código fonte destacado com referência cruzada para a documentação PHP geral.

O phpDocumentor pode ser baixado através do site www.phpdoc.org.

Nós usamos a versão 1.4.0 do phpDocumentor. Descompactamos o arquivo


PhpDocumentor-1.4.0.tgz no diretório htdocs do XAMPP. Isso criou um subdiretório chamado
PhpDocumentor-1.4.0, que nós renomeamos para phpdoc. Desse modo, era possível acessar a
interface web do phpDocumentor pela URL http://localhost/phpdoc.

Para que o código fonte PHP seja documentado, você deve colocar as tags do
phpDocumentor dentro do comentário estilo C, mas sempre colocando um asterisco logo após a
abertura do comentário, com cada tag precedida por um asterisco, assim:

17
/**

* @author Flávio Gomes da Silva

* @version 1.0

*/

Tags do phpDocumentor (somente as válidas para a versão 5 do PHP)

@access [escopo]

Se @access for omitida para um elemento (classe ou função), será considerado como se
fosse @access public.

@access private faz com que o elemento não seja documentado, a menos que na linha de
comando seja usado switch --parseprivate.

@acess protected documenta o elemento, informando que ele só deve ser referenciado pela
classe que o contém ou pelas filhas dela.

@author [nome]

Autor do elemento atual.

@category [nome da categoria]

Usada para organizar grupos de pacotes juntos.

@copyright [descrição]

Informações de copyright.

@deprecated

Elementos que estão obsoletos e não devem mais ser usados pois serão removidos de
alguma forma em versões futuras.

@example [caminho] [descrição]

Cria um link destacado para um arquivo externo que contém um exemplo de uso do
elemento.

@filesource

Cria um arquivo de referência cruzada com sintaxe destacada contendo o código fonte do
arquivo atual e um link para ele.

@global [tipo] [identificador]

Documenta variáveis globais.

18
@ignore

O elemento precedido por @ignore não será documentado.

@internal

A informação que suceder @internal não fará parte da documentação pública. O


phpDocumentor criará outra documentação, privada, com essa informação.

@license [URL]

Hyperlink para a licença.

@link [URL] [identificador]

Cria uma tag HTML no seguinte formato:

<a href=”URL]”>[identificador]</a>

@method [tipo de retorno] [descrição]

Mostra um método mágico, encontrado dentro da classe. Métodos mágicos na verdade são
métodos que não foram declarados na classe, mas cuja chamada é possível através do método
__call.

@name [nome da variável global]

Cria um apelido para uma variável global para melhorar a legibilidade da documentação.

@package [nome do pacote]

Define um pacote para agrupar classes e funções dentro dele.

@param [tipo de dado] [nome do parâmetro] [descrição]

Mostra um parâmetro de função.

@property [tipo de dado] [nome] [descrição]

Mostra um atributo mágico, encontrado dentro da classe. Atributos mágicos na verdade


são métodos que não foram declarados na classe, mas cuja manipulação é possível através dos
métodos __get e __set.

@property-read e @property-write são usados para, respectivamente, indicar acesso


somente para leitura e somente para escrita. @property padrão indica os dois tipos de acesso.

@return [tipo de dado] [descrição]

Mostra o valor de retorno de funções e métodos. É possível documentar vários tipos de


retorno, usando o separador | (pipe). Exemplo:

19
@return int|string pode retornar inteiro ou string

@see [link para a própria documentação]

Mostra um link para um elemento documentado pelo phpDocumentor. Possui várias


possibilidades:

@see class::elementname

@see class::methodname()

@see class::$variablename

@see functioname()

@staticvar [tipo de dado] [descrição]

Mostra o uso de uma variável estática em um método ou função.

@subpackage [nome do subpacote]

Define um subpacote para agrupar classes e funções dentro dele. Exige a tag @package.

@todo [informação]

Mostra mudanças que deverão ser feitas no futuro.

@tutorial [pacote][subpacote][nome do tutorial] # [seção] [subseção] [descrição]

Mostra um link para um tutorial contido em uma documentação phpDocumentor.

@var [tipo de dado]

Mostra o tipo de dados de uma variável de classe.

@version [string de versão]

Mostra a versão do elemento.

ALTERANDO A CAMADA DE VISÃO DO ZEND FRAMEWORK

Integração do Smarty com o Zend Framework

Para utilizar o Smarty dentro do Zend Framework, é necessário seguir alguns passos:

O Smarty já deve estar instalado (vide anexo 2).

Crie uma cópia do arquivo Smarty_Compiler.class.php com o nome de


Smarty_Compiler.Zend.class.php.

20
Nesse novo arquivo, localize a linha:
$template_header = "<?php /* Smarty version ".$this->_version.", created on
".strftime("%Y-%m-%d %H:%M:%S")."\n";

Substitua por:
$template_header = "<?php /* Smarty version ".$this->_version."\n";

Isso é necessário porque o uso da função strftime é avaliada como um erro pelo Zend
Framework.

Dentro do diretório Zend, crie um subdiretório chamado Smarty.

Crie um arquivo nesse subdiretório com o nome de Xview.php. O conteúdo será o


seguinte:
<?php
/**
* Modelo da classe Smartyx
* @author Flávio Lisboa <flaviogomesdasilva@yahoo.com.br>
* @version 0.1
* @copyright Copyright © 2008, FGSL.
*/
require_once('Smarty.class.php');
class Zend_Smarty_XView extends Zend_View_Abstract
{

private $_smarty = FALSE;


private $_template = '';

public function __construct($data = array())


{
parent::__construct($data);

$this->_smarty = new Smarty();

//$this->_smarty->template_dir =
'/opt/lampp/lib/php/Smarty-2.6.18/templates/';
$this->_smarty->compile_dir =
'/opt/lampp/lib/php/Smarty-2.6.18/templates_c/';
$this->_smarty->compiler_file =
'/opt/lampp/lib/php/Smarty-
2.6.18/libs/Smarty_Compiler.Zend.class.php';
$this->_smarty->config_dir =
'/opt/lampp/lib/php/Smarty-2.6.18/configs/';
$this->_smarty->cache_dir =
'/opt/lampp/lib/php/Smarty-2.6.18/cache/';

/* Habilita o cache de páginas */


$this->_smarty->caching = FALSE;

21
}

/*
* O método _run() é o único método que precisa
* ser implementado em qualquer subclasse de
* Zend_View_Abstract. É chamado automaticamente
* de dentro do método render().
*/
protected function _run()
{
$this->_smarty->display($this->getTemplate());
}

/*
* O método assign de Zend_View_abstract funciona
* de modo similar ao seu homônimo da classe Smarty
* A grande diferença é que os valores
* são associados ao objeto Smarty e não
* ao array de variáveis $this->_vars variables array
* da classe Zend_View_Abstract.
*/
public function assign($spec,$value=NULL)
{
if (is_string($value))
{
$this->_smarty->assign($spec, $value);
}
elseif (is_array($value))
{
foreach ($value as $key => $content)
{
$this->_smarty->assign($key, $content);
}
}
else
{
throw new Zend_View_Exception('assign() expects a
string or array, got '.gettype($value));
}
}

/*
* O escape anula o efeito de caracteres especiais.
* Este método trabalha tanto para valores string quanto
* para arrays e também usa o método escape() method
* de Zend_View_Abstract. A vantagem dele é que você
* não tem de tomar cuidado para cada valor de
* de um array ser anulado apropriadamente.
*/
public function escape($var)
{

22
if (is_string($var))
{
return parent::escape($var);
}
elseif (is_array($var))
{
foreach ($var as $key => $val)
{
$var[$key] = $this->escape($val);
}

return $var;
}
else
{
return $var;
}
}

/*
* Isto é apenas um wrapper para o método render()
* de Zend_View_Abstract.
*/
public function output($name)
{
$this->setTemplate($name);
print parent::render($name);
}

public function isCached($template)


{
if ($this->_smarty->is_cached($template))
{
return TRUE;
}

return FALSE;
}

public function setCaching($caching)


{
$this->_smarty->caching = $caching;
}

public function getTemplate()


{
return $this->_template;
}

public function setTemplate($template)


{

23
$this->_template = $template;
}

?>
XView.php

No arquivo de bootstrap do zend, o index.php na raiz do projeto, substitua a linha:


$view = new Zend_View();

Por esta:
$view = new Zend_Smarty_XView();

Os arquivos .tpl deverão ficar dentro de application/view/scripts.

Para renderizar um template, use o método output:

$view->output([nome do template]).

24

Anda mungkin juga menyukai