Vous êtes sur la page 1sur 79

Desenvolvendo em Zend Framework nfase no Zend_Db

www.fgsl.eti.br
Permitidaalivrereproduoecpiadesdequecitadaafonte

FLVIO GOMES DA SILVA LISBOA


BACHAREL EM CINCIA DA COMPUTAO ANALISTA DE DESENVOLVIMENTO DE SISTEMAS SERVIO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO) ELABOROU O PROGRAMA DE TREINAMENTO EM PHP DA EMPRESA AUTOR DO LIVRO ZEND FRAMEWORK DESENVOLVENDO EM PHP 5 ORIENTADO A OBJETOS COM MVC

Desenvolvendo em Zend Framework

Nossa Agenda: O desenvolvimento de uma aplicao em PHP com acesso a banco de dados utilizando o editor Eclipse com plugin PDT e a biblioteca de classes Zend Framework.

Desenvolvendo em Zend Framework

Arsenal Mnimo: Apache 2.2.3 + com mod_rewrite PHP 5.1.4 + Zend Framework 1.5.0 + Eclipse 3.3.2 Plugin PDT 1.0.3 Multiplataforma: Linux/Windows

Desenvolvendo em Zend Framework

Usaremos aqui: Apache 2.2.9 + com mod_rewrite PHP 5.2.6 + Zend Framework 1.6.2 Eclipse 3.3.2 Plugin PDT 1.0.3 MySQL 5.0.67 Sistema operacional: Ubuntu

Desenvolvendo em Zend Framework

Por que no Eclipse 3.4?

Aguarde PDT 2.0, uma nova verso para um novo ano!


Desenvolvendo em Zend Framework

Editando um arquivo PHP no Eclipse

Desenvolvendo em Zend Framework

Editando um arquivo PHP no Eclipse Auto-complete (plugin PDT):


Ativado pela digitao (forado pelas teclas CTRL + barra de espaos); Filtro dinmico por texto parcial; Mostra descrio, parmetros e valor de retorno; Templates de blocos de cdigo (if, while, for, function).

Desenvolvendo em Zend Framework

Editando um arquivo PHP no Eclipse Auto-complete - Vantagens:


Acelera a digitao; Evita erros de sintaxe; Prov acesso rpido a informaes bsicas sobre funes; Reproduz inclusive as estruturas criadas pelo usurio, como variveis e classes.

DesenvolvimentoRpidocomZendFrameworkeEclipse

Editando um arquivo PHP no Eclipse


Teclas teis: Localizar/Substituir: CTRL+F Ir para uma linha: CTRL+L Completar a palavra: ALT + / Busca/Abertura rpida de arquivo, mesmo oculto: SHIFT+CTRL+R

Para exibir as linhas do arquivo: na barra esquerda do editor marque Show Line Numbers

DesenvolvimentoRpidocomZendFrameworkeEclipse

Janelas teis:
PHP Explorer: rvore hierrquica do projeto. Outline: Navegao rpida dos componentes do arquivo selecionado. PHP Project Outline: Navegao rpida por todos os componentes do projeto. PHP Functions: Referncia da linguagem.

DesenvolvimentoRpidocomZendFrameworkeEclipse

PHP em mos erradas

SinestrocreatedbyJohnBroome andGilKanein1961 DCComicsAllRightsReserved


DesenvolvimentoRpidocomZendFrameworkeEclipse

Programador PHP Tradicional

GreenLanternHal JordancreatedbyJohn BroromeandGilKanein 1959 DCComicsAllRights Reserved


DesenvolvimentoRpidocomZendFrameworkeEclipse

Programador PHP Eventual

DaffyDuckcreatedby TexAveryandBob Campettin1937 WarnerBrothersAll RightsReserved


DesenvolvimentoRpidocomZendFrameworkeEclipse

Programador PHP Ideal

RomcreatedbyDankman, RichardandMcCoyin1979 HasbroAllRightsReserved

DesenvolvimentoRpidocomZendFrameworkeEclipse

Zend Framework

Biblioteca de classes PHP


Software livre e gratuito (licena amigvel); Reutilizvel; Extensvel; Flexvel; Simples; Evoluo constante; Parceiros importantes;

DesenvolvimentoRpidocomZendFrameworkeEclipse

Zend Framework: Arquitetura

Dengeki Sentai Changeman. Toei,1985. CompanyAll Rights Reserved.


Desenvolvendo em Zend Framework

Zend Framework: Arquitetura Autenticao e Autorizao Bancos de Dados Diagnstico e Manuteno Filtragem e Validao Formulrios Dinmicos Infra-estrutura

Desenvolvendo em Zend Framework

Zend Framework: Arquitetura Internacionalizao Mail Model-View-Controller (MVC) Performance Busca Segurana Web Services

DesenvolvimentoRpidocomZendFrameworkeEclipse

Zend Framework: Arquitetura

Firestormcreatedby GeryConwayand AlMilgromin1978 DCComicsAllRights Reserved


Desenvolvendo em Zend Framework

O que precisa ser configurado? O arquivo httpd.conf do Apache, se for usado o MVC do ZF (nosso caso). O arquivo php.ini com a extenso do banco de dados a ser utilizado (neste caso, pdo_mysql) se o PHP j no tiver sido compilado com ela.

Desenvolvendo em Zend Framework

httpd.conf
1: Configurao da permisso de sobrescrita das configuraes do httpd.conf por arquivos .htaccess <Directory "[caminho definido em DocumentRoot"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>

Desenvolvendo em Zend Framework

httpd.conf 2: Os mdulos: seo Dynamic Shared Object (DSO) Support LoadModule rewrite_module modules/mod_rewrite.so

Desenvolvendo em Zend Framework

Desenvolvendo em Zend Framework

Vamos fazer uma aplicao em trs tempos (ou trs camadas)? Demorou!

Desenvolvendo em Zend Framework

Zend_DB Uma viagem, da abstrao da conexo at um acesso ao banco de dados totalmente orientado a objetos. E um passeio por vrios padres de projeto!

Desenvolvendo em Zend Framework

Componente da vez: Zend_Db_Adapter


Prov classes adaptadoras para as seguintes marcas de bancos de dados:

Firebird IBM DB2 Interbase MySQL Microsoft SQL Server Oracle PostgreSQL SQLite

ECOMO FUNCIONA, HEIN?

Energizercreated byLouiseSimonson andJuneBrigmanin 1984 MarvelComics AllRightsReserved

Desenvolvendo em Zend Framework

Voc pode usar o construtor!

require_once('Zend/Db/Adapter/Pdo/Mysql.php'); $db=newZend_Db_Adapter_Pdo_Mysql(array( 'host' =>'127.0.0.1', 'username' =>'usuario', 'password' =>'12345', 'dbname' =>'escola' ));

Desenvolvendo em Zend Framework

Voc pode usar o padro Factory!

require_once('Zend/Db.php'); /*Carregaautomaticamenteaclasse Zend_Db_Adapter_Pdo_Mysql *ecriaumainstnciadela. */ $db=Zend_Db::factory('Pdo_Mysql',array( 'host' =>'127.0.0.1', 'username' =>'usuario', 'password' =>'12345', 'dbname'=>'escola' ));

Desenvolvendo em Zend Framework

Voc pode usar sua classe adaptadora!

require_once('Zend/Db.php'); /*Carregaautomaticamenteaclasse MyProject_Db_Adapter_Pdo_Mysqlecriauma instnciadela.*/ $db=Zend_Db::factory('Pdo_Mysql',array( 'host'=>'127.0.0.1', 'username'=>'usuario', 'password'=>'12345', 'dbname'=>'escola', 'adapterNamespace'=>'MyProject_Db_Adapter' ));

Desenvolvendo em Zend Framework

Voc pode usar Zend_Config com Zend_Db!


require_once('Zend/Db.php'); require_once('Zend/Config.php'); $config=newZend_Config( array( 'database'=>array( 'adapter' =>'Mysqli', 'params' =>array( 'dbname' =>'escola', 'username'=>'usuario', 'password'=>'12345', 'host' =>'127.0.0.1' ) ) ) ); $db=Zend_Db::factory($config>database);

Desenvolvendo em Zend Framework

Voc pode usar Zend_Config com Zend_Db!

Ainda podemos carregar a configurao do banco de um arquivo externo, usando as classes filhas de Zend_Config: Zend_Config_Ini e Zend_Config_Xml

Desenvolvendo em Zend Framework

Zend_Config_Ini, com sua simplicidade:

Arquivo config.ini [database] db.adapter=PDO_MYSQL db.config.username=usuario db.config.password=12345 db.config.host=127.0.0.1 db.config.dbname=escola


Desenvolvendo em Zend Framework

Zend_Config_Ini, com sua simplicidade: require_once('Zend/Db.php'); require_once('Zend/Config/Ini.php'); $config=new Zend_Config_Ini('config.ini','database'); $db=Zend_Db::factory( $config>db>adapter, $config>db>config>toArray() );

Desenvolvendo em Zend Framework

Zend_Config_Xml, com sua versatilidade:


Arquivo config.xml
<?xmlversion="1.0"?> <configdata> <production> <webhost>www.escola.com</webhost> <db> <adapter>pdo_mysql</adapter> <config> <host>db.escola.com</host> <username>pro_user</username> <password>pro_secret</password> <dbname>escola</dbname> </config> </db> </production> <developmentextends="production"> <db> <config> <host>127.0.0.1</host> <username>usuario</username> <password>12345</password> </config> </db> </development> </configdata>

Desenvolvendo em Zend Framework

Zend_Config_Xml, com sua versatilidade: require_once('Zend/Db.php'); require_once('Zend/Config/Xml.php'); $config=new Zend_Config_Xml('config.xml','development'); $db=Zend_Db::factory( $config>db>adapter, $config>db>config>toArray() );

Desenvolvendo em Zend Framework

A CONEXO COM O BANCO IMEDIATA? Voc quer saber se na hora em que criar a instncia de Zend_Db ser feita a conexo e um atributo protegido em algum lugar receber um tipo resource? A resposta NO. A conexo feita sob demanda, a partir da primeira consulta ao banco. Para forar a conexo, use o mtodo getConnection()

Desenvolvendo em Zend Framework

Obtendo registros na forma de matrizes com o mtodo fetchAll() $sql='SELECT*fromalunosWHEREid>?'; $registros=$db>fetchAll($sql,array(2));

Desenvolvendo em Zend Framework

Obtendo registros na forma de matrizes com o mtodo fetchAll() O resultado de fetchAll() por padro uma matriz de duas dimenses, onde a primeira equivale aos registros e a segunda aos campos. Na segunda, as chaves dos elementos so os nomes dos campos, se nada for dito em contrrio. Esse ltimo detalhe pode ser configurado com o mtodo setFetchMode(), usando as constantes Zend_Db::FETCH...

Desenvolvendo em Zend Framework

Obtendo somente a primeira coluna de uma consulta Se quiser somente a primeira coluna de uma consulta (o primeiro campo especificado na consulta, ou o primeiro definido na tabela), use o mtodo fetchCol(). Ele retornar uma matriz uma dimenso. Para cada elemento, a chave o nmero ordinal do registro na consulta (no na tabela) e o valor contedo do campo.

Desenvolvendo em Zend Framework

Obtendo somente a primeira linha de uma consulta Se quiser somente a primeira linha de uma consulta (o primeiro registro retornado pela mesma), use o mtodo fetchRow(). Ele retornar uma matriz com uma dimenso. Para cada elemento, a chave o nome (ou o ordinal) do campo e o valor o contedo do mesmo.

Desenvolvendo em Zend Framework

Incluso de registros

$data=array( "nome"=>'Peninha' ); $db>insert('alunos',$data);

Desenvolvendo em Zend Framework

Pergunta:
E se ao invs de colocar um valor diretamente, eu queira atribuir ao campo o valor de retorno de uma funo do banco? SEM PROBLEMAS! Use uma instncia de Zend_Db_Expr e passe a funo como parmetro para o construtor.
<?php $data=array( 'created_on'=>newZend_Db_Expr('CURDATE()'), 'bug_description'=>'Somethingwrong', 'bug_status'=>'NEW' ); $db>insert('bugs',$data);

Desenvolvendo em Zend Framework

Pergunta:

E se eu quiser saber qual o id do registro includo? Use a funo getLastInsertId()

Desenvolvendo em Zend Framework

Atualizao de registros:

$data=array( "nome"=>'Gansolino' ); $where=$db>quoteInto('nome =?','Peninha'); $db>update('alunos',$data,$where);

Desenvolvendo em Zend Framework

Remoo de registros:

$where=$db>quoteInto('nome =?','Gansolino'); $db>delete('alunos',$where);

Desenvolvendo em Zend Framework

O problema dos campos de texto

O contedo de campos do tipo texto em SQL cerceado por apstrofos. Como isso pode gerar uma confuso com os apstrofos, a classe Zend_Db fornece o mtodo quote(), que envolve o texto com os mesmos.

Desenvolvendo em Zend Framework

Controle de Transaes

<?php $db>beginTransaction(); try{ $db>query(...); $db>commit(); }catch(Exception$e){ $db>rollBack(); echo$e>getMessage(); }


Desenvolvendo em Zend Framework

Informaes sobre as Tabelas


$lista=$db>listTables(); foreach($listaas$table) { echo"<h1>Tabela$table</h1>"; $campos=$db>describeTable($table); foreach($camposas$nome=>$dados) { echo"<p><b>$nome</b><br>"; foreach($dadosas$chave=>$valor) { echo"$chave=$valor<br>"; } echo'</p>'; } }

Desenvolvendo em Zend Framework

Encerrando a Conexo

Normalmente no necessrio fechar uma conexo de banco de dados. PHP automaticamente elimina todos os recursos e finaliza uma requisio. Extenses de bancos de dados so desenhadas para fechar a conexo assim que a referncia para o objeto de recurso seja eliminada.

Desenvolvendo em Zend Framework

Encerrando a Conexo

$db>closeConnection();

Desenvolvendo em Zend Framework

Declaraes: para qu servem?

RECUPERAR TUDO? NO,UM REGISTRO DECADA VEZ!


GreenArrowcreated byMortWeisinger andGeorgePappin 1941 DCComics AllRightsReserved

Desenvolvendo em Zend Framework

Preparando Declaraes SQL com o construtor de Zend_Db_Statement


require_once('Zend/Db/Statement.php'); require_once('Zend/Config/Xml.php'); $config=newZend_Config_Xml('config.xml','development'); $db=Zend_Db::factory($config>db>adapter,$config>db>config >toArray()); $sql='SELECT*fromalunosWHEREid>?'; $stmt=newZend_Db_Statement_Pdo($db,$sql); $stmt>execute(array(2)); while($registro=$stmt>fetch()) { foreach($registroas$campo=>$conteudo) { echo"$campo=$conteudo<br>"; } }

Desenvolvendo em Zend Framework

Preparando Declaraes SQL com o prprio objeto Zend_Db


require_once('Zend/Db/Statement.php'); require_once('Zend/Config/Xml.php'); $config=newZend_Config_Xml('config.xml','development'); $db=Zend_Db::factory($config>db>adapter,$config>db>config >toArray()); $sql='SELECT*fromalunosWHEREid>?'; $stmt=$db>query($sql,array(2)); $stmt>execute(); while($registro=$stmt>fetch()) { foreach($registroas$campo=>$conteudo) { echo"$campo=$conteudo<br>"; } }

Desenvolvendo em Zend Framework

Recupere uma nica coluna


require_once('Zend/Db/Statement.php'); require_once('Zend/Config/Xml.php'); $config=newZend_Config_Xml('config.xml','development'); $db=Zend_Db::factory($config>db>adapter,$config>db>config >toArray()); $sql='SELECT*fromalunosWHEREid>?'; $stmt=$db>query($sql,array(2)); $stmt>execute(); while($coluna=$stmt>fetchColumn(1)) { echo"$coluna<br>"; }

Desenvolvendo em Zend Framework

Consultas Orientadas a Objetos: Zend_Db_Select


$db=Zend_Db::factory($config>db>adapter,$config>db>config>toArray()); $select=$db>select(); $select>from('alunos'); $select>where('id>?',2); $select>order('nome'); $stmt=$select>query(); $stmt>execute(); while($registro=$stmt>fetch()) { echo'<p>'; foreach($registroas$campo=>$conteudo) { echo"$campo=$conteudo<br>"; } echo'</p>'; }

Desenvolvendo em Zend Framework

E EU TENHO QUE ESCREVER DESSE JEITO?

NO!TEMA INTERFACE FLUENTE!

Kingpinrcreated byStanLee andJohn RomitaSr.in 1967 MarvelComics AllRights Reserved


Spidermancreated byStanLee andSteveDitkoin 1962 MarvelComics AllRightsReserved

Desenvolvendo em Zend Framework

Zend_Db_Select: Interface Fluente


require_once('Zend/Db.php'); require_once('Zend/Config/Xml.php'); $config=newZend_Config_Xml('config.xml','development'); $db=Zend_Db::factory($config>db>adapter,$config>db>config>toArray() ); $select=$db>select(); $select>from('alunos')>where('id>?',2)>order('nome'); $stmt=$select>query(); $stmt>execute(); while($registro=$stmt>fetch()) { echo'<p>'; foreach($registroas$campo=>$conteudo) { echo"$campo=$conteudo<br>"; } echo'</p>'; }

Desenvolvendo em Zend Framework

Zend_Db_Select: Obtendo a expresso SQL


require_once('Zend/Db.php'); require_once('Zend/Config/Xml.php'); $config=new Zend_Config_Xml('config.xml','development'); $db=Zend_Db::factory( $config>db>adapter, $config>db>config>toArray() ); $select=$db>select(); $select>from('alunos')>where('id>?',2) >order('nome'); echo$select>__toString();

Desenvolvendo em Zend Framework

Tabelas como Objetos: Zend_Db_Table


A IMPLEMENTAO DOGATEWAYDE TABELADEDADOS!

GreenLanternAlanScott createdbyBillFinger andMartinNodellin 1940 DCComics AllRightsReserved

Desenvolvendo em Zend Framework

Zend_Db_Table : Criando o Modelo

<?php require_once('Zend/Db/Table.php'); classAlunosextendsZend_Db_Table { protected$_name='alunos'; } ?>

Desenvolvendo em Zend Framework

Zend_Db_Table : Usando o Modelo para Recuperar Registros


require_once('Zend/Db.php'); require_once('Zend/Config/Xml.php'); require_once('Alunos.php'); $config=newZend_Config_Xml('config.xml','development'); $db=Zend_Db::factory($config>db>adapter,$config>dbconfig >toArray()); Zend_Db_Table_Abstract::setDefaultAdapter($db); $alunos=newAlunos(); $where=$alunos>getDefaultAdapter()>quoteInto('id>?',2); $registros=$alunos>fetchAll($where,'nome');

Desenvolvendo em Zend Framework

Zend_Db_Table : Usando o Modelo para Recuperar Registros


foreach($registrosas$registro) { echo'<p>'; foreach($registro>toArray()as$campo=>$conteudo) { echo"$campo=$conteudo<br>"; } echo'</p>'; }

Desenvolvendo em Zend Framework

Zend_Db_Table : Incluindo registros


require_once('Zend/Db.php'); require_once('Zend/Config/Xml.php'); require_once('Alunos.php'); $config=newZend_Config_Xml('config.xml','development'); $db=Zend_Db::factory( $config>db>adapter, $config>db>config>toArray() ); Zend_Db_Table_Abstract::setDefaultAdapter($db); $alunos=newAlunos(); $data=array( "nome"=>'Urtigo' ); $alunos>insert($data);

Desenvolvendo em Zend Framework

Zend_Db_Table : Atualizando registros


require_once('Zend/Db.php'); require_once('Zend/Config/Xml.php'); require_once('Alunos.php'); $config=newZend_Config_Xml('config.xml','development'); $db=Zend_Db::factory( $config>db>adapter, $config>db>config>toArray() ); Zend_Db_Table_Abstract::setDefaultAdapter($db); $alunos=newAlunos(); $data=array( "nome"=>'VovDonalda' ); $where=$alunos>getAdapter()>quoteInto('id=?',14); $alunos>update($data,$where);

Desenvolvendo em Zend Framework

Zend_Db_Table : Apagando registros


require_once('Zend/Db.php'); require_once('Zend/Config/Xml.php'); require_once('Alunos.php'); $config=newZend_Config_Xml('config.xml','development'); $db=Zend_Db::factory( $config>db>adapter, $config>db>config>toArray() ); Zend_Db_Table_Abstract::setDefaultAdapter($db); $alunos=newAlunos(); $data=array( "nome"=>'VovDonalda' ); $where=$alunos>getAdapter()>quoteInto('id=?',15); $alunos>delete($where);

Desenvolvendo em Zend Framework

Conjuntos de Linhas como Objetos: Zend_Db_Rowset


A IMPLEMENTAO DOGATEWAYDE LINHASDEDADOS!

Desenvolvendo em Zend Framework

Zend_Db_Rowset a partir de Zend_Db_Table As consultas feitas com os mtodos fetchAll() e find() retornam objetos Zend_Db_Rowset. O mtodo find() faz buscas diretamente pela chave primria. Se um valor simples for passado como parmetro, ele retorna um objeto Zend_Db_Rowset com somente um objeto Zend_Db_Row. Se for passado uma matriz de valores, sero retornados tantos objetos Zend_Db_Row quantos os cujas chaves primrias combinarem com as da matriz.

Desenvolvendo em Zend Framework

Linhas como Objetos: Zend_Db_Row


$alunos=newAlunos(); $where=$alunos>getDefaultAdapter()>quoteInto('id>?',2); $registros=$alunos>fetchAll($where,'nome'); while($registro=$registros>current()) { echo'<p>'; foreach($registro>toArray()as$campo=>$conteudo) { echo"$campo=$conteudo<br>"; } echo'</p>'; $registros>next(); }

OPA, TEM UM PADRO ITERATOR AQUI!

Desenvolvendo em Zend Framework

Linhas como Objetos: Zend_Db_Row


T,MASPRA QUESERVE AFINALESSE ZEND_DB_ROW?

TheThing createdbyStanLee andJackKirbyin 1961 MarvelComics AllRightsReserved

Desenvolvendo em Zend Framework

Zend_Db_Row: Objetos Persistentes


require_once('Zend/Db.php'); require_once('Zend/Config/Xml.php'); require_once('Alunos.php'); $config=newZend_Config_Xml('config.xml','development'); $db=Zend_Db::factory($config>db>adapter,$config>db>config >toArray()); Zend_Db_Table_Abstract::setDefaultAdapter($db); $alunos=newAlunos(); $where=$alunos>getDefaultAdapter()>quoteInto('nome=?','zico'); $registro=$alunos>fetchRow($where); $registro>nome='zeca'; $registro>save();

OPA, MAS ESSE O PADRAO ACTIVE RECORD!

Desenvolvendo em Zend Framework

Zend_Db_Row: Criar Objetos = Incluir Registros


require_once('Zend/Db.php'); require_once('Zend/Config/Xml.php'); require_once('Alunos.php'); $config=newZend_Config_Xml('config.xml','development'); $db=Zend_Db::factory( $config>db>adapter, $config>db>config>toArray() ); Zend_Db_Table_Abstract::setDefaultAdapter($db); $alunos=newAlunos(); $registro=$alunos>createRow(); $registro>nome='Chiquinho'; $registro>save();

Desenvolvendo em Zend Framework

Zend_Db_Row: O Objeto Apaga o Registro (Ele Mesmo!)


require_once('Zend/Db.php'); require_once('Zend/Config/Xml.php'); require_once('Alunos.php'); $config=newZend_Config_Xml('config.xml','development'); $db=Zend_Db::factory( $config>db>adapter, $config>db>config>toArray() ); Zend_Db_Table_Abstract::setDefaultAdapter($db); $alunos=newAlunos(); $registro=$alunos>fetchRow("nome='Chiquinho'"); $registro>delete();

Desenvolvendo em Zend Framework

Zend_Db_Row: E se os dados mudarem?

Quando o objeto Zend_Db_Row recuperado atravs de uma consulta, ele retorna com os dados do banco naquele momento. Atualizaes no banco no so propagadas automaticamente para o objeto. Para carregar o objeto com os dados atualizados, use o mtodo refresh().

Desenvolvendo em Zend Framework

Monitore as Operaes do Banco

$profiler=$db>getProfiler(); Isso retorna uma instncia de objeto Zend_Db_Profiler. Com essa instncia, o desenvolvedor pode examinar suas consultas usando uma variedade de mtodos:

getTotalNumQueries() retorna o nmero total de consultas que foram executadas.

getTotalElapsedSecs() retorna o nmero total de segundos transcorridos para todas as consultas executadas.

getQueryProfiles() retorna um vetor de todos os perfis de consulta.

getLastQueryProfile() retorna o ltimo (mais recente) perfil de consulta, no obstante a consulta tenha ou no terminado. (se no tiver, a hora de trmino ser nula)

Desenvolvendo em Zend Framework

Monitore as Operaes do Banco

clear() limpa quaisquer perfis de consulta passados da pilha.

O valor de retorno de getLastQueryProfile() e os elementos individuais de getQueryProfiles() so objetos Zend_Db_Profiler_Query, que provem a habilidade de inspecionar as consultas individuais por elas mesmas: getQuery() retorna o texto SQL da consulta. O texto SQL de uma declarao preparada com parmetros o texto no momento em que a consulta for preparada, assim ela contm espaos reservados para valores de parmetro, no os valores usados quando a declarao executada.

getQueryParams() retorna um vetor de valores de parmetro usados quando executar uma consulta preparada. Isso inclui tanto parmetros de combinao quanto argumentos para o mtodo execute() de declarao. As chaves do vetor so ndices de parmetro posicionais (baseados em 1) ou nomeados (string).

getElapsedSecs()

retorna o nmero de segundo que a consulta levou para rodar.

Desenvolvendo em Zend Framework

Terei que fazer tudo isso? Pode usar o projeto mnimo pra comear, ele est disponvel em www.fgsl.eti.br. Lembre-se de que apenas um dos layouts possveis para uma aplicao.

Desenvolvendo em Zend Framework

Onde encontro ajuda? http://framework.zend.com www.zfbrasil.com Tem um livro tambm, sabe...

Desenvolvendo em Zend Framework

Contato: flaviogomesdasilva@yahoo.com.br
FOIUMA GRANDE HONRA!

Vous aimerez peut-être aussi