Você está na página 1de 170

Code Igniter Verso 1.5.

2 - Guia do Usurio

Sumrio
Code Igniter URLs .......................................................................................................................................................................... 4 Model-View-Controller ................................................................................................................................................................ 5 Pontap Inicial ................................................................................................................................................................................ 5 Controllers ....................................................................................................................................................................................... 6 Views ................................................................................................................................................................................................12 Models .............................................................................................................................................................................................16 Funes Assistentes (Helpers) ................................................................................................................................................19 Plugins .............................................................................................................................................................................................20 Utilizando as Bibliotecas do Code Igniter...........................................................................................................................21 Criando Bibliotecas .....................................................................................................................................................................21 Criando Classes do Ncleo do Sistema ...............................................................................................................................25 Ganchos - Estendendo o Ncleo do Framework .............................................................................................................27 Recursos de Autocarregamento ............................................................................................................................................29 Scaolding .....................................................................................................................................................................................30 Roteamento URI ...........................................................................................................................................................................31 Tratamento de Erros ...................................................................................................................................................................33 Cache de Pgina ..........................................................................................................................................................................34 Gerenciando suas Aplicaes .................................................................................................................................................35 Sintaxe PHP Alternativa para arquivos de Visualizao (View les) ..........................................................................36 Segurana ......................................................................................................................................................................................37 Classe Benchmarking.................................................................................................................................................................40 Classe Calendar ............................................................................................................................................................................42 Classe Cong .................................................................................................................................................................................45 Classe Email ...................................................................................................................................................................................47 Classe Criptograa ......................................................................................................................................................................51 Classe Upload de Arquivo ........................................................................................................................................................53 Guia de Referncia ......................................................................................................................................................................56 Classe FTP.......................................................................................................................................................................................59 Referncia da Funo .................................................................................................................................................................60 Classe Tabela HTML ....................................................................................................................................................................62 Referncia da Funo .................................................................................................................................................................64 Classe Manipulao de Imagem ............................................................................................................................................66 Marca-dgua ................................................................................................................................................................................71 Classe Input ...................................................................................................................................................................................73 Classe Loader ...............................................................................................................................................................................76 Classe Idioma ................................................................................................................................................................................77 Classe Output ..............................................................................................................................................................................78 Classe Paginao ........................................................................................................................................................................79 Classe Sesso ................................................................................................................................................................................82 Classe Trackback ..........................................................................................................................................................................85 Classe Template Parser ..............................................................................................................................................................88 Classe Unit Testing ......................................................................................................................................................................90 Classe URI .......................................................................................................................................................................................92 Classe User Agent........................................................................................................................................................................94 Referncias de Funes .............................................................................................................................................................95 Validao de Formulrio ...........................................................................................................................................................97 Classes XML-RPC e Servidor de XML-RPC ....................................................................................................................... 106 XML-RPC funo referncia .................................................................................................................................................. 111 Classe codicao ZIP ............................................................................................................................................................ 113 Function Reference .................................................................................................................................................................. 113 Classe banco de dados .......................................................................................................................................................... 117 2 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Query ............................................................................................................................................................................................ 122 Resultado Helper funes .................................................................................................................................................... 125 Query Helper funes ............................................................................................................................................................ 125 Active Record classe ............................................................................................................................................................... 127 Transaes (Transactions) ..................................................................................................................................................... 134 Campo de dados (Field Data)............................................................................................................................................... 135 Funo convites personalizados (Custom Function Calls): ...................................................................................... 137 Database Utility Class ............................................................................................................................................................ 137 Classe Database caching ...................................................................................................................................................... 141 Funo Referncia .................................................................................................................................................................... 142 Assistente de Array .................................................................................................................................................................. 145 Assistente de Cookie ............................................................................................................................................................... 146 Assistente de Data ................................................................................................................................................................... 147 Assistente de Diretrio ........................................................................................................................................................... 151 Assistente de Download ........................................................................................................................................................ 152 Assistente de Arquivo ............................................................................................................................................................. 152 Assistente de Formulrio ....................................................................................................................................................... 153 Assistente de HTML ................................................................................................................................................................. 158 Assistente de Segurana........................................................................................................................................................ 160 Assistente de Smiley ............................................................................................................................................................... 161 Referncia da Funo .............................................................................................................................................................. 163 Assistente de String ................................................................................................................................................................. 163 Assistente de Texto .................................................................................................................................................................. 164 Assistente de Tipograa ......................................................................................................................................................... 166 Assistente de URL ..................................................................................................................................................................... 167 Assistente de XML .................................................................................................................................................................... 170

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Code Igniter URLs


Por default, URLs no Code Igniter so projetadas para serem amigveis aos motores de busca e ao ser humano. No lugar de usar a abordagem padro query string que sinnim de sistemas dinmicos, Code Igniter usa a abordagem baseada em segmentos: www.seu-site.com/noticias/artigos/meu_artigo Note: Query string URLs podem ser opcionalmente habilitadas, como descrito abaixo.

Segmentos URI
Os segmentos na URL, de acordo com a abordagem Model-View-Controller, geralmente representam: www.seu-site.com/classe/funcao/ID O primeiro segmento representa a classe controller que ser invocada. O segundo segmento representa a classe funo, ou mtodo, que ser chamada. O terceiro, e qualquer outro subseqente, representa o ID ou qualquer outra varivel que sero passados com controller. A Classe URI e o Assistente URL contm funes que facilitaro o trabalho com seus dados URI. Alm disto, suas URLs podem ser remapeadas usando a caracterstica URI Routing, proporcionando mais exibilidade.

Removendo o arquivo index.php


Por default, o arquivo index.php ser incluso em suas URLs: www.seu-site.com/index.php/noticias/artigos/meu_artigo Voc pode remover facilmente este arquivo usando um arquivo .htaccess com algumas regras simples. Aqui est um exemplo de tal arquivo, usando o mtodo negativo no qual tudo redirecionado exceto os itens especicados: RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L] No exemplo acima, qualquer requisio HTTP, outra que aquela pelo index.php, imagens e robots.txt ser tratada como uma requisio pelo arquivo index.php.

Adicionando um suxo URL


No seu arquivo cong/cong.php voc pode especicar um suxo que ser adicionado a todas as URLs geradas pelo Code Igniter. Por exemplo, se uma URL assim: www.seu-site.com/index.php/produtos/view/sapatos Voc pode opcionalmente adicionar um suxo como .html, fazendo a pgina aparecer como de um certo tipo: www.seu-site.com/index.php/produtos/view/sapatos.html

Habilitando Query Strings


Em alguns casos, voc pode preferir usar URLs query strings: index.php?c=produtos&m=view&id=345

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Model-View-Controller
O Code Igniter baseado no padro de desenvolvimento Model-View-Controller. A MVC uma abordagem de software que separa a lgica da aplicao de sua apresentao. Em prtica, ela permite que suas pginas web contenham o mnimo de scripts j que a apresentao separa do cdigo PHP. O Model representa suas estruturas de dados. Tipicamente, suas classes model iro conter funes que lhe ajudaro a buscar, inserir e substituir informaes em sua bando de dados.. A View a informao que ser apresentada ao usurio. A View ser normalmente uma pgina web, mas no Code Igniter, uma view pode ser tambm um fragmento de pgina como um cabealho ou rodap. Ela pode ser tambm uma pgina RSS, ou qualquer outro tipo de pgina. O Controller serve como um intermedirio entre o Model, a View, e qualquer outro recurso necessrio para processar a requisio HTTP e gerar a pgina web. O Code Igniter tem uma abordagem mais solta em relao ao MVC, j que Models no so obrigatrios. Se voc no precisa desta facilidade, ou acha que manter models gerar mais complexidade que voc quer, pode ignor-las e construir sua aplicao apenas usando Controllers e Views. Code Igniter tambm proporciona que voc incorpore seus prprios scripts, ou mesmo desenvolva bibliotecas para o sistema, lhe possibilitando trabalhar de um jeito que faa mais sentido para voc.

Pontap Inicial
Qualquer software demanda certo esforo em seu aprendizado. Ns zemos nosso melhor para minimizar a curva de aprendizado mantendo o processo o mais aprecivel possvel. O primeiro passo instalar o Code Igniter e ento ler todos os tpicos na seo Introduo deste Guia. Em seguida, leia cada um dos Assuntos Gerais na ordem em que esto listados. Cada assunto se baseia no anterior e inclui exemplos de cdigo que voc encorajado a experimentar. Quanto compreender o bsico, voc est pronto a explorar as pginas das Referncias de Classes e as Referncias de Assistentes para aprender a utilizar as bibliotecas e arquivos assistentes nativos. Fique a vontade para aproveitar nosso Frum Comunitrio se tiver dvidas ou problemas e nosso Wiki para ver exemplos de cdigo postados por outros usurios.

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio O Code Igniter opcionalmente suporta esta capacidade, que pode ser habilitada no arquivo application/ cong.php. Se voc abrir seu arquivo de congurao ver estes itens: $cong[enable_query_strings] = FALSE; $cong[controller_trigger] = c; $cong[function_trigger] = m; Se voc alterar enable_query_strings para TRUE, este recurso ser ativado. Seus controles e funes sero ento acessados usando palavras gatilho que voc congurar para invocar seus controllers e mtodos: index.php?c=controller&m=metodo Por favor, note: Se voc est usando query strings, ter que construir suas prprias URLs, ao invs de utilizar os assistentes URL (e outros assistentes que geral URLs, como alguns dos assistentes de formulrio) j que eles foram projetados para trabalhar com URLs segmentadas.

Controllers
Controllers so o corao da sua aplicao, pois determinam como as requisies HTTP devem ser tratadas.

O que um Controler?
Um Controller simplesmente um arquivo de classe que nomeado de uma forma em que possa ser associado a uma URI. Considere este URI: www.seu-site.com/index.php/blog/ No exemplo acima, o Code Igniter tentar encontrar um controller chamado blog.php e o carregar. Quando um nome de um controller bate com o primeiro segmento do URI, ele ser carregado.

Vamos experimentar: Hello World!


Vamos criar um simples controller para que voc possa v-lo em ao. Usando um editor de texto, crie um arquivo chamado blog.php e escreva nele o seguinte cdigo: <?php class Blog extends Controller { function index() { echo Hello World!; } } ?> Ento salve o arquivo no seu diretrio application/controllers/. Agora, visite o seu site usando uma URL parecida com esta: www.seu-site.com/index.php/blog/ Se voc fez certo, dever ver o seguinte: Hello World!. 6 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Note: Nomes de Classes devem comear com uma letra maiscula. Em outras palavras, isto vlido: <?php class Blog extends Controller { } ?> E isto no vlido: <?php class blog extends Controller { } ?> E tambm sempre tenha certeza que seu controller estenda o controller pai para que possa herdar todas as funes deste.

Funes
No exemplo acima, o nome da funo index(). A funo index sempre carregada por default se o segundo segmento do URI estiver vazio. Outro jeito de mostrar sua mensagem Hello World poderia ser este: www.seu-site.com/index.php/blog/index/ A segunda parte do segmento do URI determina qual funo no controller chamada. Vamos tentar isto. Adicione uma nova funo ao seu controller: <?php class Blog extends Controller { function index() { echo Hello World!; } function comments() { echo Olher para isto!; } } ?>

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Carregue agora a seguinte URL para ver a funo comment: www.seu-site.com/index.php/blog/comments/ Voc dever ver sua nova mensagem.

Passando Segmentos UTI para suas Funes


Se seus URI contm mais de 2 segmentos, eles sero passados suas funes como parmetros. Por exemplo, digamos que voc tenha um URI como este: www.seu-site.com/index.php/produtos/sapatos/sandalias/123 Para sua funo sero passados os segmentos URI 3 e 4 (sandalias e 123): <?php class Products extends Controller { function shoes($sandalias, $id) { echo $sandalias; echo $id; } } ?> Importante: Se voc est usando o recurso URI Routing, os segmentos passados suas funes sero aqueles previamente roteados (re-routed).

Denindo um Controller Default


Ao Code Igniter pode ser dito para carregar o controller default quando um URI no est presente, pois este ser o caso quando apenas a URL raiz do seu site requisitada. Para especicar um controller default, abra seu arquivo application/cong/routes.php e altere esta varivel: $route[default_controller] = Blog; Onde Blog o nome do classe controller que voc quer usar. Se voc carregar agora seu index.php geral, sem especicar qualquer segmento URI, ver sua mensagem Hello World.

Remapeando Chamadas de Funes


Como notado acima, o segundo segmento do URI tipicamente determina qual funo no controller ser chamada. Code Igniter permite que voc sobreponha este comportamente atravs do uso da funo _ remap(): function _remap() { // Algum cdigo aqui } 8

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Importante: Se seu controller contm uma funo chamada _remap(), ela sempre ser chamada independente do seu URI contenha. Ela sobrepe o comportamente normal no qual o URI determina qual funo ser chamada, permitindo que voc dena suas prprias regras de roteamento de funes. A chamada de funo sobreposta (tipicamente o segundo segmento do URI) ser passado como um parmetro funo _remap(): function _remap($metodo) { if ($metodo == algum_metodo) { $this->$metodo(); } else { $this->metodo_default(); } }

Processando a Sada
O Code Igniter tem uma classe de sada que toma conta de enviar os dados renderizado nais ao web browser automaticamente. Mais informaes sobre isto pode ser encontrado nas pginas Views e Classe Sada. Em alguns casos, no entanto, voc pode preferir ps-processar os dados nalizdos e ento enviar para o browser voc mesmo. Code Igniter permite que voc adicione uma funo chamada _output() em seu controller que ir receber os dados de sada nalizados. Importante: Se seu controller contm uma funo chamada _output(), ela sempre ser chamada pela classe Sada no lugar de dar echo diretamente nos dados nalizados. O primeiro parmetro desta funo conter a sada nalizada. Aqui est um exemplo: function _output($output) { echo $output; } Por favor, note que sua funo _output() ir receber os dados em seu estado nal. Benchmark e dados de uso de memria sero renderizados, arquivos de cache sero escritos (se o cache estiver habilitado) e cabealhos sero enviados (se voc usar tal recurso) antes que sejam entregues funo _output(). Se voc est usando este recurso, o temporizador de execuo da pgina e as estatsticas de uso de memria podero no ser perfeitamente precisos pois eles no sero consideraro qualquer processamento adicional que voc zer. Para uma forma alternativa de controlar a sada antes que qualquer processamento nal feito, por favor veja os mtodos disponveis na Classe Output. Diagramado por: edson jr - edsonthadeu@hotmail.com 9

Code Igniter Verso 1.5.2 - Guia do Usurio

Funes Privadas
Em alguns casos, voc pode querer que certas funes no sejam acessas publicamente. Para fazer uma funo privada, simplesmente adicione um underscore como prexo do nome e ela no ser servida via requisao URL. Por exemplo, se voc tiver uma funo como esta: function _utility() { // algum cdigo } Tentar acess-la via URL, da seguinte forma, no funcionar: www.seu-site.com/index.php/blog/_utility/

Organizando seus Controllers em Subdiretrios


Se voc est construindo uma aplicao grande, pode achar conveniente organizar seus controllers em sub-diretrios. Code Igniter permite que o faa. Simplesmente crie subdiretrios em seu diretrio application/controllers e coloque seuas classe controllers dentro deles. Note: Utilizando-se este recurso, o primeiro segmento de seu URI precisar especicar o diretrio. Por exemplo, digamos que voc tenha um controller localizado aqui: application/controllers/produtos/sapatos.php Para chamar o controle acima, seu URI ir se parecer com isto: www.seu-site.com/index.php/produtos/sapatos/123 Cada um de seus subdiretrios poder conter um controller default que ser chamado se a URL contiver apenas um subdiretrio. Simplesmente nomeie seu controller default como especiado em arquivo application/cong/routes.php. Code Igniter tambm lhe permite remapear seus URIs usando seu recurso Roteamento URI.

Construtores de Classes
Se voc pretende usar um construtor em algum de seus Controllers, voc DEVE colocar a seguinte linha de cdigo nele: parent::Controller(); A razo para esta linha ser necessria porque seu construtor local ir sobrepor aquele na classe controller pai, por isto precisamos cham-la manualmente. Se voc no est familirizado com construtores (constructors), em PHP 4, um construtor simplesmente uma funo que tem o mesmo nome da classe: <?php class Blog extends Controller { function Blog() { } ?> 10 Diagramado por: edson jr - edsonthadeu@hotmail.com parent::Controller(); }

Code Igniter Verso 1.5.2 - Guia do Usurio Em PHP 5, construtores usam a seguinte sintaxe: <?php class Blog extends Controller { function __construct() { parent::Controller(); } } ?> Construtores so teis se voc precisa denir alguns valores default, ou rodar um processo default enquanto sua classe instanciada. Construtores no podem retornar um valor, mas podem executar algum trabalho default.

Nomes Reservedos de Funes


J que suas classes controller iro estender o controller principal da aplicao, voc precisa tomar cuidado em no nome-las de forma idntica quelas usadas pela principal, caso contrrio suas funes locais iro sobrescrev-las. Abaixo, uma lista de nomes reservados. No nomeie suas funes como uma destas: Controller CI_Base _ci_initialize _ci_scaolding Se estiver rodando PHP 4, ainda h alguns nomes adicionais. Estes se aplicam SOMENTE se voc estiver rodando PHP 4. CI_Loader cong database le helper helpers language library model plugin plugins scaolding isto! Resumidamente, isto tudo que precisa saber sobre controllers. Diagramado por: edson jr - edsonthadeu@hotmail.com 11 script view vars _ci_assign_to_models _ci_autoloader _ci_init_class _ci_init_scaolding _ci_is_instance _ci_load _ci_load_class _ci_object_to_array

Code Igniter Verso 1.5.2 - Guia do Usurio

Views
Uma view simplesmente uma pgina ou um fragmento de pgina, como um cabealho, um rodap, uma coluna lateral etc. Alis, views podem tambm ser embutidas dentro de outras views se voc precisar. Views nunca so chamadas diretamente, elas precisam ser carregadas por um controller. Lembre-se que num framework MVC, o Controller atua como um guarda de trnsito, sendo responsvel por controlar o trfego de dados e chamar a view quando preciso. Se voc ainda no leu a pgina Controllers, o faa antes de continuar lendo isto. Usando o controller de exemplo que voc criou na pgina controller, vamos adicionar uma view a ele.

Criando uma View


Usando seu editor de texto, crie um arquivo chamado blogview.php, e coloque isto nele: <html> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/general/views.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:55 GMT --> <head> <title>Meu Blog</title> </head> <body> <h1>Bem-vindo ao meu Blog!</h1> </body> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/general/views.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:55 GMT --> </html> Salve o arquivo em seu diretrio application/views/.

Carregando uma View


Para carregar um arquivo view especco, voc deve usar a seguinte funo: $this->load->view(nome); Onde nome o nome de seu arquivo view. Note: A extenso .php no precisa ser especicada a menos que voc use outra coisa alm dela. Agora, abra o arquivo controller blog.php que voc fez anteriormente e substitua o comando echo com a funo de carregamento da view:

12

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio <?php class Blog extends Controller { function index() { $this->load->view(blogview); } } ?> Se visitar seu site usando aquela mesma URL de antes, dever ver sua nova view. A URL era similar a esta: www.seu-site.com/index.php/blog/

Armazenando Views dentro de subdiretrios


Seus arquivos view podem tambm ser armazenados dentro de subdiretrios se voc assim quiser organiz-los. Para isto, ser preciso incluir o nome do diretrio no carregamento da view. Exemplo: $this->load->view(nome-do-diretorio/nome-do-arquivo);

Adicionando Dados Dinmicos em uma View


Dados so passados do controller para a view atravs de uma array ou de um object no segundo parmetro fa funo de carregamento da view. Aqui vai um exemplo utilizando uma array: $data = array( title => Meu Ttulo, heading => Meu cabealho message => Minha Mensagem ); $this->load->view(blogview, $data); E aqui est um exemplo utilizando um objeto: $data = new ClasseQualquer(); $this->load->view(blogview, $data); Note: Se voc usar um objeto, as variveis da classe sero transformadas em elementos de uma array. Vamos experimentar em nosso arquivo controller. Abra-o e digite isto:

Diagramado por: edson jr - edsonthadeu@hotmail.com

13

Code Igniter Verso 1.5.2 - Guia do Usurio <?php class Blog extends Controller { function index() { $data[title] = Meu ttulo real; $data[heading] = Meu cabealho real; $this->load->view(blogview, $data); } } ?> Agora, abra seu arquivo view e altere o texto para variveis que correspondem as chaves (keys) da array em seus dados: <html> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/general/views.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:55 GMT --> <head> <title><?=$title;?></title> </head> <body> <h1><?=$heading;?></h1> </body> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/general/views.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:55 GMT --> </html> Carrega a pgina usando a URL costumeira e voc dever ver as variveis substitudas. Note: Voc notar que no exemplo acima estamos usando a sintaxe alternativa do PHP. Se voc no est familiarizado com ela, leia isto.

Criando Loops
A array de dados que voc passa a seus arquivos view no limitada a simples variveis. Voc pode passar arrays multidimensionais, que podem se repetir em loop para gerar mltiplas linhas. Por exemplo, se voc puxar alguma informao de seu banco de dados, ela geralmente vir na forma de uma array multidimensional. Aqui vai um simples exemplo. Adicione isto em seu controller: 14 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio <?php class Blog extends Controller { function index() { $data[afazeres] = array(Limpar a Casa, Ligar pra a mame, Jogar uma pelada); $data[title] = Meu ttulo real; $data[heading] = Meu cabealho real; $this->load->view(blogview, $data); } } ?> Abra agora seu arquivo view e crie um loop: <html> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/general/views.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:55 GMT --> <head> <title><?=$title;?></title> </head> <body> <h1><?=$heading;?></h1> <h3>Meus Afazeres</h3> <ul> <?php foreach($afazeres as $item):?> <li><?=$item;?></li> <?php endforeach;?> </ul> </body> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/general/views.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:55 GMT --> </html>

Diagramado por: edson jr - edsonthadeu@hotmail.com

15

Code Igniter Verso 1.5.2 - Guia do Usurio

Models
Models esto opcionalmente disponveis para aqueles que quiserem usar a abordagem MVC mais tradicional.

O que um Model?
Models so classes PHP projetadas para trabalhar a informao em seu banco de dados. Por exemplo, digamos que voc use o Code Igniter para gerenciar um blog. Voc poderia ter uma classe model contendo funes para inserir, atualizar e buscar seus dados do banco. Mais abaixo, um exemplo de como se parece uma classe Model: class Blogmodel extends Model { var $title = ; var $content = ; var $date = ; function Blogmodel() { // Chama o construtor do Model parent::Model(); } function get_last_ten_entries() { $query = $this->db->get(entries, 10); return $query->result(); } function insert_entry() { $this->title = $_POST[title]; $this->content = $_POST[content]; $this->date = time(); $this->db->insert(entries, $this); } function update_entry() { $this->title = $_POST[title]; $this->content = $_POST[content]; 16 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio $this->date = time(); $this->db->update(entries, $this, array(id, $_POST[id])); } } Note: As funes do exemplo acima usam as funes Active Record para banco de dados.

Anatomia de um Model
Classes Model so armazenadas em seu diretrios application/models/. Elas podem ser aninhadas em subdiretrios se voc preferir. O prottipo bsico para uma classe Model este: class Model_name extends Model { function Model_name() { parent::Model(); } } Onde Model_name o nome da sua classe. Nomes de Classes devem ter inicial maiscula. Tenha certeza que sua classe estende a classe Model bsica. O nome do arquivo ser o nome da classe todo em minsculas. Por exemplo, se sua classe essa: class User_model extends Model { function User_model() { parent::Model(); } } Ento seu arquivo ser: application/models/user_model.php

Diagramado por: edson jr - edsonthadeu@hotmail.com

17

Code Igniter Verso 1.5.2 - Guia do Usurio

Carregando um Model
Seus models sero tipicamente carregados e chamados dentro das funes de seus controller. Para carregar um model, voc usar a seguinte funo: $this->load->model(Model_name); Se seu model estiver em um subdiretrio, inclua o caminha relativo para sua diretrio. Po exemplo, se voc tem um model localizado em application/models/blog/queries.php voc o carregar usando: $this->load->model(blog/queries); Uma vez carregado, voc acessar as funes de seu model utilizando um objeto como o mesmo classe que havia criado: $this->load->model(Model_name); $this->Model_name->function(); Se voc quiser atribuire seu model a um objeto de nome diferente, pode especicar isto atravs do segundo parmetro da funo de carregamento: $this->load->model(Model_name, fubar); $this->fubar->function(); Abaixo um exemplo de um controller, que carrega um model e ento serve uma view: class Blog_controller extends Controller { function blog() { $this->load->model(Blog); $data[query] = $this->Blog->get_last_ten_entries(); $this->load->view(blog, $data); } }

Conectando-se a seu Bando de Dados


Quanto um model carregado, ele NO se conecta automaticamente ao seu banco. As seguintes opes de conexo esto disponveis: Voc pode conectar usando os mtodos padres de bancos de dados, descritos aqui, ou atravs de sua classe Controller class ou de sua classe Model. Voc pode mandar a funo de carregamento do model para se autoconectar passando TRUE (booleano) atravs do terceiro parmetro, como denido em arquivo de congurao do banco de dados: $this->load->model(Model_name, , TRUE); Voc pode passar as congurao de conexo manualmente, tambm atravs do terceiro parmetro:

18

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio


$cong[hostname] = localhost; $cong[username] = myusername; $cong[password] = mypassword; $cong[database] = mydatabase; $cong[dbdriver] = mysql; $cong[dbprex] = ; $cong[pconnect] = FALSE; $cong[db_debug] = TRUE; $cong[active_r] = TRUE; $this->load->model(Model_name , , $cong);

Funes Assistentes (Helpers)


Assistentes, como o nome sugere, lhe ajudam em suas tarefas. Cada arquivo assistente simplesmente uma comjunto de funes de uma categoria particular. H os Assistentes de URL, que lhe ajudam a criar links, os Assisntes de Formulrio que lhe ajudam a criar os elementos de seu form, os Assistentes de Texto que geram vrias rotinas de formatao de texto, os Assistentes de Cookie que criam e lem cookies, os Assistentes de Arquivo que lhe ajudam a trabalhar com arquivos etc. Ao contrrio de outros sistemas no Code Igniter, os Assistentes no foram escritos num formato Orientado a Objetos. Eles so simples, procedurais funes. Cada funo assistente executa uma especca tarefa, sem qualquer dependncia com outras funes. O Code Igniter no carrega os arquivos assistentes por default, por isto o primeiro passo quando for utilizar um Assistente carreg-lo. Uma vez carregado, ele se ca disponvel globalmente em seu controller e views. Assistentes so tipicamente armazenados em seu diretrio system/helpers. Como alternativa, voc pode criar um diretrio chamado helpers dentro do seu diretrio application e armazen-los l. O Code Igniter ir procurar primeiro em seu diretrio system/application/helpers. Caso ele no exista, ou o assistente referenciado no estiver l, CI ir procurar em seu diretrio global system/helpers.

Carregando um Assistente
Carregar um arquivo assistente bem simples utilizando-se a funo: $this->load->helper(name); Onde name o nome do arquivo do assistente, sem a extenso .php ou a parte helper aparecendo. Por exemplo, para carregar o Assistente de URL, que chamado url_helper.php, voc deveria fazer isto: $this->load->helper(url); Um assistente pode ser carregado em qualquer lugar dentro de suas funes do controller (ou at dentro de seus arquivos View, embora esta no seja uma boa prtica), desde que voc o carregue antes de usar. Voc pode carregar seus assistentes em seu construtor controller para que eles se tornem disponveis automaticamente a qualquer funo, ou voc pode apenas carreg-los diretamente na funo que o requer.

Diagramado por: edson jr - edsonthadeu@hotmail.com

19

Code Igniter Verso 1.5.2 - Guia do Usurio Note: A funo de carregamento de um Assistente no retorna um valor, por isso no tente atribu-la a uma varivel. Ento s a use como mostrado.

Carregando Mltipos Assistentes


Se voc precisa carregar mais de um assistente pode especic-los numa array, como esta: $this->load->helper( array(assistente1, assistente2, assistente3) );

Carregando Assistentes Automaticamente


Se voc descobrir que precisa de um assistente global em sua aplicao, pode dizer ao Code Igniter para carreg-lo automaticamente durante a inicializao do sistema. Isto feito adicionando-se ao arquivo application/cong/autoload.php, o assistente ao array autoload.

Usando um Assistente
Carregado o arquivo assistente que contm a funo que voc pretende usar, voc dever cham-lo da mesma forma que chamaria uma funo PHP. Por exemplo, para criar um link utilizando a funo anchor() em uma de suas views, faa o seguinte: <?=anchor(blog/comments, Clique Aqui);?> Onde Clique aqui o texto do link e blog/comments o URI para o controller/funo que que ser linkado.

E agora?
Na listagem de Contedos voc ir encontrar uma lista de todos os Assistentes disponveis. Navegue por todos para descubrir o que eles fazem.

Plugins
Plugins trabalham de forma praticamente idntica aos Assistentes. A principal diferena que um plugin geralmente prov uma simples funo, enquanto o assistente geralmente uma coleo de funes. Assistentes so tambm considerados uma parte do ncleo do sistema; A idia que os plugins sejam criados e compartilhados por nossa comunidade.. Plugins deveriam ser salvos em seu diretrio system/plugins mas voc pode criar um diretrio chamado plugins dentro do seu application e guard-los l. Code Igniter ir primeiro procur-los em seu diretrio system/application/plugins. Se o diretrio no existir ou se o plugin no for localizado l, o CI procurar ento em seu diretrio global system/plugins.

Carregando um Plugin
Carregar um plugin bem simples. Utilize a seguinte funo: $this->load->plugin(name); Onde name o nome do arquivo do plugin, sem a extenso .php ou plugin. Por exemplo, para carregar o plugin Captcha, cujo nome captcha_pi.php, voc dever fazer isto: $this->load->plugin(captcha); Um plugin pode ser carregando de qualquer lugar dentro das funes de seu controller (ou at mesmo dentro de suas View les, mas esta no boa prtica), desde que voc os carregando antes de us-los. Voc pode carregar seus plugins em seu controller construstor para que quem disponveis automaticamente para qualquer funo, ou voc pode carreg-los dentro da funo que precisa deles. 20

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Note: A funo de carregamento de Plugins acima no retorna um valor, ento no tente atribu-la uma varivel. Ento s a use como mostrado.

Carregando Mltiplos Plugins


Se voc precisa carregar mais de um plugin pode especic-los numa array, como esta: $this->load->plugin( array(plugin1, plugin2, plugin3) );

Carregando Plugins Automaticamente


Se voc descobrir que precisa de um plugin global em sua aplicao, pode dizer ao Code Igniter para carreg-lo automaticamente durante a inicializao do sistema. Isto feito adicionando-se ao arquivo application/cong/autoload.php, o plugin ao array autoload.

Usando um Plugin
Carregado o arquivo Plugin, voc dever cham-lo da mesma forma que chamaria uma funo PHP.

Utilizando as Bibliotecas do Code Igniter


Todas as bibliotecas disponveis esto localizadas em seu diretrio system/libraries. Na maioria dos casos, usar uma dessas classes envolve inicializ-la dentro de umcontroller utilizando a seguinte funo: $this->load->library(classe); Onde classe a classe que voc deseja chamar. Por exemplo, para carregar a classe de validao, voc dever fazer o seguinte: $this->load->library(validation); Uma vez inicializada, voc pode us-la como indicado na pgina correspondente deste Guia.

Criando suas prprias Bibliotecas


Por favor, leia a seo do Guia do Usurio que discute como criar suas prprias bibliotecas.

Criando Bibliotecas
Quando utilizamos o termo Bibliotecas, normalmente estamos nos referindo as clases localizadas no diretrio libraries e descritas na seo Referncias de Classes deste guia. Neste caso, porm, iremos mostrar como voc pode criar suas prprias bibliotecas dentro de seu diretrio application/libraries a m de manter uma separao entre seus recursos locais e os recursos globais do framework. Como bnus, o Code Igniter permite que suas bilbliotecas estender classes nativas se voc simplismente precisar adicionar alguma funcionalidade para uma biblioteca existente. Voc ainda pode sobrescrever as bibliotecas nativas pelas suas em seu diretrio application/libraries. Sumrio: Voc pode criar bibliotecas inteiramente novas. Voc pode estender bibliotecas nativas. Voc pode sobrescrever bibliotecas nativas. O texto abaixo detalha estes trs conceitos. Note: As classes de Banco de Dados e as classes Controller principais no podem ser estendidas ou sobrescritas pelas classes que voc criar. Mas todas as outras podem.

Diagramado por: edson jr - edsonthadeu@hotmail.com

21

Code Igniter Verso 1.5.2 - Guia do Usurio

Armazenamento
Sua biblioteca de classes deve ser colocada em seu diretrio application/libraries, pois este ser o lugar onde o Code Igniter ir procur-las quando foram inicializadas.

Convenes de Nomenclatura
Nomes de arquivo devem ter sua inicial maiscula. Por exemplo: Minhaclasse.php Declaraes de Classes devem ter sua inicial maiscula. Por exemplo: class Minhaclasse Nomes de classes e nomes de arquivos devem ser iguais.

O arquivo de Classe
Classes devem ter este prottipo bsico (Note: Estamos utilizando o nome Algumaclasse puramente como exemplo): <?php if (!dened(BASEPATH)) exit(No direct script access allowed); class Algumaclasse { function some_function() { } } ?>

Utilizando sua classe


De dentro de qualquer funo Controller voc pode inicializar suas classes utilizando o padro: $this->load->library(Algumaclasse); Onde Algumaclasse o nome do arquivo, sem a extenso .php. Voc pode dar submit no nome do arquivo como inicial maiscula ou minscula. O Code Igniter no se importa. Uma vez carregada, voc pode acessar sua classe utilizando a verso em caixa baixa: $this->Algumaclasse->some_function(); // Instncias de Objeto sero sempre em caixa baixa

Passando parmetros ao inicializar sua classe


Em sua funo de carregamento da biblioteca, voc pode passar dados dinamicamente, atravs do segundo parmetro, para seu construtor de classes: $params = array(type => large, color => red); $this->load->library(dinamicamente, $params); Se voc usar este recurso deve obrigatoriamente congurar seu construtor para esperar o dado:

22

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio <?php if (!dened(BASEPATH)) exit(No direct script access allowed); class Algumaclasse { function Algumaclasse($params) { // Faa alguma coisa com o $params } } ?> Voc pode tambm passar parmetros armazenados no arquivo de congurao. Simplesmente crie um arquivo cong com nome idntico ao do nome de arquivo da classe e salve-o em seu diretrioapplication/ cong/. Note que se voc passar dinamicamente parmetros, como descrito acima, a opo do arqivo cong no estar disponvel.

Utilizando os Recursos do Code Igniter dentro de sua Biblioteca


Para acessar os recursos nativos do Code Igniter dentro de sua biblioteca use a funo get_instance(). Esta funo retorna o super objeto Code Igniter. Normalmente dentro de suas funes controller voc poder chamar qualquer funo disponvel no CI usando o construtor $this: $this->load->helper(url); $this->load->library(session); $this->cong->item(base_url); etc. $this, porm, apenas trabalha diretamente dentro de seus controllers, models ou views. Se voc quiser usar as classes do Code Igniter dentro de suas prprias funes personalizadas, pode fazer da sequinte forma: Primeiro, atribua o objeto Code Igniter a uma varivel: $CI =& get_instance(); Uma vez feito isto, voc ir usar esta varivel no lugar de $this: $CI =& get_instance(); $CI->load->helper(url); $CI->load->library(session); $CI->cong->item(base_url); etc.

Diagramado por: edson jr - edsonthadeu@hotmail.com

23

Code Igniter Verso 1.5.2 - Guia do Usurio Note: Voc ir notar que a funo get_instance() acima est sendo passada por referncia: $CI =& get_instance(); Isto muito importante. Atribuir por referncia permite que voc use o objeto Code Igniter original, ao invs de criar uma cpia dele.

Sobrescrevendo Bibliotecas Nativas por suas Prprias Verses


Simplesmente nomear seus aquivos de classe de forma idntica uma biblioteca nativa ir forar o Code Igniter a usar aquele no lugar do nativo. Para usar este recurso voc deve nomear o arquivo e a declarao da classe com o mesmo nome da biblioteca nativa. Por exemplo, para sobrescrever a biblioteca nativa Email crie um arquivo chamado application/libraries/Email.php, e declare sua varivel como: class CI_Email { } Note que a maioria das classes nativas contm o prexo CI_. Para carregar sua biblioteca use a funo padro: $this->load->library(email); Note: At este momento as classes de Banco de Dados no podem ser sobrescritas pelas verses que voc criar.

Estendendo Bibliotecas Nativas


Se tudo o que precisa adicionar uma certa funcionalidade uma biblioteca existente - talvez uma ou duas funes - ento desnecessrio substituir a biblioteca inteira com sua verso. Neste caso, melhor simplismente estender a classe. Estender uma classe praticamente igual a substitu-la, com algumas excees: A declarao da classe deve estender a classe pai. O novo nome de seu arquivo da classe devem conter o prexo MY_ (este item congurvel. Veja abaixo.): Por exemplo, para estender a classe Email nativa, voc precisa criar um arquivo chamado application/ libraries/MY_Email.php, e declarar sua classe com: class MY_Email extends CI_Email { } Note: Se voc precdisar usar um construtor em sua classe, tenha certeza de estender o construtor pai: class MY_Email extends CI_Email { function My_Email() { parent::CI_Email(); } }

24

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Carregando sua Subclasse


Para carregar sua subclasse voc ir usar a sintaze padro normalmente utilizada. NO INCLUA seu prexo. Por exemplo, para carregar o exemplo acima, que estende a classe Email, use: $this->load->library(email); Uma vez carregada, voc ir usar a varivel classe da mesma forma que usaria para a classe que ir estender. No caso da classe email, todas as chamadas iro usar: $this->email->alguma_funo();

Congurando seu prprio Prexo


Para congurar seu prprio prexo de subclasse, abra seu arquivo application/cong/cong.php e procure este item: $cong[subclass_prex] = MY_; Por favor, note que todas as bibliotecas nativas do Code Igniter tm o prexo CI_ ento NO USE isto como seu prex.

Criando Classes do Ncleo do Sistema


Toda vez que o Code Igniter roda, h vrias classes bsicas que so inicializadas automaticamente como parte do nmero do framework. possvel, porm, trocar qualquer uma destas classes bsicas como suas prprias verses ou mesmo estender as verses de ncleo. A maioria dos usurios no ir precisar de nada disto, mas a opo de substituir ou estender classes existem para aqueles que podem querer alterar signicativamente o nmero do Code Igniter. Note: Mexer com uma classe de ncleo do sistema tem muitas implicaes, por isso tenha certeza que voc saiba o que est fazendo antes de tent-lo.

Lista de Classes do Sistema


Abaixo vai a lista dos aruqivos do ncleo do sistema que so chamados toda vez que o Code Igniter roda: Benchmark Input Cong Hooks Router URI Language Loader Controller Output

Substituindo Classes de Ncleo


Para usar suas prprias classes de sistema no lugar das padres, simplesmente coloque suas verso dentro de seu diretrio local application/libraries: application/libraries/algumaclasse.php Diagramado por: edson jr - edsonthadeu@hotmail.com 25

Code Igniter Verso 1.5.2 - Guia do Usurio Se este diretrio no existir, voc pode cri-lo. Qualquer arquivo com o mesmo nome de um item da lista acima ser escolhido no lugar daquele que normalmente seria usado. Por favor, note que sua classe precisa usar o prexo CI. Por exemplo, se seu arquivo chama-se Input.php, o nome da classe ser: class CI_Input { }

Estendendo uma Classe de Ncleo


Se tudo o que precisa adicionar uma certa funcionalidade uma biblioteca existente - talvez uma ou duas funes - ento desnecessrio substituir a biblioteca inteira com sua verso. Neste caso, melhor simplismente estender a classe. Estender uma classe praticamente igual a substitu-la, com algumas excees: A declarao da classe deve estender a classe pai. O novo nome de seu arquivo da classe devem conter o prexo MY_ (este item congurvel. Veja abaixo.): Por exemplo, para estender a classe Input nativa, voc precisa criar um arquivo chamado application/ libraries/MY_Input.php, e declarar sua classe com: class MY_Input extends CI_Input { } Note: Se voc precdisar usar um construtor em sua classe, tenha certeza de estender o construtor pai: class MY_Input extends CI_Input { function My_Input() { parent::CI_Input(); } } Dica: Quaisquer funes em sua classe que tiverem o mesmo nome das funes na classe pai sero usadas no lugar as nativas (isto conhecido como mtodo do sobrecarregamento). Isto permite que voc altere substancialmente o ncleo do Code Igniter.

Congurando seu prprio Prexo


Para congurar seu prprio prexo de subclasse, abra seu arquivo application/cong/cong.php e procure por este item: $cong[subclass_prex] = MY_; Por favor, note que todas as bibliotecas nativas do Code Igniter tm o prexo CI_ ento NO USE isto como seu prexo.

26

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Ganchos - Estendendo o Ncleo do Framework


O recurso de Ganchos do Code Iginiter prov uma maneira de acessar e modicar os processos internos do framework sem hackear os arquivos base. Quando o Code Igniter roda, ele segue um especco processo de execuo, diagramado na pgina do Fluxograma da Aplicao. Haver momentos, no entanto, onde voc queira que alguma ao seja executada em um estgio particular do processo de execuo. Por exemplo, voc pode querer rodar um script logo antes do seu controller ser carregado, o logo depois, ou voc pode querer disparar um de seus prprios scripts em algum outro lugar.

Habilitando os Ganchos
O recurso de ganchos pode ser habilitado/desabilitado globalmente, congurando-se o seguinte item no arquivo application/cong/cong.php: $cong[enable_hooks] = TRUE;

Denindo um Gancho
Ganchos so denidos no arquivo application/cong/hooks.php. Cada um especicado como uma array com esse prottipo: $hook[pre_controller] = array( class => MinhaClasse, function => MinhaClasse, lename => MinhaClasse.php, lepath => MinhaClasse, params => array(cerveja, vinho, salgadinhos) ); Notas: O ndice da array corresponde ao nome do particular ponto de gancho que voc queira usar. No exemplo acima, o ponto de gancho pre_controller. Uma lista de pontos de ganchos aparece abaixo. Os seguintes itens devem ser denidos em sua array de gancho associada: class O nome da classe que voc deseja chamar. Se desejar usar uma funo procedural no lugar de uma classe, deixe este item em branco. function A funo que deseja chamar. lename O nome do arquivo contendo sua classe/funo. lepath O nome do diretrio contendo seu script. Note: Seu script deve estar localizado num diretrio DENTRO do seu diretrio application, portanto o caminho do arquivp relativo a este diretrio. Por exemplo, se seu script est localizado em application/hooks, simplesmente use hooks como seu caminho de arquivo. Se seu script est localizado em application/hooks/utilities use hooks/utilities como seu caminho de arquivo. Sem a barra invertida. params Quaisquer parmetros que deseje passar ao script. Este item opcional

Mltiplas chamadas para o mesmo Gancho


Se voc quer usar o mesmo ponto de gancho em mais de um script, simplemente faa sua array multidimensional, como esta: Diagramado por: edson jr - edsonthadeu@hotmail.com 27

Code Igniter Verso 1.5.2 - Guia do Usurio $hook[pre_controller][] = array( class => MinhaClasse, function => MinhaClasse, lename => MinhaClasse.php, lepath => MinhaClasse, params => array(cerveja, vinho, salgadinhos) ); $hook[pre_controller][] = array( class => MinhaOutraClasse, function => MinhaOutraFuncao, lename => MinhaOutraClasse.php, lepath => ganchos, params => array(vermelho, amarelo, azul) ); Note os colchetes aps cada indce da array: $hook[pre_controller][] Isto permite que voc use o mesmo ponto de gancho com mltiplos scripts. A ordem que voc denir em sua array ser a ordem de execuo.

Pontos de Gancho
Abaixo est uma lista dos pontos disponveis. pre_system Chamado bem cedo durante a execuo do sistema. Apenas as classes benchmark e hooks estaro carregadas nesta hora. Nem roteamento ou outros processos rodaram. pre_controller Chamado imediatamente antes de qualquer um de seus controllers serem chamados. Todas as classes bsicas, roteamento, e checagem de segurana rodaram. post_controller_constructor Chamado imediatamente aps seu controller ser instanciado, mas antes de qualquer chamadas de mtodo rodarem. post_controller Chamado imediatamente aps seu controller ser totalmente executado. display_override Sobrepe a funo _display(), usada para enviar a pgina nalizada ao web browser no nal da execuo do sistema. Isto permite que voc use sua prpria metodologia de display. Note que os dados nalizados esto disponveis ao se chamar $this->output->get_output()

28

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio cache_override Permite que voc chame sua prpria funo no lugar da _display_cache() na classe output. Isto possibilita que voc use seu prprio mecanismo de cache display. scaolding_override Permite uma requisio scaolding para disparar seu prprio script. post_system Chamado aps a pgina renderizada nal ser enviada ao browser, no nal da execuo do sistema aps os dados nalizados serem enviados ao browser.

Recursos de Autocarregamento
O Code Igniter vem com um recurso de Auto-load que permite que bibliotecas, assistentes e plugins sejam inicializados automaticamente toda vez que o sistema rodar. Se voc precisa de certos recursos globais em sua aplicao, deve considerar carreg-los automaticamente para sua convenincia. Os itens abaixo podem ser carregados automaticamente: Classes ncleo encontradas no diretrio libraries Arquivos de Assistentes encontrados no diretrio helpers Plugins encontrados no diretrio plugins Arquivos de congurao personalizados encontrados no diretrio cong Para carregar recuros automaticamente, abra o arquivo application/cong/autoload.php e adicione o item que deseja carregar array autoload. Voc encontrar instrues no arquivo correspondente a cada tipo de item. Note: No inclusa a extenso (.php) quando estiver adicionando os itens array autoload.

Diagramado por: edson jr - edsonthadeu@hotmail.com

29

Code Igniter Verso 1.5.2 - Guia do Usurio

Scaolding
O recurso Scaolding do Code Igniter prov uma maneira rpida e muito conveniente de adicionar, editar ou apagar informaes de seu banco de dados durante o desenvolvimento. Muito Importante: O Scaolding foi planejado para uso apenas durante o desenvolvimento. Ele prov mnima segurana, apenas atravs de uma palavra mgica, portanto qualquer pessoa que tenha acesso ao seu site pode potencialmente editar ou apagar suas informaes. Se voc utilizar este recurso, tenha certeza de desabilit-lo imediatamente ao trmino do desenvolvimento do site. NO DEIXE-O habilitado em um site no ar. E por favor, congure uma palavra secreta antes de us-lo.

Porque voc usaria Scaolding?


Um tpico cenrio: Voc criou uma nova tabela no banco durante o desenvolvimento e gostaria de um jeito rpido de inserir alguma informao nela para testar. Sem o scaolding suas escolhas so ou dar alguns inserts via linha de comando ou usar uma gerenciador como o phpMyAdmin. Com o recurso de scaolding do Code Igniter, voc pode rapidamente adicionar alguma informao usando uma interface no browser. E quando terminar de usar a informao, pode facilmente apag-la.

Congurando uma Palavra Secreta


Antes de habilitar o scaolding, por favor, crie uma palavra secreta. Esta, quando encontrar em sua URL, iniciar a interface scaolding, ento por favor, escolha algo to obscuro que ningum ser capaz de advinhar.. Para congurar uma palavra secreta, abra seu arquivo application/cong/routes.php e procure por este item: $route[scaolding_trigger] = ; Ao encontr-lo, adicione sua distinta palavra. Note: A palavra do scaolding no pode iniciar com um underscore.

Habilitando o Scaolding
Note: As informaes nesta pgina assume que voc j sabe como os controllers funcionam, e que voc tem algum deles funcionando e disponvel. Tambm se assume que voc congurou o Code Igniter para se autoconectar a seu banco de dados. Se no, as informaes aqui no sero muito relevantes, por isso voc encorajado a executar os dois itens acima primeiro. Por ltimo, assume-se que voc o que um construtor de classe. Se no, leia a ltima seo da pgina controllers. Para habilitar o scaolding voc precisa inicializ-lo em seu construtor como mostrado abaixo: <?php class Blog extends Controller { function Blog() { parent::Controller(); $this->load->scaolding(table_name); } } ?> 30 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Onde table_name o nome da sua tabela (tabela, e no da base de dados) com a qual voc deseja trabalhar. Uma vez inicializado o scaolding, voc o acessr com este prottipo de URL: www.seu-site.com/index.php/classe/palavra_secreta/ Por exemplo, utilizando um controller chamado Blog, e abracadabra sendo a palavra secreta, voc acessaria o scaolding desta forma: www.seu-site.com/index.php/blog/abracadabra/ A interface do scaolding dever ser autoexplicativa. Voc pode adicionar, editar ou apagar registros. Nota Final: O recurso de scaolding somente ir funcionar com tabelas que contm uma chave primria, por ser esta a informao necessria para executar as vrias funes do banco de dados.

Roteamento URI
Tipicamente h uma relao um-a-um entre a string URL e seu correspondente controller classe/mtodo. Os segmentos em um URI normalmente seguem este padro: www.seu-site.com/classe/funcao/id/ Em alguns momentos, porm, voc pode querer remapear estar relao para que uma classe/funo diferente possa ser chamada no lugar daquela correspondente URL. Por exemplo, vamos dizer que voc queria suas URLs tenham este prottipo: www.seu-site.com/produto/1/ www.seu-site.com/produto/2/ www.seu-site.com/produto/3/ www.seu-site.com/produto/4/ Normalmente o segundo segmento da URL est reservado para o nome da funo, mas no exemplo acima h um ID de produto no lugar. Para resolver isto, o Code Igniter permite que voc remapeie o handler URI.

Congurando suas prprias regras de roteamento


Regras de roteamento so denidas em seu arquivo application/cong/routes.php. Nele, voc ver uma array chamada $route que permite que voc especique seus prprios critrios. As rotas podem tanto ser especicadas usando caracteres coringa (wildcards) como Expresses Regulares.

Caractere Coringa - Wildcards


Uma tpica rota coringa se parece com esta: $route[produto/:num] = catalogo/produto_busca; Numa rota, a chace da array contm o URI a ser igualado, enquanto que o valor da arry contm o destino para qual ele dever ser encaminhado, a nova rota. No exemplo acima, se a palavra literal produto for encontrada no primeiro segmento da URL, e um nmero for encontrado no segundo segmento, a classe catalogo e o mtodo produto_busca sero utilizados no lugar. Voc pode igualar valores literais ou ento usar dois tipos de coringas: :num :qualquer Diagramado por: edson jr - edsonthadeu@hotmail.com 31

Code Igniter Verso 1.5.2 - Guia do Usurio :num ir igualar um segmento contendo apenas nmeros. :qualquer ir igualar um segmento contendo qualquer caracter. Note: As rotas sero executadas na ordem em que forem denidas. Rotas de nvel mais alto sempre tero precedncia s de nvel mais baixo.

Exemplos
Aqui vo alguns exemplo de roteamento: $route[journals] = blogs; Qualquer URL contendo a palavra jornauls no primeiro segmento ir ser remapeada classe blogs. $route[blog/joe] = blogs/users/34; Qualquer URL contendo o segmento blog/joe ser remapeada classe blogs e ao mtodo users. O ID ser setado como 34. $route[produto/:qualquer] = catalogo/produto_busca; Qualquer URL contendo produto como primeiro segmento, e nada no segundo, ser remapeada classe catalogo e ao mtodo produto_busca. Importante: No use barras invertidas ou normais.

Expresses Regulares
Se voc preferir, pode usar expresses regulares para denir suas regras de rotas. Qualquer expresso regular vlida permitida, assim como back-references. Note: Se voc usar back-references, deve usar a sintaxe com o sinal de dolar ($) no lugar da de dupla barra invertida (//). Uma tpica rota RegEx se parece com algo assim: $route[produtos/([a-z]+)/(\d+)] = $1/id_$2; No exemplo acima, um URI similar a produtos/camisas/123 iria chamar a classe controller camisas e a funo id_123. Voc pode tambm misturar coringas com expresses regulares.

Rotas Reservadas
H duas rotas reservadas: $route[default_controller] = bem-vindo; Esta rota indica qual classe controle dever ser chamada se o URI no contiver dados, o que seria o caso quando algum carrega a URL raiz. No exemplo cima, a classe bem-vindo seria carregada. Voc encorajado a sempre ter uma rota default, do contrrio uma pgina 404 ir aparecer como default. $route[scaolding_trigger] = scaolding; Esta rota permite que voc congure a palavra secreta, que quando presente na URL, dispara o recurso de scaolding. Por favor, leia a pgina Scaolding para detalhes.

32

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Tratamento de Erros
O Code Igniter permite que voc construa relatrios de erros em suas aplicaes utilizando as funes descritas abaixo. Alm disso, ele tem uma classe de log de eros que permite que as mensagens de erro e debug sejam salvas como arquivos texto. Note: Por default, O Code Igniter mostra todos os erros PHP. Voc poderia desejar alterar este comportamente uma vez que seu desenvolvimento estiver completo. Descubrir que a funo error_reporting(), localizada no topo de seu aquivo index.php principal. Desabilitar relatrios de erros NO ir evitar que os arquivos de log sejam escritos se houver algum erro. Ao contrrio da maioria dos sistemas no Code Igniter, as funes de erro so simples interfaces procedurais que esto disponveis globalmente atravs de sua aplicao. Esta abordagem permite que mensagens de erro sejam disparadas sem que voc se preocupe com o escopo da classe/funo. As seguintes funes permitem que voc gere erros:

show_error(messagem)
Esta funo ir mostrar a mensagem de erro disponvel ela utilizando o seguinte template: application/errors/error_general.php

show_404(pagina)
Esta funo ir mostrar a mensagem de erro 404 disponvel ela utilizando o seguinte template: application/errors/error_404.php A funo expera que a string passada ela seja o caminho do arquivo para a pgina que no foi encontrada. Note que o Code Igniter automaticamente mostra mensagem 404 se os controllers no so encontrados.

log_message(nivel, messagem)
Esta funo permite que voc escreva mensagens em seus arquivos de log. Voc deve fornecer um destes 3 nveis no primeiro parmetro, indicando qual o tipo de mensagem (debug, erro, info), e com a prpria mensagem como segundo parmetro. Exemplo: if ($qualquer_variavel == ) { log_message(error, Qualquer varivel no contm um valor.); } else { log_message(debug, Qualquer varivel foi atribuda corretamente); } log_message(info, O propsito de qualquer varivel fornecer algum valor.);

Diagramado por: edson jr - edsonthadeu@hotmail.com

33

Code Igniter Verso 1.5.2 - Guia do Usurio H trs tipos de mensagens: Mensagens de Erro. Estas no so na verdade erros, como os erros de PHP ou de usurio. Mensagens de Debug. So mensagens que ajudam no debugging. Por exemplo, se uma classe foi inicializada, voc pode registrar isto como uma informao de debugging. Mensagens Informacionais. Estas so as demais baixa prioridade, simplismente do informaes sobre algum processo. O Code Igniter no gera nativamente qualquer mensagem informacional mas voc pode quer-las em sua aplicao. Note: Para que o arquivo de log seja escrito, o diretrio logs deve estar com permisso de escrita. E voc deve, ainda, congurar o que deve ser registrado. Voc pode, por exemplo, querer que apenas as mensagens de erro sejam registradas e no os outros dois tipos. Se voc congur-las para zero, o registro ser desabilitado.

Cache de Pgina
O Code Igniter permite que voc cacheie suas pginas para atingir mxima performance. Mesmo o Code Igniter sendo bem rpido, a quantidade de informaes dinmicas que voc mostra em suas pginas ser igualada diretamente aos recursos do seu servidor, memria e ciclos de processamento utilizados, o que afetam a velocidade com que suas pginas so carregadas. Cacheando suas pginas, uma vez que elas so salvas em seu estado totalmente renderizado, voc pode obter uma performance prxima a de uma pgina esttica.

Como o cache funciona?


O cache pode ser habilitado pgina-a-pgina e voc pode congurar a durao do tempo que a pgina deve permanecer cacheada antes de ser atualizada. Quando uma pgina carregada pela primeira vez, o arquivo de cache ser escrito em seu diretrio system/cache. Nos carregamentos subsequentes, o arquivo de cache ser buscado e enviado ao browser que o requisitou. Se ele houver expirado, ser apagado e atualizado antes de ser enviado ao browser. Note: a tag de Benchmark no cacheada, por isso voc ainda poder ver sua velocidade de carregamento mesmo com o cache habilitado.

Habilitando o Cache
Para habilit-lo, coloque a seguinte tag em qualquer uma de suas funes controller: $this->output->cache(n); Onde n o nmero de minutos que voc deseja que a pgina permanea cacheada entre as atualizaes. A tag acima pode ser colocada em qualquer lugar dentro da funo. Ela no afetada pela ordem em que aparece, por iso coloque-o onde for mais lgico para voc. Uma vez que a tag esteja no lugar, suas pginas passaro a ser cacheadas. Note: Antes dos arquivos de cache poderem ser escritos, voc deve congurar as permisses de escrita em seu diretrio system/cache. (666 geralmente apropriado).

Apagando Caches
Se voc no mais deseja cachear um arquivo, pode remover a tag de cache e ele no mais ser atualizado quando expirar. Note: Remover a tag no ir apagar o cache imediatamente. Ele ir expirar normalmente. Se voc precisa remov-lo antes disto, precisar apag-lo manualmente de seu diretrio.

34

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Gerenciando suas Aplicaes


Por default, assume-se que voc pretende utilizar o Code Igniter para gerenciar somente uma aplicao, a qual voc constri em seu diretrio system/application/. possvel, no entando, ter mltiplas aplicaes que compartilham uma nica instalao do CI, ou mesmo renomear ou realocar seu diretrio application.

Renomeando o Diretrio de Aplicao


Se voc desejar renomar seu diretrio applicaiton pode faz-lo, desde que abra seu arquivo index.php e altere seu nome utilizando a varivel $application_folder: $application_folder = nome-da-aplicacao;

Realocando seu Diretorio de Aplicao


possvel mover seu diretrio application para um outro lugar em seu servidor ao invs do diretrio system. Para isto, abra seu arquivo index.php principal e congure um caminho completo do servidor na varivel $application_folder. $application_folder = /caminho/para/sua/aplicacao;

Rodando Mltipas Aplicaes com uma s Instalao do Code Igniter


Se voc quiser compartilhar uma instao do CI comum para gerenciar vrias aplicaes diferentes, simplesmente coloque todos os diretrios que esto localizados dentro de seu diretrio application para dentro de seu prprio subdiretrio. Por exemplo, digamos que voc queira criar duas aplicaes, foo e bar. Voc iria estruturar seu diretrio de aplicao desta forma: system/application/foo/ system/application/foo/cong/ system/application/foo/controllers/ system/application/foo/errors/ system/application/foo/libraries/ system/application/foo/models/ system/application/foo/views/ system/application/bar/ system/application/bar/cong/ system/application/bar/controllers/ system/application/bar/errors/ system/application/bar/libraries/ system/application/bar/models/ system/application/bar/views/ Selecionar uma aplicao particular para uso, requer que voc abra seu arquivo index.php principal e congure a varivel $application_folder. Por exemplo, para selecionar a aplicao foo voc dever fazer isto: $application_folder = application/foo; Note: Cada uma das suas aplicaes precisar ter seu prprio arquivo index.php que chamar a aplicao desejada. O arquivo index.php pode ser renomeado para qualquer coisa que voc quiser. Diagramado por: edson jr - edsonthadeu@hotmail.com 35

Code Igniter Verso 1.5.2 - Guia do Usurio

Sintaxe PHP Alternativa para arquivos de Visualizao (View les)


Se voc no utilizar o template engine do Code Igniter, estar utilizando puro PHP em seus arquivos de visualizao. Para minimizar o cdigo PHP nestes arquivos, e tornar mais fcil identicar os blocos de cdigo, recomendado que voc use a sintaxe alternativa do PHP para estruturas de controle e expresses echo curtas. Se voc no est familiarizado com esta sintaxe, ela permite que voc elimine as chaves no cdigo, e tambm os comandos echo.

Suporte automtico a Short Tag


Nota: Se descobrir que a sintaxe descrita nesta pgina no funciona em seu servidor, deve ser porque as short tags esto desabilitadas em seu arquivo PHP ini. O Code Igniter ir, opcionalmente, reescrever as short tags on-the-y, permitindo que voc use esta sintaxe mesmo que seu servidor no a suporte. Esta funcionalidade pode ser habilitada em seu arquivo cong/cong.php. Por favor note que, usando funncionalidade, erros PHP que possam acontecer em seus arquivos View, no tero sua mensagem e nmero de linha precisamente mostrados. Ao invs disto, todos os erros sero mostrados como erros eval().

Echos Alternativos
Normalmente para dar echo ou print numa vriavel, voc faria assim: <?php echo $variable; ?> Com a sintaxe alternativa, pode fazer desta maneira: <?=$variable?>

Estruturas de Controles Alternativas


Estruturas de controle, como if, for, foreach, e while tambm podem ser escritas de um jeito simplicado. Aqui vai um exemplo usando foreach: <ul> <?php foreach($afazeres as $item): ?> <li><?=$item?></li> <?php endforeach ?> </ul> Note que no h chaves. Ao invs disto, a chave do nal foi trocada por um endforeach. Cada estrutura listada acima tem uma sintaxe de fechamento similar: endif, endfor, endforeach, e endwhile Note tambm que no lugar de usar um ponto e vrgula para cada estrutura (exceta a ltima), h o sinal de dois pontos. Isto importante! Outro exemplo, usando if/elseif/else. Note os dois pontos: <?php if ($username == sally): ?> <h3>Oi Sally</h3> <?php elseif ($username == joe): ?> <h3>Oi Joe</h3> <?php else: ?> <h3>Oi usurio desconhecido</h3> <?php endif; ?> 36 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Segurana
Esta pgina descreve algumas boas prticas acerca da segurana na web e detalha as funcionalidades internas de segurana do Code Igniter.

Segurana URI
O Code Igniter basicamente restritivo acerca dos caracteres aceitos em suas strings URI, de maneira a ajudar a minimizar a possibilidade que dados maliciosos possam ser passados para sua aplicao. URIs podem conter apenas o seguinte:

Texto Alfanumrico
Til: ~ Ponto-nal: . Dois pontos: : Underscore: _ Hfen: -

GET, POST, e COOKIES


Dados via GET esto simplesmente desabilitados pelo Code Igniter uma vez que o sistema utiliza segmentos URI no lugar das tradicionais query strings URI (a menos que voc habilite a opo de us-las no seu arquivo de congurao). A array global GET no setada pela classe Input durante a inicializao do sistema.

Register_globals
Durante a inicializao do sistemas, todas as variveis globais no esto setadas, exceto as encontradas nas arrays $_POST e $_COOKIE. A rotina de congurao (set/unset) efetivamente a mesma register_ globals = o.

magic_quotes_runtime
A diretiva magic_quotes_runtime est desligada durante a inicializao do sistema, por isso voc no precisa remover as barras quando buscar dados do banco.

Boas Prticas
Antes de aceitar qualquer dado em sua aplicao, sejam dados POST vindos de um submit de um formulrio, COOKIES, dados URI, dados XML_RPC, ou mesmo dados vindos da array SERVER, voc encorajados a praticar esta abordagem de 3 passos: Filtrar os dados supondos estarem infectados ou corrompidos. Validar os dados para assegurar que esto em conformidade aos corretos tipo, extenso, tamanho etc. (algumas vezes esta passo pode substituir o primeiro) D um Escape nos dados antes de submet-los ao banco. O Code Igniter prov as seguintes funes para ajud-lo neste processo:

Filtragem XSS
O Code Igniter vem com um ltro Cross Site Scripting. Este ltro procura por tcnicas comumente usadas para embutir cdigo Javascript malicioso em seus dados, ou outros tipos de cdigos que tentam sequestrar cookies ou causar outros danos. O ltro XSS descrito aqui. Diagramado por: edson jr - edsonthadeu@hotmail.com 37

Code Igniter Verso 1.5.2 - Guia do Usurio

Valide os dados
O Code Igniter tem uma Classe de Validao que ajuda voc a validar, ltrar e preparar seus dados.

D um Escape nos dados antes de submet-los ao banco


Nunca insira informao em seu banco sem antes convert-la via escape. Por favor, veja a seo que discorre sobre queries para mais informaes.

38

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Referncia de Classes

Diagramado por: edson jr - edsonthadeu@hotmail.com

39

Code Igniter Verso 1.5.2 - Guia do Usurio

Classe Benchmarking
O Code Igniter tem uma classe de Benchmarking que est sempre ativa, permitindo vericar a diferena de tempo entre dois pontos marcados para serem calculados. Nota: Esta classe inicializada automaticamente pelo sistema, ento no necessrio fazer isto manualmente. O benchmark sempre iniciado no momento em que o framework carregado, e terminado pela classe de sada (output), assim que enviada a visualizao para o navegador, permitindo uma eciente vericao e exibio de tempo de execuo de todo o sistema. Contedo Usando a classe de Benchmark Marcas de Benchmark na classe de Prole Exibindo o Tempo Total de Execuo Exibindo o Consumo de Memria Usando a classe de Benchmark A classe de Benchmark pode ser utilizada com seus controllers, views, ou seus Models. O processo de uso : Marcar um ponto inicial Marcar um ponto nal Chamar a funo de tempo decorrido (elapsed_time) para visualizar os resultados Segue aqui um exemplo real de uso: $this->benchmark->mark(code_start); // Algum codigo e executado aqui $this->benchmark->mark(code_end); echo $this->benchmark->elapsed_time(code_start, code_end); Nota: As palavras code_start e code_end podem ser quaisquer palavras. Eles so apenas palavras para referenciar as duas marcas. Voce pode usar quaisquer palavras, opu ainda usar multiplas marcas. Veja este exemplo: $this->benchmark->mark(cao); // Algum codigo aqui $this->benchmark->mark(gato); // Mais codigo aqui $this->benchmark->mark(rato); echo $this->benchmark->elapsed_time(cao, gato); echo $this->benchmark->elapsed_time(gato, rato); echo $this->benchmark->elapsed_time(cao, rato);

40

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Marcas de Benchmark na classe de Prole


Se voc quer que os dados do benchmark estejam disponveis na classe Proler, suas marcas devem ser deinidas em par, e cada marca precisa ter o suxo _start e _end. Cada par de marcas precisam ser nomeadas de forma identica. Por exemplo: $this->benchmark->mark(marca_start); // Algum codigo aqui... $this->benchmark->mark(marca_end); $this->benchmark->mark(outra_marca_start); // Mais codigo aqui... $this->benchmark->mark(outra_marca_end); Para mais informaes leia a pgina de Proler.

Exibindo o Tempo Total de Execuo


Se voc pretende exibir o tempo total do moment em que o Code Igniter iniciou at o momento em que a sada enviada ao navegador, coloque este cdigo no template da sua view: <?=$this->benchmark->elapsed_time();?> Voc pode perceber que esta a mesma funo utilizada nos exemplos acima para calcular o tempo entre duas marcas, exceto pelo fato de que voc no passou nenhum parametro. Quando os parametros so enviados, o Code Igniter no para de calcular at o momento que a sada enviada ao navegador. No importa onde voc chame a funo, o tempo continuar a rodar at o nal. Uma maneira alternativa de exibir o tempo decorrido nos seus arquivos de visualizao usando esta pseudo-varivel, caso voc preferir no usar o PHP: {elapsed_time} Nota: Se voc quiser vericar qualquer coisa em seus controllers, voc precisar denir suas prprias marcas de incio e m.

Exibindo o Consumo de Memria


Se sua instalao do PHP foi congurada com o parametro --enable-memory-limit, voc pode exibir a quantidade de memria consumida pelo sistema usando o seguinte cdigo em seus arquivos de visualizao: <?=$this->benchmark->memory_usage();?> Nota: Esta funo s pode ser usada em arquivos de visualizao. O consumo ser referente ao consumo total de memria usado por toda a aplicao. Uma maneira alternativa de exibir o tempo decorrido nos seus arquivos de visualizao usando esta pseudo-varivel, caso voc preferir no usar o PHP: {memory_usage}

Diagramado por: edson jr - edsonthadeu@hotmail.com

41

Code Igniter Verso 1.5.2 - Guia do Usurio

Classe Calendar
A classe Calendrio permite a criao dinmica de calendrios. Os calendrios podem ser formatados atravs do uso de um template, lhe dando liberdade total de cada aspecto do design do mesmo. Alm disso, voc pode passar dados para as clulas do seu calendrio.

Inicializando a Classe
Assim como a maioria das classes no Code Igniter, a classe de Calendrio inicializada em seu controller usando o mtodo $this->load->library(): $this->load->library(calendar); Uma vez carregado, o objeto Calendar estar disponvel utilizando: $this->calendar

Exibindo um Calendrio
Segue um simples exemplo de como exibir um calendrio: $this->load->library(calendar); echo $this->calendar->generate(); O cdigo acima ir gerar o calendrio para o ms e ano corrente, baseado nas conguraes do seu servidor. Para exibir um calendrio de uma data especca (ano e ms), voc pode passar esta informao atravs do mtodo de gerao do calendrio: $this->load->library(calendar); echo $this->calendar->generate(2006, 6); O cdigo acima ir gerar o calendrio exibindo o ms de Junho de 2006. O primeiro parmetro especica o ano, o segundo especica o ms.

Passando dados para as Clulas do Calendrio


Para adicionar informaes s clulas do calendrio, necessrio criar um array associativo onde as chaves correspondem aos dias que voc quer popular e os valores do array contm as informaes. O array passado como terceiro parametro do mtodo de gerao do calendrio. Veja este exemplo: $this->load->library(calendar); $data = array( 3 => http://seu-site.com/news/article/2006/03/, 7 => http://seu-site.com/news/article/2006/07/, 13 => http://seu-site.com/news/article/2006/13/, 26 => http://seu-site.com/news/article/2006/26/ ); echo $this->calendar->generate(2006, 6, $data);

42

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio No exemplo acima, os dias 3, 7, 13 e 26 recebero links apontando para as URLs passadas. Nota: Por padro assume-se que seu array conter links. Na seo que explica os templates do calendrio logo abaixo, voc ver como customizar como as informaes passadas para suas clulas sero tratadas, assim voc poder passar diferentes tipos de informaes.

Denindo Preferncias de Exibio


Existem sete preferncias que voc pode usar para controlar diversos aspectos do calendrio. Preferncias so denidas passando um array de preferncias como segundo parmetro do mtodo de carregamento. Veja o exemplo: $prefs = array ( start_day => saturday, month_type => long, day_type => short ); $this->load->library(calendar, $prefs); echo $this->calendar->generate(); O cdigo acima iniciaria o calendrio no sbado, exibe o nome do ms completo no cabealho e os nomes reduzidos dos dias. Mais informaes sobre preferncias mais abaixo. Preferncias template local_time start_day Padro None time() sunday Opes None None Descrio Uma string contendo o template do seu calendrio. Veja a seo de templates abaixo. Unix timestamp correspondente ao horrio atual.

month_type

long

day_type

abr

show_next_prev next_prev_url

FALSE None

Qualquer dia da semana Dene o dia da semana que o calendrio (sunday, monday, deve iniciar. tuesday, etc.) Determina qual verso do nome do ms long, short deve ser exibido no cabealho. long = January, short = Jan. Determina qual verso dos nomes dos dias da semana usar no cabealho das long, short, abr colunas. long = Sunday, short = Sun, abr = Su. Determina onde exibis os links TRUE/FALSE (booleano) permitindo navegar nos meses. Veja mais informaes sobre isso abaixo. Dene o caminho base usado em seus A URL links de prximo/anterior do calendrio.

Diagramado por: edson jr - edsonthadeu@hotmail.com

43

Code Igniter Verso 1.5.2 - Guia do Usurio

Exibindo Links de Ms Anterior/Prximo


Para permitir que seu calendrio possa navegar entre os dias e meses atravs de links de prximo/anterior, voc deve congurar o calendrio de forma parecida ao exemplo abaixo: $this->load->library(calendar); $prefs = array ( show_next_prev => TRUE, next_prev_url => http://www.seu-site.com/index.php/calendar/show/ ); echo $this->calendar->generate($this->uri->segment(3), $this->uri->segment(4), $prefs); Algumas consideraes sobre o exemplo acima: Voc precisa denir show_next_prev como TRUE. Voc precisa colocar a URL para o controller que contm o calendrio na opo next_prev_url. Voc precisa passar o ano e ms para o mtodo de gerao do calendrio atravs dos segmentos de URI onde eles aparecem (Nota: A classe Calendrio adiciona o ano/ms automaticamente URL base que voc passar.).

Criando Templates de Calendrios


Criando templates de calendrios voc ter controle total sobre o design do mesmo. Cada componente do seu calendrio ser denido em pares de pseudo-variveis, conforme explicado abaixo: $prefs[template] = {table_open}<table border=0 cellpadding=0 cellspacing=0>{/table_open} {heading_row_start}<tr>{/heading_row_start} {heading_previous_cell}<th><a href={previous_url}>&lt;&lt;</a></th>{/heading_previous_ cell} {heading_title_cell}<th colspan={colspan}>{heading}</th>{/heading_title_cell} {heading_next_cell}<th><a href={next_url}>&gt;&gt;</a></th>{/heading_next_cell} {heading_row_end}</tr>{/heading_row_end} {week_row_start}<tr>{/week_row_start} {week_day_cell}<td>{week_day}</td>{/week_day_cell} {week_row_end}</tr>{/week_row_end} {cal_row_start}<tr>{/cal_row_start} {cal_cell_start}<td>{/cal_cell_start} {cal_cell_content}<a href={content}>{day}</a>{/cal_cell_content} {cal_cell_content_today}<div class=highlight><a href={content}>{day}</a></div>{/cal_cell_ 44 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio content_today} {cal_cell_no_content}{day}{/cal_cell_no_content} {cal_cell_no_content_today}<div class=highlight>{day}</div>{/cal_cell_no_content_today} {cal_cell_blank}&nbsp;{/cal_cell_blank} {cal_cell_end}</td>{/cal_cell_end} {cal_row_end}</tr>{/cal_row_end} {table_close}</table>{/table_close} ; $this->load->library(calendar, $prefs); echo $this->calendar->generate();

Classe Cong
A classe Cong prov meios de recuperar suas preferncias de congurao. Estas preferncias podem vir do arquivo de congurao padro (application/cong/cong.php) ou de seus prprios arquivos de congurao. Nota: Esta class inicializada automaticamente pelo sistema e no necessrio carreg-la manualmente.

Anatomia de um Arquivo de Congurao


Por padro, o Code Igniter tem um arquivo de congurao primrio, localizado em application/cong/ cong.php. Se voc abrir este arquivo usando seu editor de texto, voc ver que os itens de congurao so armazenados em um array chamado $cong. Voc pode adicionar seus prprios itens de congurao a este arquivo, ou, se preferir manter suas conguraes separadas, simplesmente crie seu prprio arquivo e salve o mesmo no diretrio cong. Nota: Se voc criar seus prprios arquivos de congurao, use o mesmo formato do primrio, armazenando seus itens em um array chamado $cong. O Code Igniter ir gerenciar estes arquivos de forma inteligente para que no hajam conitos at mesmo se o array possuir o mesmo nome (desde que um indice deste array no tenha o mesmo nome que outro).

Carregando um Arquivo de Congurao


Nota: O Code Igniter carrega automaticamente o arquivo primrio (application/cong/cong.php), ento voc s precisa carregar seus prprios arquivos de congurao. Existem duas maneiras de se carregar um arquivo de congurao: Carregamento Manual Para carregar um de seus prprios arquivos de congurao voc usar a seguinte funo em seus controllers: $this->cong->load(nomedoarquivo); Onde nomedoarquivo o nome do seu arquivo de congurao, sem a extenso .php. Se voc precisa carregar vrios arquivos de congurao, eles sero agregados em um nico array de congurao. Coliso de nomes podem ocorrer, porm, se voc tiver nomeado ndices do array identicos em diferentes arquivos. Para evitar colises, voc pode passar o segundo parametro como TRUE e cada arquivo de congurao ser armazenado em um ndice de array correspondente ao nome do arquivo de 45 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio congurao. Veja o exemplo: // Armazenado em um array com esta estrutura: $this->cong[blog_settings] = $cong $this->cong->load(blog_settings, TRUE); Veja a seo chamada Recuperando Itens de Congurao abaixo para aprender como recuperar itens de congurao desta forma. O terceiro parametro permite que voc suprima erros caso o arquivo de congurao no exista: $this->cong->load(blog_settings, FALSE, TRUE);

Carregamento Automtico (Auto-loading)


Se voc precisar de uma congurao global em particular, voc pode congurar o sistema para carreg-la automaticamente. Para isso, abra o arquivo autoload.php, localizado em application/cong/autoload.php, e adicione seu arquivo de conguracao como indicado no arquivo.

Recuperando Itens de Congurao


Para recuperar um item do seu arquivo de congurao, utilize o seguinte mtodo: $this->cong->item(nome do item); Onde nome do item o ndice do array $cong que voc deseja recuperar. Por exemplo, para recupera a linguagem escolhida, voc usaria:: $lang = $this->cong->item(language); O mtodo retorna FALSE (booleano) se o item que voc passou no existir. Se voc est usando o segundo parametro do mtodo $this->cong->load() para denir seus itens de congurao em um ndice especco, voc pode recuperar esta informao especicando o nome do ndice como segundo parametro do mtodo $this->cong->item(). Por exemplo: // Carrega o arquivo de conguracao chamado blog_settings.php e dene para o ndice chamado blog_settings $this->cong->load(blog_settings, TRUE); // Recupera o item de congurao chamado site_name do array blog_settings $site_name = $this->cong->item(site_name, blog_settings); // Modo alternativo de especicar o mesmo item: $blog_cong = $this->cong->item(blog_settings); $site_name = $blog_cong[site_name];

Denindo um Item de Congurao


Se voc quiser denir um item de congurao dinamicamente, ou alterar um j existente, pode usar: $this->cong->set_item(nome_item, valor_item); Onde name_item o ndice do array $cong que voc quer alterar, e value_item o seu valor.

Funes Assistentes (Helper)


A classe Cong tem os seguintes mtodos assistentes::

$this->cong->site_url();
Esta funo recupera a URL para o seu site, com o valor que voc tiver especicado no arquivo de 46 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio congurao.

$this->cong->system_url();
Esta funo retorna a URL para o seu diretrio de sistema (system folder).

Classe Email
A classe de Email do Code Igniter suporta as seguintes funcionalidades: Protocolos Multiplos: Mail, Sendmail e SMTP Recipientes Multiplos CC e BCCs Emails em HTML ou texto puro (plain text) Arquivos anexos Quebra de palavras Prioridades BCC Batch Mode, permitindo que grandes lotes de email sejam quebradas em pequenos lotes BCC. Ferramentas de Debug de Email

Enviando Emails
Enviar email no apenas simples, mas voc pode congurar isso em tempo de execuo ou denir suas preferncias em arquivos de congurao. Veja uma demonstrao bsica de como enviar um email. Nota: Este exemplo assume que voc est enviando o email de um de seus controllers. $this->load->library(email); $this->email->from(voce@seu-site.com, Seu Nome); $this->email->to(alguem@algum-site.com); $this->email->cc(outro@outro-site.com); $this->email->bcc(fulano@qualquer-site.com); $this->email->subject(Teste de Email); $this->email->message(Testando a classe de email.); $this->email->send(); echo $this->email->print_debugger();

Denindo as Preferencias de Email


Existem 17 preferncias disponveis para denir como suas mensagens sero enviadas. Voc pode deni-las, tanto manualmente como descrito aqui, quanto automaticamente usando seu arquivo de congurao, como descrito abaixo: Estas preferncias so denidas passando um array para a funo de inicializao do email. Segue um exemplo de como voc poderia denir algumas preferncias: Diagramado por: edson jr - edsonthadeu@hotmail.com 47

Code Igniter Verso 1.5.2 - Guia do Usurio $cong[protocol] = sendmail; $cong[mailpath] = /usr/sbin/sendmail; $cong[charset] = iso-8859-1; $cong[wordwrap] = TRUE; $this->email->initialize($cong); Nota: A maior parte das preferncias possuem valores padro que sero utilizados caso voc no os dena.

Denindo as Preferncias de Email em Arquivo de Congurao


Se voc preferir no denir as preferncias usando o mtodo acima, voc pode coloc-las em um arquivo de congurao. Crie um novo arquivo chamado email.php, adicione o array $cong neste arquivo. Ento, salve no diretrio cong/email.php da sua aplicao e ele ser carregado automaticamente. Voc NO precisar usar o mtodo $this->email->initialize() se salvar suas preferncias no Arquivo de Congurao.

Preferencias de Email
Abaixo segue a lista de todas as preferncias que podem ser denidas para o envio de um email. Preferncias useragent protocol mailpath smtp_host smtp_user smtp_pass smtp_port smtp_timeout wordwrap wrapchars Padro Code Igniter mail /usr/sbin/ sendmail No Default No Default No Default 25 5 TRUE 76 Opes None Descrio O user agent.

mail, sendmail, ou smtp Protocolo de envio de email. None None None None None None TRUE ou FALSE Caminho do Sendmail no servidor. Endereo do Servidor SMTP. Usurio SMTP. Senha SMTP. Porta SMTP. Timeout SMTP (em segundos). Liga a quebra de palavra. Nmero de caracteres para quebrar. Tipo de email. Se enviar em HTML, necessrio enviar uma pgina web completa. Certique-se de que no utilizou links ou imagens com caminho relativo, pois se no elas no vo funcionar. Tipo de codicao de caracter (utf-8, iso8859-1, etc.). Se deve validar o endereo de email. Prioridade do email. 1 = maior. 5 = menor. 3 = normal. Caracter de quebra de linha. (Use \r\n para compatibilizar com o RFC 822).

mailtype

text

text or html

charset validate priority newline bcc_batch mode bcc_batch_size 48

utf-8 FALSE 3 \n FALSE 200 TRUE ou FALSE 1, 2, 3, 4, 5 \r\n or \n

TRUE or FALSE (boolean) Liga BCC Batch Mode (modo de lote). None Nmero de emails em cada lote BCC. Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Referncias de Funes de Email $this->email->from()


Dene o endereo de email e o nome da pessoa que envia o email: $this->email->from(voce@seu-site.com, Seu Nome);

$this->email->reply_to()
Dene o endereo de resposta (reply-to). Se ocultar esta informao, a informao do from ser utilizada. Exemplo: $this->email->reply_to(voce@seu-site.com, Seu Nome);

$this->email->to()
Dene o(s) endereo(s) de e-mail de destino. Pode ser um nico email, uma lista separada por vrgulas ou um array: $this->email->to(alguem@site.com); $this->email->to(alguem@site.com, outro@outro-site.com, fulano@site.com); $list = array(alguem@site.com, outro@outro-site.com, fulano@site.com); $this->email->to($list);

$this->email->cc()
Dene o(s) endereo(s) de email para CC. Funciona como o to, podendo ser um nico email, lista separada por vrgulas ou um array.

$this->email->bcc()
Dene o(s) endereo(s) de email para BCC. Funciona como o to, podendo ser um nico email, lista separada por vrgulas ou um array.

$this->email->subject()
Dene o Assunto do email: $this->email->subject(Este o assunto);

$this->email->message()
Dene a mensagem do email: $this->email->message(Esta a mensagem);

$this->email->set_alt_message()
Dene a mensagem alternativa do email: $this->email->set_alt_message(Esta a mensagem alternativa); Este uma mensagem opcional que pode ser usada se voc enviar email em HTML. Ela permite voc especicar uma mensagem alternativa sem formatao HTML, que adicionada ao cabealho do email para pessoas que no aceitam emails HTML. Se voc no denir esta mensagem, o Code Igniter vai extrala do seu email removendo as tags HTML do mesmo.

Diagramado por: edson jr - edsonthadeu@hotmail.com

49

Code Igniter Verso 1.5.2 - Guia do Usurio $this->email->clear() Reseta todas as variaveis de email. Esta funo deve ser usada se voc precisar rodar a funo de envio de email em um loop, resetando as informaes entre os ciclos. foreach ($list as $name => $address) { $this->email->clear(); $this->email->to($address); $this->email->from(voce@seu-site.com); $this->email->subject(Seu nome .$name); $this->email->message(Ola .$name. Aqui esta a informacao que voce precisa.); $this->email->send(); } Se voc passar TRUE como parametro, todos os anexos tambm sero resetados: $this->email->clear(TRUE);

$this->email->send()
Funo de envio de email. Retorna o booleano TRUE ou FALSE baseado no sucesso ou falha, permitindo if ( ! $this->email->send()) { // Gerar Erro }

$this->email->attach()
Permite que voc envie um anexo. Passe o caminho e nome do arquivo como primeiro parametro. Nota: Use o caminho do arquivo, e no sua URL. Para anexar vrios arquivos, use a funo vrias vezes. Por exemplo: $this->email->attach(/path/to/photo1.jpg); $this->email->attach(/path/to/photo2.jpg); $this->email->attach(/path/to/photo3.jpg); $this->email->send();

$this->email->print_debugger()
Retorna uma string contendo qualquer mensagem de servidor, cabealho de email e a prpria mensagem. til para debug.

Evitando Quebra de Palavra


Se voc deixou a quebra de palavras ligado (o que recomendado para seguir o RFC 822) e voc tem um link no corpo do email, ele pode ser quebrado tambm, fazendo com que o mesmo no seja clicvel pela 50 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio pessoa que recebeu o email. O Code Igniter permite que voc evite a quebra de palavra em determinadas partes da sua mensagem, dessa forma: The text of your email that gets wrapped normally. {unwrap}http://www.some-site.com/a_long_link_that_should_not_be_wrapped.html{/unwrap} More text that will be wrapped normally. Coloque o trecho que voc no quer quebrar entre: {unwrap} {/unwrap}

Classe Criptograa
A Classe Criptograa prov a criptograa de dados em duas vias. Ela usa um esquema que pr-compila a mensagem usando um processo de codicao binria XOR via um algoritmo de disperso randmico (randomly hashed bitwise XOR encoding scheme), que ento criptografado usando a biblioteca Mcrypt. Se a Mcrypt no estiver disponvel no seu servidor, a mensagem codicada ainda manter um razovel grau de segurana para sesses criptografadas ou outros propsitos leves como esse. Se a Mcrypt estiver disponvel, voc ter, efetivamente, uma mensagem string bicriptografada, que dever prover um alto grau de segurana.

Congurando sua Chave


Uma chave um pedao de informao que controle o processo de criptograa e permite que uma string criptografada seja decodicada. De fato, a chave que voc escolher fornecer as nicas maneiras de decodicar os dados que foram criptografados com essa chave, por isso no apenas voc deve escolh-la com cuidado, como tambm nunca a alterar, se sua inteno for us-la para dados persistentes. Nem preciso dizer que voc deve guardar sua chave com cuidado. Se algum obtier acesso a ela, seus dados podero ser facilmente decodicados. Se seu servidor no estiver sob seu total cntrole, impossvel garantir a segurana da chave, por isso, pense duas vezes antes de us-la para qualquer coisa que requeira alta segurana, como nmeros de carto de crdito. Para obter o mximo do algoritmo de criptograa, sua chave dever ter o comprimento 32 caracteres (128 bits). A chave dever ser a mais doida que voc conseguir bolar, com nmeros e letras maisculas e minsculas. Sua chave no deve ser uma simples string. Para ser criptogracamente segura, ela precisa ser a mais randmica possvel. Sua chave pode ser armazenada em seu aquivo application/cong/cong.php, ou voc pode projetar seu prprio sistema de armazenamento, e passar dinamicamente a chave quando estiver codicando/ decodicando. Para salvar sua chave para seu arquivo application/cong/cong.php, abr-o e congure: $cong[encryption_key] = SUA CHAVE;

Comprimento da Menssagem
importante saber que as mensagens codicadas, geradas pela funo de criptograa, so aproximadamente 2.6 vezes mais longas que a mensagem original. Por exemplo, se voc criptogravar a string meu dado super secreto, que tem 21 caracteres, terminar com uma string codicada que ter mais ou menos 55 caracteres (dizemos mais ou menos pois o comprimento da string codicada incrementada em clusters de 64 bits, e por isso no exatamente linear). Lembre-se desta informao quando selecionar seu mecanismo de armazenamento. Cookies, por exemplo, podem apenas conter 4K de informao. Diagramado por: edson jr - edsonthadeu@hotmail.com 51

Code Igniter Verso 1.5.2 - Guia do Usurio

Inicializando a Classe
Como a maioria das classes no Code Igniter, a classe de Criptograa inicializada em seu controller usando a funo $this->load->library: $this->load->library(encrypt); Uma vez carregada, o objeto estar disponvel usando: $this->encrypt

$this->encrypt->encode()
Gerar a criptograa do dado e retorn-o como uma string. Exemplo: $msg = Minha mensagem secreta; $encrypted_string = $this->encrypt->encode($msg); Voc pode, opcionalmente, passar sua chave de criptograa via o segundo parmetro se no desejar usar a que est em seu arquivo de congurao;: $msg = Minha mensagem secreta; $key = chave-super-secreta; $encrypted_string = $this->encrypt->encode($msg, $key);

$this->encrypt->decode()
Descriptografa a string codicada. Exemplo: $encrypted_string = APANtByIGI1BpVXZTJgcsAG8GZl8pdwwa84; $textopuro_string = $this->encrypt->decode($encrypted_string);

$this->encrypt->set_cipher();
Permite que voc congure uma cifra Mcrypt. Por default, usado MCRYPT_RIJNDAEL_256. Exemplo: $this->encrypt->set_cipher(MCRYPT_BLOWFISH); Por favor, visite o php.net para uma lista das cifras disponveis. Se voc desejar testar manualmente se seu servidor suporta a Mcrypt, voc pode usar: echo ( ! function_exists(mcrypt_encrypt)) ? Nao : Sim;

$this->encrypt->set_mode();
Permite congurar um mod Mcrypt. Por default, usado MCRYPT_MODE_ECB. Exemplo: $this->encrypt->set_mode(MCRYPT_MODE_CFB); Por favor, visite o php.net para uma lista dos modos disponveis.

$this->encrypt->sha1();
a funo de codicao SHA1. Fornea uma string e ela ir retornar um hash de 160 bit de via nica. Nota: SHA1, assim como o MD5, no decodicvel. Exemplo: $hash = $this->encrypt->sha1(Alguma string); 52 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Vrias instalaes PHP tm suporte SHA1 por default. Por isso, se tudo que voc precisa fazer codicar o hash, mais simples usar a funo nativa: $hash = sha1(Alguma string); Se seu servidor no suportar o SHA1, pode usar a funo fornecida aqui.

Classe Upload de Arquivo


Esta classe permite que o upload de arquivos. Voc pode congurar vrias preferncias, restringindo o tipo e tamanho dos arquivos.

O Processo
Subir um arquivo envolve o processo geral: Um formulrio de upload exibido, permitndo ao usurio selecionar um arquivo para enviar. Quando o form submetido, o arquivo subido ao destino que voc especicar. Durante o trajeto, o arquivo validado para ter certeza que permitido, baseado em suas preferncias. Uma vez enviado o arquivo, ao usurio ser exibida uma mensagem de sucesso. Para demonstrar este processo, abaixo vai um breve tutorial. Logo aps, voc ir encontrar informaes de referncia.

Criando o Formulrio de Upload


Usando um editor de texto, crie um formulrio chamado upload_form.php. Nele, coloque este cdigo e o salve na pasta applications/views/: <html>

<!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/le_uploading.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:58 GMT -->

<head> <title>Formulrio de Upload</title> </head> <body> <?=$error;?> <?=form_open_multipart(upload/do_upload); ?> <input type=le name=userle size=20 /> <br /><br /> <input type=submit value=upload /> </form> </body>
<!--Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/le_uploading.html HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:58 GMT --> by

</html> Diagramado por: edson jr - edsonthadeu@hotmail.com 53

Code Igniter Verso 1.5.2 - Guia do Usurio Voc ir notar que estamos usando um assistente de formulrio para criar a tag form de abertura. Uploads de arquivo requerem um formulrio multiparte, por isso o assistente criar a sintaxe especca para voc. Note tambm que temos uma varivel $error. Com ela podemos mostrar mensagens de erro no caso do usurio fazer alguma coisa errada.

A Pgina de Sucesso
Usando um editor de texto, crie um formulrio chamado upload_success.php. Nele, coloque este cdigo e o salve na pasta applications/views/: <html>
<!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/le_uploading.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:58 GMT -->

<head> <title>Formulrio de Upload</title> </head> <body> <h3>Seu arquivo foi enviado com sucesso!</h3> <ul> <?php foreach($upload_data as $item => $value):?> <li><?=$item;?>: <?=$value;?></li> <?php endforeach; ?> </ul> <p><?=anchor(upload, Deseja enviar outro?); ?></p> </body>
<!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/le_uploading.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:58 GMT -->

</html>

O Controller
Usando um editor de texto, crie um controller chamado upload.php. Nele, coloque este cdigo e o salve em sua pasta applications/controllers/: <?php class Upload extends Controller { function Upload() { parent::Controller(); $this->load->helper(array(form, url)); 54 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio } function index() { $this->load->view(upload_form, array(error => )); } function do_upload() { $cong[upload_path] = ./uploads/; $cong[allowed_types] = gif|jpg|png; $cong[max_size] = 100; $cong[max_width] = 1024; $cong[max_height] = 768; $this->load->library(upload, $cong); if ( ! $this->upload->do_upload()) { $error = array(error => $this->upload->display_errors()); $this->load->view(upload_form, $error); } else { $data = array(upload_data => $this->upload->data()); $this->load->view(upload_success, $data); } } } ?>

A Pasta Upload
Voc ir precisar de uma pasta de destino para os arquivos enviados. Crie uma pasta na raiz do diretrio de instalao do Code Igniter chamada uploads e congure sua permisso de arquivo para 777. Experimente! Para testar seu formulrio, visite seu site usando uma URL semelhante a esta: www.seu-site.com/index.php/upload/ Diagramado por: edson jr - edsonthadeu@hotmail.com 55

Code Igniter Verso 1.5.2 - Guia do Usurio Voc dever ver o formulrio. Experimente enviar uma imagem (no formato jpg, gif, ou png). Se o caminho em seu controller estiver correto, dever funcionar.

Guia de Referncia
Inicializando a Classe Upload
Como a maioria das classes no Code Igniter, a classe Upload inicializada em seu controller usando a funo $this->load->library: $this->load->library(upload); Uma vez carregada, o objeto estar disponvel usando: $this->upload

Congurando as Preferncias
De forma similar s outras bibliotecas, voc controlar o que permitido enviar atravs de suas preferncias. No controller que voc construiu acima, voc deve congurar o seguinte: $cong[upload_path] = ./uploads/; $cong[allowed_types] = gif|jpg|png; $cong[max_size] = 100; $cong[max_width] = 1024; $cong[max_height] = 768; $this->load->library(upload, $cong); // Alternativamente voc pode congurar as preferncias chamando a funo initialize. til se voc auto-carregar a classe: $this->upload->initialize($cong); As preferncias acima devem ser quase auto-explicativas. Abaixo vai uma tabela descrevendo todas as preferncias disponveis.

Preferncias
As seguintes preferncias esto disponveis. O valor default indica o que ser caso voc no especique nada ali. Preferncias Valor % nbsp; Default Nenhum Opes Descrio

upload_path

allowed_types

Nenhum

overwrite 56

FALSE

O caminho para o diretrio onde o arquivo deve ser colocaod. O diretrio deve ter permisso de escrita e o caminho pode ser absoluto ou relativo. Os mime types correspondentes aos tipos de arquivo que voc permite serem enviados. Geralente a exteso do Nenhum arquivo pode ser usada como mime type. Separe-os com uma barra vertical. Se TRUE e se um arquivo com mesmo nome j existir, ele True/False ser sobrescrito. Se FALSE, um nmero ser adicionado ao nome do arquivo para diferenci-lo. Nenhum Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio O tamanho mximo (em kilobytes) que um arquivo pode ter. Coloque zero para ilimitado. Nota: A maioria das Nenhum instalaes PHP tm seu prprio limite, como especicado em seu arquivo php.ini. Geralmente so 2MB (ou 2048 KB). A largura mxima (em pixels) do arquivo. Coloque zero Nenhum para ilimitada. A altura mxima (em pixels) do arquivo. Coloque zero para Nenhum ilimitada. Se TRUE, o nome do arquivo ser convertido em uma string randomicamente criptografada. Pode ser til True/False se voc quiser que arquivo seja salvo com um nome initeligvel para a pessoa que o est enviando. Se TRUE, qualquer espao no nome do arquivo ser True/False convertido em underscores. Esta recomendada.

max_size

max_width max_height

0 0

encrypt_name

FALSE

remove_spaces

TRUE

Congurando preferncias no arquivo cong


Caso preferir no congurar as preferncias do jeito mostrado acima, pode coloc-las num arquivo de congurao. Simplesmente crie um novo arquivo chamado upload.php e adicione a array $cong. Salve ento o arquivo em: cong/upload.php e ele ser usado automaticamente. Voc NO precisar usar a funo $this->upload->initialize se salvar suas preferncias neste arquivo de congurao.

Referncia para Funces


As seguintes funes esto disponveis $this->upload->do_upload() Executa o upload baseado nas preferncias que voc congurou. Nota: Por default, a rotina de upload espera que o arquivo venha a partir de um campo chamado userle no formulrio, e o formulrio deve ser do tipo multiparte: <form method=post action=some_action enctype=multipart/form-data /> Se voc quiser congurar seu prprio nome para o campo, simplesmente passe seu valor para a funo do_upload: $eld_name = nome_do_seu_campo; $this->upload->do_upload($eld_name)

$this->upload->display_errors()
Captura qualquer mensagem de erro se a funo do_upload() retornar FALSE. A funo no d echo automaticamente, ela retorna o dado para que ento voc faa o que desejar com ele. Erros de Formatao Por default, a funo acima envolve qualquer erro com tags <p>. Mas voc pode congurar seu prprio delimitador assim: $this->upload->display_errors(<p>, </p>);

$this->upload->data()
Esta uma funo assistente que retorna uma array contendo todos os dados relacionados com o arquivo enviado. Aqui est um prottipo dela: Diagramado por: edson jr - edsonthadeu@hotmail.com 57

Code Igniter Verso 1.5.2 - Guia do Usurio Array ( [le_name] => minhaimagem.jpg [le_type] => image/jpeg [le_path] => /caminho/para/seu/arquivo/ [full_path] => /caminho/para/seu/arquivo.jpg [raw_name] => minhaimagem

[orig_name] => minhaimagem.jpg [le_ext] => .jpg

[le_size] => 22.2 [is_image] => 1

[image_width] => 800 [image_height] => 600 [image_type] => jpeg [image_size_str] => width=800 height=200 ) Explicao Esta a explicao para os itens da array acima. Item le_name le_type le_path full_path raw_name orig_name le_ext le_size is_image image_width image_heigth image_type image_size_str Descrio O nome do arquivo que foi enviado incluidno sua extenso. O mime type do arquivo. O caminho absoluto do arquivo no servidor. O caminho absoluto do arquivo no servidor incluindo seu nome. O nome do arquivo sem sua extenso. O nome original do arquivo. Para o caso de voc t-lo encriptado via preferncias. A extenso do arquivo com ponto nal. O tamanho do arquivo em kilobytes. Quando o arquivo for imagem ou no. 1 = imagem. 0 = no. Largura da imagem. Altura da imagem Tipo da imagem. Tipicamente o nome de sua extenso sem o ponto nal. Uma string contendo a largura e altura. til para colocar nas propriedades da imagem, como numa tag.

58

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Classe FTP
Esta classe permite que arquivos sejam transferidos para um servidor remoto. Estes arquivos remotos, podem tambm ser movidos, renomeados e apagados. A classe FTP ainda inclui uma funo de espelhamento, que permite que um diretrio local seja 100% recriado, remotamente, via FTP. Nota: Os protocolos SFTP e SSL FTP no so suportados, apenas o FTP padro.

Inicializando a Classe
Como a maioria das classes no Code Igniter, a classe FTP inicializada em seu controller usando a funo $this->load->library: $this->load->library(ftp); Uma vez carregada, o objeto estar disponvel usando: $this->ftp

Exemplos de Uso
Neste exemplo, uma conexo aberta com o servidor FTP e um arquivo local lido e enviado em modo ASCII. As permisses de arquivo so conguradas em 755. Nota: Esta congurao de permisses requer o PHP 5. $this->load->library(ftp); $cong[hostname] = ftp.seu-site.com; $cong[username] = seu-usuario; $cong[password] = sua-senha; $cong[debug] = TRUE; $this->ftp->connect($cong); $this->ftp->upload(/local/path/to/meuarquivo.html, 0775); $this->ftp->close(); Neste exemplo, uma lista de arquivos buscada no servidor. $this->load->library(ftp); $cong[hostname] = ftp.seu-site.com; $cong[username] = seu-usuario; $cong[password] = sua-senha; $cong[debug] = TRUE; $this->ftp->connect($cong); $list = $this->ftp->list_les(/public_html/); print_r($list); $this->ftp->close(); Diagramado por: edson jr - edsonthadeu@hotmail.com 59 /public_html/meuarquivo.html, ascii,

Code Igniter Verso 1.5.2 - Guia do Usurio Neste exemplo, um diretrio local espelhado no servidor. $this->load->library(ftp); $cong[hostname] = ftp.seu-site.com; $cong[username] = seu-usuario; $cong[password] = sua-senha; $cong[debug] = TRUE; $this->ftp->connect($cong); $this->ftp->mirror(/path/to/myfolder/, /public_html/meudiretorio/); $this->ftp->close();

Referncia da Funo
$this->ftp->connect() Conecte e logue-se em seu servidor FTP. As preferncias de conexo so conguradas passando uma array para a funo, ou ento voc pode armazen-las em um arquivo de congurao. Aqui vai um exemplo monstrando como congurar suas preferncias manualmente: $this->load->library(ftp); $cong[hostname] = ftp.seu-site.com; $cong[username] = seu-usuario; $cong[password] = sua-senha; $cong[port] = 21;

$cong[passive] = FALSE; $cong[debug] = TRUE; $this->ftp->connect($cong);

Congurando as preferncias FTP em um arquivo


Se preferir, voc pode armazenar suas preferncias de FTP num arquivo cong. simplesmente, crie um novo arquivo chamado ftp.php, e adicionar a array $cong neste arquivo. Salve-o em cong/ftp.php e ele ser usado automaticamente.

Opes de conexo disponveis:


hostname - O FTP hostname. Geralmente algo como: ftp.algum-site.com username - O Usurio FTP. password - A senha FTP. port - O nmero da porta. congurado como 21 por default. debug - TRUE/FALSE (boolean). Habilitar ou no o debugging para mostrar mensagens de erro. passive - TRUE/FALSE (boolean). Usar ou no o modo passivo. Ele TRUE por default. 60 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

$this->ftp->upload()
Envia um arquivo ao seu servidor. Voc deve fornecer o caminho local e o remoto, e tambm pode, opcionalmente, congurar o modo e permisses. Exemplo: $this->ftp->upload(/local/caminho/para/meuarquivo.html, /public_html/meuarquivo.html, ascii, 0775); As opes de modo so: ascii, binrio, e auto (o default). Se auto for usado, ele ir se basear na extenso do arquivo enviado. As permisses esto disponveis se voc estiver rodando o PHP 5 e podem ser passadas como um valor octal no quarto parmetro.

$this->ftp->rename()
Permite renomear um arquivo. Fornea o arquivo e caminho iniciais e os nais. // Renomeia verde.html para azul.html $this->ftp->rename(/public_html/teste/verde.html, /public_html/teste/azul.html);

$this->ftp->move()
Lhe permite mover um arquivo. Fornea o caminho inicial e o nal: // Mover o blog.html de joe para fred $this->ftp->move(/public_html/joe/blog.html, /public_html/fred/blog.html); Nota: se o nome do arquivo de destino for diferente do inicial, ele ser renomeado.

$this->ftp->delete_le()
Lhe permite apagar um arquivo. Fornea o nome e caminho do arquivo a ser apagado. $this->ftp->delete_le(/public_html/joe/blog.html);

$this->ftp->delete_dir()
Permite apagar um diretrio e todo o seu contedo. Fornea o caminho para o diretrio seguido de uma barra inclinada. Importante Tenha MUITO cuidado com esta funo. Ela ir apagar recursivamente TUDO dentro do caminho fornecido, incluindo subdiretris e todos os arquivos. Tenha certeza absoluta que seu caminho est correto. Experimente usar a funo list_les() antes, para vericar se seu caminho est correto. $this->ftp->delete_dir(/public_html/caminho/para/diretorio/);

$this->ftp->list_les()
Permite que voc busque uma lista de arquivos no servidor e a retorne como uma array. Voc deve fornecer o caminho para o diretrio desejado. $list = $this->ftp->list_les(/public_html/); print_r($list);

$this->ftp->mirror()
L, recursivamente, um diretrio local e tudo que ele contm (incluindo subdiretrios) e creia um espelhamento via FTP baseado nisto. Qualquer que seja estrutura de diretrio, ela ser recriada no servidor. Voc deve fornecer o caminho inicial e o nal: Diagramado por: edson jr - edsonthadeu@hotmail.com 61

Code Igniter Verso 1.5.2 - Guia do Usurio $this->ftp->mirror(/caminho/para/meudiretorio/, /public_html/meudiretorio/);

$this->ftp->mkdir()
Permite criar um diretrio em seu servidor. Fornea o caminho nal no diretrio em quer deseja criar, seguido de uma barra invertida. As permisses podem ser passadas via um valor octal no segundo parmetro (se voc estiver usando o PHP 5). // Cria um diretrio chamado buteco $this->ftp->mkdir(/public_html/buteco/, 0777);

$this->ftp->chmod()
Permite que voc congure as permisses de arquivo. Fornea o caminho para o arquivo ou diretrio: // Chmod buteco to 777 $this->ftp->chmod(/public_html/buteco/, 0777);

$this->ftp->close();
Fecha a conexo com o servidor. recomendado que voc use isto ao terminar de enviar os arquivos.

Classe Tabela HTML


A Classe Tabela prov funes para que voc gere tabelas HTML automaticamente a parti de arrays ou de conjutos de resultados do banco de dados.

Inicializando a Classe
Como a maioria das classes no Code Igniter, a classe Tabela inicializada em seu controller usando a funo $this->load->library: $this->load->library(table); Uma vez carregada, o objeto estar disponvel usando: $this->table

Exemplos
Este exemplo mostra como voc pode criar uma tabela a partir de uma array multidimensional. Note que o primeiro ndice da array se tornar o cabealho da tabela (ou voc pode congurar seu prprio cabealho usando a funo set_heading() descrita na referncia da funo abaixo). $this->load->library(table); $data = array( array(Nome, Cor, Tamanho), array(Fred, Azul, Pequeno), array(Mary, Vermelho, Grande), array(John, Verde, Mdio) ); echo $this->table->generate($data);

62

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Aqui vai um exemplo de uma tabela criada a partir de um resultado de uma query no banco. A classe Tabela ir gerar automaticamnete o cabealho baseada no nome das tabelas (lembre-se que voc pode contgurar eu prprio cabealho usando a funo set_heading() descrita na referncia da funo abaixo). $this->load->library(table); $query = $this->db->query(SELECT * FROM minha_tabela); echo $this->table->generate($query); Aqui vai um exemplo mostrando como voc poderia criar uma tabela usando parmetros discretos: $this->load->library(table); $this->table->set_heading(Nome, Cor, Tamanho); $this->table->add_row(Fred, Azul, Pequeno); $this->table->add_row(Mary, Vermelho, Grande); $this->table->add_row(John, Verde, Mdio); echo $this->table->generate(); Aqui vai o mesmo exemplo acima, exceto que no lugar de parmetros individuais, foram usadas arrays: $this->load->library(table); $this->table->set_heading(array(Nome, Cor, Tamanho)); $this->table->add_row(array(Fred, Azul, Pequeno)); $this->table->add_row(array(Mary, Vermelho, Grande)); $this->table->add_row(array(John, Verde, Mdio)); echo $this->table->generate();

Alterando o visual da sua tabela


A classe Tabela permite que voc use um template com o qual voc pode especicar o layout de sua tabela. Aqui vai um prottipo do template: $tmpl = array ( table_open => <table border=0 cellpadding=4 cellspacing=0>, heading_row_start => <tr>, heading_row_end => </tr>, heading_cell_start => <th>, heading_cell_end => </th>, row_start => <tr>, row_end => </tr>, cell_start => <td>, cell_end => </td>, row_alt_start => <tr>, row_alt_end => </tr>, cell_alt_start => <td>, cell_alt_end => </td>, table_close => </table> ); $this->table->set_template($tmpl); Diagramado por: edson jr - edsonthadeu@hotmail.com 63

Code Igniter Verso 1.5.2 - Guia do Usurio Nota: Voc ir notar que h 2 conjuntos de blocos de linha (rows) no template. Isto lhe permite criar linhas com cores alternadas ou projetar elementos que se alteram em cada interao ocm os dados da linha. Voc NO obrigado a submeter um template completo. Se apenas precisa alterar partes do layout, pode simplismente submeter estes elementos. Neste exemplo, apenas a tag de abertura da tabela foi alterada: $tmpl = array ( table_open class=minhatabela> ); $this->table->set_template($tmpl); => <table border=1 cellpadding=2 cellspacing=1

Referncia da Funo
$this->table->generate()
Retorna uma string contendo a tabela gerada. Aceita parmetros opcionais os quais podem ser uma array ou um objeto vindo do banco.

$this->table->set_caption()
Lhe permite adicinar uma legenda para a tabela. $this->table->set_caption(Cores);

$this->table->set_heading()
Lhe permite congurar o cabealho da tabela. Voc pode submeter uma array ou parmetros discretos: $this->table->set_heading(Nome, Cor, Tamanho); $this->table->set_heading(array(Nome, Cor, Tamanho));

$this->table->add_row()
Lhe permite adicionar uma linha tabela. Voc pode submeter uma array ou parmetros discretos: $this->table->add_row(Azul, Vermelho, Verde); $this->table->add_row(array(Azul, Vermelho, Verde));

$this->table->make_columns()
Esta funo pega uma array unidimensional como entrada e cria uma multidimensional com uma profundidade (depth) igual ao nmero de colunas desejadas. Isto permite que uma nica array, com vrios elementos, seja mostrada numa tabela que tem um nmero xo de colunas. Considere este exemplo: $lista = array(one, two, three, four, ve, six, seven, eight, nine, ten, eleven, twelve); $nova_lista = $this->table->make_columns($lista, 3); $this->table->generate($nova_lista) // Gera uma tabela com este prottipo <table border=0 cellpadding=4 cellspacing=0> <tr> <td>one</td><td>two</td><td>three</td> </tr><tr> 64 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio <td>four</td><td>ve</td><td>six</td> </tr><tr> <td>seven</td><td>eight</td><td>nine</td> </tr><tr> <td>ten</td><td>eleven</td><td>twelve</td></tr> </table>

$this->table->set_template()
Lhe permite congurar seu template. Voc pode submeter um template completo ou parcial. $tmpl = array ( table_open class=minhatabela> ); $this->table->set_template($tmpl); => <table border=1 cellpadding=2 cellspacing=1

$this->table->set_empty()
Lhe permite congurar um valor default para usar em qualquer clula de tabela que vaza. Voc pode, por exemplo, usar : $this->table->set_empty(&nbsp;);

$this->table->clear()
Lhe permite limpar o cabealho ou dado de uma linha da tabela. Se precisar mostrar mltiplas tabelas com diferentes dados, voc deve chamar esta funo depois que cada tabela for gerada, para limpar a informao da tabela anterior. Exemplo: $this->load->library(table); $this->table->set_heading(Nome, Cor, Tamanho); $this->table->add_row(Fred, Azul, Pequeno); $this->table->add_row(Mary, Vermelho, Grande); $this->table->add_row(John, Verde, Mdio); echo $this->table->generate(); $this->table->clear(); $this->table->set_heading(Nome, Dia, Tipo de Entrega); $this->table->add_row(Fred, Quarta-feira, Expressa); $this->table->add_row(Mary, Segunda-feira, Por avio); $this->table->add_row(John, Sbado, De noite para o dia); echo $this->table->generate(); 65

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Classe Manipulao de Imagem


Esta classe do Code Igniter lhe permite executar as seguintes aes: Redimensionar uma imagem Criar uma miniatura da imagem Cortar uma imagem Rotacionar uma imagem Aplicar uma imagem como marca-dgua Todas essas principais bibliotecas de imagens so suportadas: GD/GD2, NetPBM, e ImageMagick Nota: A Marca-dgua est apenas disponvel na biblioteca GD/GD2. Alm disto, mesmo que as outras bibliotecas sejam suportadas, a GD exigida para que o script calcule as propriedades da imagem. O processamento da imagem, no entando, ser executado pela biblioteca que voc especicar.

Inicializando a Classe
Como a maioria das classes no Code Igniter, a classe Manipulao de Imagem inicializada em seu controller usando a funo $this->load_library: $this->load->library(image_lib); Uma vez carregada, estar pronta para usar. O objeto desta biblioteca que voc usar para chamar todas as funes : $this->image_lib

Processando uma Imagem


No importa qual o tipo de processamento voc queria executar (redimensionar, cortar, rotacionar ou aplicar marca-dgua), o processo geral idntico. Voc congurar algumas preferncias correspndentes ao desejada, e ento chamar uma das quatro funes disponveis. Por exemplo, para criar uma miniatura da imagem, use isto: $cong[image_library] = GD; $cong[source_image] = /caminho/para/imagens/minha_imagem.jpg; $cong[create_thumb] = TRUE; $cong[maintain_ratio] = TRUE; $cong[width] = 75; $cong[height] = 50; $this->load->library(image_lib, $cong); $this->image_lib->resize(); O cdigo acima diz funo image_resize procurar uma imagem chamada minha_imagem.jpg localizada no diretrio especicado, e ento criar uma miniatur que ter 75x50 pixels, usando a bilioteca image_ library GD2. Uma vez que a opo maintain_ratio est habilitada, a miniatura ser ter as mais prximas largura e altura possveis enquanto preservar a proporo original. A miniatura ser chamda minha_ imagem_thumb.jpg Note: Para que a classe tenha permisso para executar qualquer processo, o diretrio contendo os arquivos das imagens deve ter permisso 777.

66

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Funes de Processamento
H quatro funes de processamento disponveis: $this->image_lib->resize() $this->image_lib->crop() $this->image_lib->rotate() $this->image_lib->watermark() Essas funes retornam TRUE booleano se tudo der certo e FALSE se algo falhar. Se houver falha, voc pode recuperar a mensagem de erro usando esta funo: echo $this->image_lib->display_errors(); Uma boa prtica usar a funo de processamento condicionalmente, mostrando um erro se houver falha, como desta maneira: if ( ! $this->image_lib->resize()) { echo $this->image_lib->display_errors(); } Nota: Voc pode opcionalmente especicar qual formatao do HTML ser aplicada aos erros, submentendo as tags de abertura/fechamento na funo, como desta maneira: $this->image_lib->display_errors(<p>, </p>);

Preferncias
As 14 preferncias disponveis descriatas abaixo permitem que voc ajuste o processamento de imagens s suas necessidades. Note que nem todas as preferncias esto disponveis para todas as funes. Por exemplo, as preferncias dos eixos x/y esto apenas disponveis para cortar imagens. Da mesma forma, as preferncias de largura e altura no tem efeito quando estiver cortando uma imagem. A coluna disponibilidade indica quais funes suportam uma dada preferncia. Legenda de Disponibilidade: R - Redimensionar a Imagem C - Cortar a Imagem X - Rotacionar a Imagem W - Aplicar marca-dgua (W = watermark)

Diagramado por: edson jr - edsonthadeu@hotmail.com

67

Code Igniter Verso 1.5.2 - Guia do Usurio Preferncia Valor default GD2 None None Opes Descrio Disponibilidade R, C, X, W R, C, X R, C, S, W

image_library library_path source_image

GD, GD2, ImageMagick, Congurar qual biblioteca deve ser usada. NetPBM None None
Congura o caminho, no servidor, para as bibliotecas ImageMagick ou NetPBM. Se usar uma dessas bibliotecas voc deve fornecer o caminho. Congura o caminho/nome da imagem original. O caminho do servidor deve ser absoluto ou relatico e no uma URL. Determina quando uma nova imagem deve ser escrita no disco ou gerada dinamicamente. Nota: Se voc escolher a opo dinmica, apenas uma imagem pode ser mostrada de cada vez, e ela no pode ser posicionada na pgina. Esta preferncia simplismente d sada automaticamente da imagem bruta (raw) no seu browser, junto com os cabealhos da imagem. Congurar a qualidade da imagem. Quanto maior a qualidade, maior ser o arquivo. Congura o nome/caminho de destino da imagem. Voc usar esta preferncia quando criar uma cpia de uma imagem. O caminho do servidor deve ser absoluto ou relativo e no uma URL. Congura a largura da imagem nal. Cria uma miniatura da imagem. Especica o suxo da miniatura. Ele ser inserido antes da extenso do aquivo, portanto, minhaimagem.jpg virar minhaimagem_thumb.jpg Especica se deve manter a proporo da imagem original ou ento usar valores forados. Especica o que usar como eixo mestre ao redimensionar uma imagem ou criar miniaturas. Por exemplo, digamos que voc quer redimensionar uma imagem para 100 x 75 pixels. Se a imagem original no permitir o redimensionamento ideal para essas dimenses, esta preferncia determina qual eixo dever ser usado como valor forado. auto escolhe o eixo automaticamente baseado na condio se a imagem mais alta do que larga, ou vice-versa. Especica o ngulo de rotao ao rotacionar imagens. Note que o PHP rotcionar em sentido anti-horrio, portanto uma rotao de 90 graus para a direita deve ser especicada como 270 graus. Congura a coordenada X, em pixels, para o corte da imagem. Por exemplo, um valor igual a 30 ir cortar a imagem 30 pixels vindo da esquerda. Congura a coordenada X, em pixels, para o corte da imagem. Por exemplo, um valor igual a 30 ir cortar a imagem 30 pixels vindo da esquerda. Congura a coordenada Y, em pixels, para o corte da imagem. Por exemplo, um valor igual a 30 ir cortar a imagem 30 pixels vindo de cima.

dynamic_ output

FALSE

TRUE/FALSE (boolean)

R, C, X, W

quality new_image width height create_thumb thumb_ marker

90% Nenhum Nenhum Nenhum FALSE _thumb

1 - 100% Nenhum Nenhum Nenhum TRUE/FALSE (boolean) Nenhum

R, C, X, W R R R R R

maintain_ratio

TRUE

TRUE/FALSE (boolean)

master_dim rotation_ angle x_axis y_axis 68

auto

auto, width, height 90, 180, 270, vrt, hor Nenhum Nenhum

Nenhum Nenhum Nenhum

X C C

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Congurando as preferncias em um arquivo


Se desejar no congurar as preferncias do jeito mostrado acima, pode coloc=las num arquivo de congurao. simplesmente crie um arquivo chamado image_lib.php, e adicionar a array $cong a ele. Salve-o em: cong/image_lib.php e ele ser usado automaticamente. Voc NO precisar usar a funo $this->image_lib->initialize se salvar suas preferncias em um arquivo.

$this->image_lib->resize()
A funo de redimensionamento de imagnes lhe permite alterar o tamanho da imagem original, criar uma cpia (com ou sem redimensionamento) ou criar uma miniatura. Na prtica, no h diferena entre criar uma cpia ou criar uma miniatura, exceto pelo fato que a minatura ir conter o suxo em seu nome (ex.:, minhaimagem_thumb.jpg). Todas as preferncias listas na tabela acima esto disponveis para essa funo, exceto estas trs: rotation, x_axis, and y_axis. Criando uma Miniatura A funo resizing ir um arquivo da miniatura (e preservar a imagem original) se voc congurar as preferncias para TRUE: $cong[create_thumb] = TRUE; Esta preferncia determina quando uma miniatura criada ou no. Criando uma Cpia A funo resizing, ir criar uma cpia do arquivo ogirinal (e ir preserv-lo) se voc congurar o caminho e/ou um novo nome de arquivo usando esta preferncia: $cong[new_image] = /caminho/para/nova_imagem.jpg; Notas acerca desta preferncia: Se apenas o nome da nova imagem especicado, ela ser colocada no mesmo diretrio que a imagem original Se apenas o caminho for especicado, a nova imagem ser colocada no diretrio de destino com o mesmo nome da imagem original. Se ambos caminho e nome da imagem foram especicados, ela ir ser colocada em seu prprio diretrio de destino e lhe ser dado o novo nome. Redimensionando a Imagem Original Se nenhuma das duas preferncias listadas acima (create_thumb, e new_image) for usada, a funo resizing ir se voltar imagem original no processamento.

$this->image_lib->crop()
A funo cropping trabalhar praticamente de forma idntica redising, exceto por requerer que voc congure as preferncias para os eixos X e Y (em pixels), especicando onde cortar, como desta maneira: $cong[x_axis] = 100; $cong[x_axis] = 40; Todas as preferncias listas na tabela acima esto disponveis para esta funo, exceto estas: rotation, width, height, create_thumb, new_image.

Diagramado por: edson jr - edsonthadeu@hotmail.com

69

Code Igniter Verso 1.5.2 - Guia do Usurio Aqui vai um exemplo mostrando como voc poderia cortar uma imagem: $cong[image_library] = imagemagick; $cong[library_path] = /usr/X11R6/bin/; $cong[source_image] = /caminho/para/minhaimagem.jpg; $cong[x_axis] = 100; $cong[y_axis] = 60; $this->image_lib->initialize($cong); if ( ! $this->image_lib->crop()) { echo $this->image_lib->display_errors(); } Nota: Sem uma interface visual, difcil cortar imagens, por isto esta funo no muito til a menos que voc queria contruir tal interface. E foi exatamente isto que zemos para o mdulo galeria de fotos do ExpressionEngine, o CMS que desenvolvemos. Adicionamos uma Javascript UI que permite que as reas de corte sejam selecionadas.

$this->image_lib->rotate()
A funo de rotao requer que o ngulo de rotao seja congurado via sua preferncia: $cong[rotation_angle] = 90; H 5 opes de rotao: 90 - rotaciona 90 graus em sentido anti-horrio. 180 - rotaciona 180 graus em sentido anti-horrio. 270 - rotaciona 270 graus em sentido anti-horrio. hor - gira a imagem horizontalmente. vrt - gira a imagem verticalmente. Aqui vai um exemplo mostrando como voc poderia rotacionar uma imagem: $cong[image_library] = netpbm; $cong[library_path] = /usr/bin/; $cong[source_image] = /caminho/para/minhaimagem.jpg; $cong[rotation_angle] = hor; $this->image_lib->initialize($cong); if ( ! $this->image_lib->rotate()) { echo $this->image_lib->display_errors(); } 70 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Marca-dgua
A funcionalidade de Marca-dgua requer a biblioteca GD/GD2.

Dois tipos de Marca-dgua


H dois tipos de marca-dgua que voc pode usar: Texto: A mensagem de marca-dgua ser gerada usando texto, usando tanto uma fonte True Type que voc especicar ou ento usando a sada nativa de texto que a biblioteca GD suporta. Se voc usar a verso True Type, sua instalao da GD deve ser estar compilada como suporte a tais fontes ( mais raro, mas h uma chance). Overlay: A marca-dgua ser gerada sobrepondo uma imagem (geralmente um PNG ou GIF transparente) contendo a informao desejada sobre a imagem original.

Colocando uma marca-dgua numa imagem


Assim como as outras funes (resizing, cropping, e rotating) o processo geral para aplicar a marca-dgua envolve congurar as preferncias correspondentes ao que se deseja executar, e ento chamar a funo watermark. Aqui vai um exemplo: $cong[source_image] = caminho/para/minhaimagem.jpg; $cong[wm_text] = Copyright 2006 - Fulano de Tal; $cong[wm_type] = text; $cong[wm_font_path] = ./system/fonts/texb.ttf; $cong[wm_font_size] = 16; $cong[wm_text_color] = ; $cong[wm_vrt_alignment] = bottom; $cong[wm_hor_alignment] = center; $cong[wm_padding] = 20; $this->image_lib->initialize($cong); $this->image_lib->watermark(); O exemplo acima usa uma fonte True Type em corpo 16 para criar o texto Copyright 2006 - Fulano de Tal. A marca-dgua ser posicionada centralizada no rodap da imagem, 20 pixels acima da borda inferior. Nota: Para que a classe tenha permisso para executar qualquer coisa, o arquivo da imagem deve ter permisso 777.

Preferncias da Marca-dgua
Esta tabela mostra as preferncias disponveis para ambos os tipos de marca-dgua (texto ou overlay)

Diagramado por: edson jr - edsonthadeu@hotmail.com

71

Code Igniter Verso 1.5.2 - Guia do Usurio Preferncias wm_type source_image Valor Default text Nenhum Opes Descrio type, overlay Congura o tipo de marca-dgua a usar. Congura o nome/caminho da imagem original. O Nenhum caminho no servidor deve ser absoluto ou relativo e no uma URL. Determina quando uma nova imagem deve ser escrita no disco ou gerada dinamicamente. Nota: Se voc escolher a opo dinmica, apenas uma imagem TRUE/FALSE pode ser mostrada de cada vez, e ela no pode ser (boolean) posicionada na pgina. Esta preferncia simplesmente d sada automaticamente da imagem bruta (raw) no seu browser, junto com os cabealhos da imagem. Congurar a qualidade da imagem. Quanto maior a 1 - 100% qualidade, maior ser o arquivo. O montante de padding, em pixels, que ser aplicado Um nmero marca-dgua para distanci-la da borda da imagem. top, middle, Congura o alinhamento vertical para a imagem de bottom marca-dgua. left, center, Congura o alinhamento horizontal para a imagem right de marca-dgua. Voc pode especicar um oset vertical (em pixels) para a posio da marca-dgua. O oset normalmente move a marca-dgua para a direita, exceto se vc tiver Nenhum congurado o alinhamento como right. Dessa forma o valor de oset mover a marca-dgua na direo esquerda da imagem. Voc pode especicar um oset horizontal (em pixels) para a posio da marca-dgua. O oset normalmente move a marca-dgua para baixo, exceto se vc tiver Nenhum congurado o alinhamento como bottom. Dessa forma o valor de oset mover a marca-dgua para cima.

dynamic_output

FALSE

quality padding wm_vrt_ alignment wm_hor_ alignment

90% Nenhum bottom center

wm_vrt_oset

Nenhum

wm_hor_oset

Nenhum

Preferncias de Texto
Esta tabela mostra das preferncias de texto disponveis para o tipo de marca-dgua usando texto.
Preferncias wm_text wm_font_path Valor Default Nenhum Nenhum Opes Nenhum Nenhum Descrio O texto que voc quer usar como marca-dgua. Tipicamente uma frase de copyright. O caminho no servidor para a fonte True Type que voc gostaria de usar. O Code Igniter inclui uma fonte no diretrio system/fonts. Se voc no quiser usar esta opo, a fonte nativa da GD ser usada no lugar. O corpo do texto. Nota: Se voc no estiver usando a opo da fonte True Type acima, o nmero deve estar na escala de 1 a 5. Do contrrio, voc pode usar qualquer valor vlido em pixels para a fonte. A cor da fonte, especicada em hexa decimal. Note que voc deve usar os 6 caracteres (ex.:, 993300), e no a verso abreviada de 3. A cor da sombra, especida em hexa decimal. Se deixa este valor vazio, a sombra no ser usada. Note que voc deve usar os 6 caracteres (ex.:, 993300), e no a verso abreviada de 3. A distncia (em pixels) da distncia entre a fonte e a sombra.

wm_font_size wm_font_ color wm_shadow_ color wm_shadow_ distance

16 Nenhum 3

Nenhum Nenhum Nenhum Nenhum

72

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Preferncias de Overlay
Esta tabela mostra das preferncias disponveis para o tipo de marca-dgua usando overlay.
Preferncias wm_overlay_ path wm_opacity Valor Default Nenhum 50 Opes Nenhum 1 - 100 Descrio O caminho no servidor da imagem que voc deseja usar como marca-dgua. Obrigatria apenas para o mtodo overlay. Opacidade (transparncia) da imagem usada como marca-dgua. Permite que esta que translcida, mostrando os detalhes da imagem onde est aplicada. A opacidade de 50% tpica. Se a sua imagem de marca-dgia for PNG ou GIF, voc pode especicar uma cor na imagem que dever ser transparente. Esta preferncia (junto com a prxima) lhe permitir especicar tal cor. Isto funciona especicando as coordenadas X e Y (medidas a partir do canto superior esquerdo) dentro da imagem que corresponde quela cor que voc quer tornar transparente. Junto com a congurao anterior, permite que voc especique a coordenada para a representao em pixel daquela cor que quer transparente.

wm_x_transp

Um nmero Um nmero

wm_y_transp

Classe Input
A classe Input serve dois propsitos: pr-processos globais de dados de entrada para a segurana. Ele fornece algumas funes auxiliares para a coleta de dados de entrada e de pr-processamento-lo. Nota: Esta categoria inicializado automaticamente pelo sistema ento no h necessidade de faz-lo manualmente.

Filtragem de Segurana
A ltragem de segurana funo chamada automaticamente quando um novo controlador invocado. Ele faz o seguinte: Destri a nvel mundial GET array. Desde Cdigo Igniter no utilizar GET cordas, no h motivo para deixla. Destri todas as variveis globais em caso register_globals est ligada. Filtros o POST / COOKIE array chaves, permitindo apenas alfa-numricas (e alguns outros) caracteres. Fornece XSS (Cross-site Scripting Hacks) ltragem. Isto pode ser ativado globalmente, ou mediante solicitao. Standardizes newline caracteres para \ n

XSS Filtragem
Cdigo Igniter vem com um Cross Site Scripting Hack preveno ltro que pode ser executado automaticamente para ltrar todos os POST e COOKIE dados que so encontradas, ou voc pode executlo em uma base por item. Por omisso no contrariem a nvel mundial, uma vez que requer um pouco de processamento overhead, e uma vez que talvez voc no precisa dele em todos os casos. O ltro XSS olha para comumente utilizadas tcnicas para acionar o Javascript ou outro tipo de cdigo que a tentativa de roubar cookies maliciosos ou fazer outras coisas. Se alguma coisa est impedido encontrouse tornado seguro convertendo os dados para entidades personagem. Nota: Esta funo s deve ser utilizado para lidar com os dados, mediante a apresentao. No algo que deve ser utilizado para processamento geral tempo de execuo, uma vez que exige um nmero razovel de processamento de peso. Diagramado por: edson jr - edsonthadeu@hotmail.com 73

Code Igniter Verso 1.5.2 - Guia do Usurio Para ltrar dados atravs do ltro XSS utilizar esta funo:

$this->input->xss_clean() $ this-> input-> xss_clean ()


Aqui est um exemplo de utilizao: $data = $this->input->xss_clean($data); $ dados = $ this-> input-> xss_clean ($ dados); Se voc quiser que o ltro a ser executado automaticamente cada vez que se depara POST ou COOKIE dados voc pode habilit-lo a abrir seu aplicativo / cong / cong.php neste arquivo e congurao: $ cong [ global_xss_ltering] = true; Nota: Se voc utilizar o formulrio de validao classe, dando-lhe a opo de ltragem XSS tambm.

Usando POST, COOKIE, ou servidor de dados


Cdigo Igniter vem com trs funes auxiliares que permitem que voc busque POST, COOKIE ou servidor itens. A principal vantagem de utilizar as funes bastante desde ento ir buscar um item directamente ($ _POST [ algo]) que as funes ir vericar se o item colocado e retornar falso (boolean) se no for. Isso permite que voc use dados convenientemente sem ter que testar se existe um item em primeiro lugar. Em outras palavras, normalmente voc pode fazer algo como isto: if ( ! isset($_POST[something])) { $something = FALSE; } else { $something = $_POST[something]; } Com o Cdigo da Igniter construdo em funes que voc pode simplesmente fazer isso: $something = $this->input->post(something); As trs funes so as seguintes: $this->input->post() $this->input->cookie() $this->input->server()

$this->input->post()
O primeiro parmetro ir conter o nome do POST item que voc est procurando: $ this-> input-> post ( some_data); A funo retorna falso (boolean) se o item que voc est tentando recuperar no existe. O segundo parmetro opcional permite que voc execute os dados atravs do ltro XSS. Ele ativado atravs da denio de parmetros para a segunda boolean true; 74 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio $ this-> input-> post ( some_data, TRUE);

$ this-> input-> cookie ()


Esta funo idntica funo post, s se recupera dados cookie: $ this-> input-> cookie ( some_data, TRUE);

$ this-> input-> servidor ()


Esta funo idntica que anteriormente funes, apenas se recupera dados servidor: $ this-> input-> servidor ( some_data);

$ this-> input-> ip_address ()


Retorna o endereo IP do usurio atual. Se o endereo IP no vlido, a funo ir retornar de uma IP: 0.0.0.0 echo $ this-> input-> ip_address ();

$ this-> input-> valid_ip ($ ip)


Toma um endereo IP como entrada e retorna true ou false (boolean) se vlida ou no. Nota: O $ this-> input-> ip_address () acima valida a funo IP automaticamente. if ( ! valid_ip($ip)) { echo Not Valid; } else { echo Valid; }

$this->input->user_agent()
Retorna o usurio agent (navegador) a ser utilizado pelo usurio atual. Retorna falso se ele no est disponvel. echo $this->input->user_agent();

Diagramado por: edson jr - edsonthadeu@hotmail.com

75

Code Igniter Verso 1.5.2 - Guia do Usurio

Classe Loader
Carregador, como o nome sugere, usado para carregar elementos. Estes elementos podem ser bibliotecas (classes) Ver arquivos, Ajudantes, Plugins, ou seus prprios arquivos. Nota: Esta categoria inicializado automaticamente pelo sistema ento no h necessidade de faz-lo manualmente. As seguintes funes esto disponveis nesta categoria:

$ this-> load-> biblioteca ( class_name)


Esta funo usada para carregar o ncleo classes. Quando class_name o nome da classe que voc deseja carregar. Observao: Ns usamos a expresso classe e biblioteca intercambiavelmente. Por exemplo, se voc gostaria de enviar um email com o Cdigo Igniter, o primeiro passo a carga da classe dentro de sua controladora e-mail: $ this-> load-> biblioteca ( email); Uma vez carregado, a biblioteca estar pronta para uso, utilizando $ this-> email-> some_function (). Cada biblioteca descrito em detalhes em sua prpria pgina, ento, por favor leia as informaes sobre cada um que voc gostaria de usar. Parmetros podem ser passadas para a biblioteca atravs de um array no segundo parmetro.

$ this-> load-> vista ( le_name, $ data, true/false)


Esta funo usada para carregar o seu Exibir arquivos. Se voc ainda no leu o Exibies seo do manual do utilizador recomendado que voc faa uma vez que ele mostra-lhe como que esta funo normalmente usada. O primeiro parmetro necessrio. Trata-se de ver o nome do arquivo que voc gostaria de carregar. Nota: A. Php extenso no precisa de ser especicada, a menos que voc use outra coisa ento. Php. O segundo parmetro opcional pode ter um array associativo ou um objeto como entrada, o que ele pode ser executado atravs do PHP extrato funo de converter a variveis que podem ser utilizados na sua opinio arquivos. Mais uma vez, ler o Exibies pgina para saber como este pode ser til. O terceiro parmetro opcional permite-lhe alterar o comportamento da funo para que ele retorna dados como uma string ao invs de envi-lo para o seu navegador. Isto pode ser til se voc quiser tratar os dados de alguma forma. Se voc denir o parmetro para true (boolean) que ir retornar dados. O comportamento padro falso, que envia a seu navegador. Lembre-se de associ-lo a uma varivel se voc wan os dados exibidos: $ string = $ this-> load-> view ( myle ,, true);

$ this-> load-> database ( options, true/false)


Essa funo permite-lhe carregar o banco de dados classe. Os dois parmetros so opcionais. Por favor, consulte a base de dados seo para obter mais informaes.

$this->load->scaolding(table_name)
Essa funo permite ativar andaimes. Por favor, consulte a seo andaimes para mais info.

$ this-> load-> vars ($ array)


Esta funo tem um array associativo como entrada e gera variveis usando o PHP extrato funo. Esta funo produz os mesmos resultados que a segunda usando o parmetro de US $ this-> load-> vista 76 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio () funo acima. A razo pela qual voc pode querer usar esta funo independente se voc gostaria de denir algumas variveis globais do construtor de seu controlador e v-las se tornar disponvel em qualquer vista arquivo carregado a partir de qualquer funo. Voc pode ter vrias chamadas para esta funo. Os dados em cache e obter fundidos em um array de converso para variveis.

$this->load->helper(le_name)
Esta funo cargas ajudante de cheiros, onde le_name o nome do arquivo, sem o _helper.php extenso.

$ this-> load-> plugin ( le_name)


Essa funo carrega plugins arquivos, onde le_name o nome do arquivo, sem o _plugin.php extenso.

$ this-> load-> le ( lepath / lename, true/false)


Este um genrico arquivo carregando funo. Filepath a oferta e, em nome do primeiro parmetro, ele ir abrir e ler o arquivo. Por defeito os dados so enviados para o navegador, apenas como um arquivo View, mas se voc denir o segundo parmetro para true (boolean) que ir retornar os dados em vez como uma string.

$ this-> load-> lang ( le_name)


Esta funo um apelido da lngua carregamento funo: $ this-> lang-> load ()

$ this-> load-> cong ( le_name)


Esta funo um apelido de carregar o arquivo de congurao funo: $ this-> cong-> load ()

Classe Idioma
Cursos Idioma oferece funes para recuperar arquivos linguagem e as linhas de texto para ns de internacionalizao. Em seu Cdigo Igniter sistema, voc encontrar uma pasta chamada idioma contendo conjuntos de idiomas arquivos. Voc pode criar sua prpria lngua arquivos que forem necessrias, a m de exibir mensagens de erro e de outras lnguas. Lngua arquivos so tipicamente armazenados em seu sistema / linguagem diretrio. Alternativamente voc pode criar uma pasta chamada linguagem dentro do seu pedido pasta e armazen-los ali. Cdigo Igniter ir analisar em primeiro lugar em seu sistema / aplicao / linguagem diretrio. Se o directrio no existir ou o idioma especicado no a localizadas em vez CI ir procurar em seu sistema global / linguagem pasta. Nota: Cada lngua deve ser armazenado em sua prpria pasta. Por exemplo, os arquivos esto localizados em Ingls: sistema / idioma / Ingls

Criando arquivos de Idioma


Arquivos de Idioma devem ser nomeados com _lang.php como a extenso do arquivo. Por exemplo, digamos que voc deseja criar um arquivo contendo mensagens de erro. Voc pode nome este: error_ lang.php Dentro do arquivo que voc ir atribuir cada linha de texto para um array chamado $ lang com este prottipo: $ lang [ language_key] = A verdadeira mensagem a ser mostrada;

Diagramado por: edson jr - edsonthadeu@hotmail.com

77

Code Igniter Verso 1.5.2 - Guia do Usurio Nota: uma boa prtica de usar um prexo comum para todas as mensagens em um determinado arquivo para evitar colises com similarmente chamado itens em outros arquivos. Por exemplo, se voc est criando mensagens de erro que voc pode lhes com prexo Erro_ $ lang [ error_email_missing] = Voc deve enviar um e-mail; $ lang [ error_url_missing] = Voc deve apresentar uma URL; $ lang [ error_username_missing] = Voc tem de apresentar um nome de usurio;

Carregando uma linguagem arquivo


A m de buscar uma linha a partir de um determinado arquivo que voc deve carregar o arquivo primeiro. Carregando uma linguagem arquivo feito com o seguinte cdigo: $ this-> lang-> load ( lename, linguagem); Sempre que lename o nome do arquivo que voc deseja carregar (sem a extenso do arquivo), e que a lngua a lngua que o contenham conjunto (isto , Ingls). Se o segundo parmetro est faltando, o idioma padro estabelecido na sua candidatura / cong / cong.php arquivo ser usado.

Buscando uma linha de texto


Uma vez que o seu idioma desejado arquivo carregado voc pode acessar qualquer linha de texto usando esta funo: $ this-> lang-> line ( language_key); Onde est o arranjo language_key chave correspondente linha que voc deseja mostrar. Nota: Esta funo simplesmente retorna a linha. Ela no eco-lo para voc.

Classe Output
A output uma classe com uma pequena classe principal funo: Para enviar a pgina da web nalizado para o requerente navegador. igualmente responsvel pela caching suas pginas da web, se voc usar esse recurso. Nota: Esta categoria inicializado automaticamente pelo sistema ento no h necessidade de faz-lo manualmente. Em circunstncias normais, mesmo que voc no vai notar a classe de output, uma vez que funciona transparente, sem a sua interveno. Por exemplo, quando voc usar a classe Carregador para carregar um cheiro opinio, ele automaticamente passado para a classe de output, que ser chamado automaticamente pelo Cdigo Igniter no m do sistema de execuo. possvel, no entanto, para que voc possa intervir manualmente com a produo se for necessrio, usando um dos dois seguintes funes: $ this-> output-> set_output (); Permite-lhe denir manualmente a output nal da string. Uso exemplo: $ this-> output-> set_output ($ dados); Importante: Se voc no denir sua output manualmente, deve ser a ltima coisa a fazer em funo de voc cham-lo. Por exemplo, se voc criar uma pgina em um controlador de suas funes, no se ajustar a sada at o m. $ this-> output-> get_output (); Permite-lhe recuperar manualmente a qualquer sada que tenha sido enviado para armazenagem na sada classe. Uso exemplo: $ string = $ this-> output-> get_output (); 78 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Note que os dados s sero recuperadas a partir desta funo, se tiver sido previamente enviado para a sada por uma turma do Cdigo Igniter funes como $ this-> load-> view (). $ this-> output-> set_header (); Permite-lhe denir manualmente cabealhos servidor, que a sada classe ir enviar para voc quando a sada denitiva proferida visor. Exemplo: $this->output->set_header(HTTP/1.0 200 OK); $this->output->set_header(HTTP/1.1 200 OK); $this->output->set_header(Last-Modied: .gmdate(D, d M Y H:i:s, $last_update). GMT); $this->output->set_header(Cache-Control: no-store, no-cache, must-revalidate); $this->output->set_header(Cache-Control: post-check=0, pre-check=0, false); $this->output->set_header(Pragma: no-cache);

$ this-> output-> enable_proler ();


Permite-lhe activar ou desactivar o Proler, que ir exibir benchmark e outros dados, na parte inferior de suas pginas para depurao e otimizao ns. Para ativar o proler lugar as seguintes funes em qualquer lugar dentro do seu controlador funes: $ this-> output-> enable_proler (TRUE); Quando ativado, um relatrio ser gerado e inserido na parte inferior de suas pginas. Para desativar o proler voc ir usar: $ this-> output-> enable_proler (FALSE);

Classe Paginao
Cdigo Igniter Paginao da classe muito fcil de usar, e 100% personalizvel, ter dinamicamente ou via armazenados preferncias. Se voc no estiver familiarizado com o termo paginao, ele se refere a ligaes que lhe permite navegar a partir de pgina a pgina, como este: First < 1 2 3 4 5 > Last

Exemplo
Aqui est um exemplo simples mostrando como criar uma paginao no seu controlador de funes: $this->load->library(pagination); $cong[base_url] = http://www.your-site.com/index.php/test/page/; $cong[total_rows] = 200; $cong[per_page] = 20; $this->pagination->initialize($cong); echo $this->pagination->create_links();

Diagramado por: edson jr - edsonthadeu@hotmail.com

79

Code Igniter Verso 1.5.2 - Guia do Usurio Notas: A $cong array contm a sua congurao variveis. passado para o $this->pagination->initialize funo como mostrado acima. Embora existam alguns vinte itens que voc pode congurar, no mnimo, voc precisa dos trs mostrados. Aqui est uma descrio do que representam esses itens: base_url Este o URL completo para o controlador class / function contendo a sua paginao. No exemplo acima, o que aponta para um controlador chamado Teste e uma funo chamada pgina. Tenha em mente que voc pode re-encaminhar seus URI se voc precisa de uma estrutura diferente. total_rows Este nmero representa o total de linhas no resultado que est a criar para a paginao. Tipicamente este ser o nmero total de linhas que seu banco de dados consulta retornou. per_page O nmero de itens que voc deseja mostrar por pgina. No exemplo acima, voc estaria mostrando 20 itens por pgina. O create_links () funo retorna uma string vazia quando no h paginao para mostrar. Denir preferncias de um cheiro de congurao Se voc preferir no denir preferncias usando o mtodo acima, voc pode coloc-los em vez um arquivo de congurao. Basta criar um novo arquivo chamado o pagination.php, adicione o $cong array neste arquivo. Em seguida, salve o arquivo em: cong / pagination.php e ele ser usado automaticamente. Voc no precisa usar o $this->pagination->initialize funo se voc salvar suas preferncias em um arquivo de congurao.

Personalizando a Paginao
O seguinte uma lista de todas as preferncias voc pode passar a funo de inicializao para adequar o monitor. $ cong [ uri_segment] = 3; A paginao funo que determina automaticamente o seu segmento de URI contm o nmero da pgina. Se voc precisa de algo diferente, voc pode especicar-lo. $ cong [ num_links] = 2; O nmero de dgito links que voc gostaria antes e aps a pgina selecionada nmero. Por exemplo, o nmero 2 vai colocar dois dgitos em ambos os lados, como no exemplo links na parte superior desta pgina.

Adicionando juntando Markup


Se voc gostaria de cercar toda a paginao com alguma marcao voc pode faz-lo com estas duas preferncias: $ cong [ full_tag_open] = <p>; A tag de abertura colocado no lado esquerdo de todo o resultado. $ cong [ full_tag_close] = </ p>; Tag de fechamento colocado do lado direito de todo o resultado.

Personalizando o primeiro link


$ cong [ rst_link] = First; O texto que voc gostaria mostrado no primeiro link do lado esquerdo. $ cong [ rst_tag_open] = <div>; A tag de abertura para o primeiro link. 80 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio $ cong [ rst_tag_close] = </ div>; Tag de fechamento para o primeiro link.

Personalizando o ltimo link


$ cong [ last_link] = ltimo; O texto que voc gostaria mostrado no ltimo link do lado direito. $ cong [ last_tag_open] = <div>; A tag de abertura para o ltimo link. $ cong [ last_tag_close] = </ div>; Tag de fechamento para o ltimo link.

Personalizao do Next Link


$ cong [ next_link] = >; O texto que voc gostaria mostrado na prxima pgina link. $ cong [ next_tag_open] = <div>; A tag de abertura para a prxima link. $ cong [ next_tag_close] = </ div>;

Personalizando o anterior Link


$ cong [ prev_link] = <; O texto que voc gostaria mostrado no programa anterior page link. $ cong [ prev_tag_open] = <div>; A tag de abertura para o anterior link. $ cong [ prev_tag_close] = </ div>; Tag de fechamento para o anterior link.

Personalizando a Pgina atual Link


$ cong [ cur_tag_open] = <b>; A tag de abertura para o atual link. $ cong [ cur_tag_close] = </ b>; Tag de fechamento para o atual link.

Personalizando o Dgito Link


$ cong [ num_tag_open] = <div>; A tag de abertura para o dgito link. $ cong [ num_tag_close] = </ div>; Tag de fechamento para o dgito link.

Diagramado por: edson jr - edsonthadeu@hotmail.com

81

Code Igniter Verso 1.5.2 - Guia do Usurio

Classe Sesso
A classe Sesso lhe permite manter um status do usurio e acompanhar sua atividade enquanto ele navega por seu site. A classe armazena as informaes da sesso para cada usurio em dados dispostos em srie (e opcionalmente criptografados) num cookie. Ela pode ainda armazenar os dados da sesso em uma tabela no banco de dados para aumentar a segurana, pois isto permite que a ID da sesso no cookie do usurio tenha ligao, e seja comparvel, com o ID da sesso armazenada. Por default, apenas o cookie salvo. Se voc escolher usar a opo de banco de dados, precisar criar a tabela de sesso indicada abaixo. Nota: A classe Sesso no utiliza as sesses nativas do PHP. Ela gera seus prprios dados de sesso, oferecendo maior exibilidade para os desenvolvedores.

Inicializando a Sesso
Sesses iro tipicamente rodar globalmente em cada carregamento da pgina, portanto a classe sesso deve ser ou inicializada em seus construtores dos controllers, ou pode ser carregada automaticamente pelo sistema. Na maioria dos casos a classe sesso ir rodar despercebida no background, portanto sua simples inicializao a far ler, criar e atualizar sesses. Para inicializar a classe Sesso manualmente em seu controller, use a funo $this->load->library: $this->load->library(session); Uma vez carregada, o objeto estar disponvel usando: $this->session

Como as Sesses funcionam?


Quando uma pgina carregada, a classe sesso ir checar se um dado vlido de sesso existe no cookie de sesso do usuiro. Se os dados de sesso no existirem (ou houverem expirados) uma nova sesso ser criada e salva no cookie. Se a sesso j existir, sua informao e o cookie sero atualizados. importante que voc entenda que uma vez inicializada, a classe Sesso roda automaticamente. No h nada que voc precise fazer para isto. Voc pode, como ver abaixo, trabalhar com os dados de sesso ou mesmo adicionar seus prprios dados para a sesso do usurio, mas o processo de leitura, escrita e atualizao da sesso automtico.

O que so os Dados da Sesso?


Uma sesso, no que tange preocupao do Code Igniter, simplesmente uma array contendo as seguintes informaes: A ID de Sesso nica do usurio (ela estatisticamente uma string randmica com uma entropia muito forte, hasheada com MD5, para portabilidade) O endereo IP do usurio Os dados do User Agent do usurio (os primeiros 50 caracteres da string de dados do browser) O horrio da ltima atividade e da ltima visita. Os dados acima so armazenados num cookie numa array em srie, com este prottipo: [array] ( session_id => random hash, ip_address => string - endereo IP do usurio, user_agent => string - dados do User Agent do usurio, last_activity => horrio, last_visit => horrio ) 82 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Se voc tiver habilitado a opo de criptograa, a array em sria ser criptografada antes de ser armazenada num cookie, tornando os dados bem seguros e impossveis de serem lidos ou alterados por algum. Mais informaes acerca da criptograa, podem ser encontradas aqui, no entanto a classe Sesso responsvel por inicializar e criptografar os dados automaticamente. Nota: Cookies de sesso so atualizados apenas de 5 em 5 minutos, para reduzir a carga de processamento. Se voc repetidamente recarregar a pgina, notar que o horrio de ltima atividade ser atualizado apenas se 5 minutos ou mais se passaram desde a ltima vez que o cookie foi escrito.

Recuperando os Dados de Sesso


Qualquer pedao da informao vinda da array de sesso estar disponvel atravs da funo: $this->session->userdata(item); Onde item o ndice da array correspondente ao item que voc deseja recuperar. Por exemplo, para recuperar a ID de sesso, voc deve fazer isto: $session_id = $this->session->userdata(session_id); Nota: A funo retorna FALSO (booleano) se o item que voc esta tentando acessar no existir.

Adicionando Dados de Sesso Personalizados


Um aspecto til da array de sesso que voc pode adicionar seus prprios dados a ela, e ela os armazenar no cookie do usurio. Mas porque voc gostaria de fazer tal coisa? Aqui vai um exemplo: Digamos que um usurio em particular faa o login em seu site. Uma vez autenticado, voc poder adicionar seu nome de usurio e e-mail para o cookie de sesso, tornando os dados globalmente disponveis sem precisar rodar uma query no banco quando precisar acess-los. Adicionar seus dados para a array de sesso envolve passar uma array, contendo seus novos dados, para esta funo: $this->session->set_userdata($array); Onde $array uma array associativa contendo seus novos dados. Aqui est um exemplo: $novosdados = array( nome_de_usuario => fulano, e-mail => fulano@algum-site.com, esta_logado => TRUE ); $this->session->set_userdata($novosdados); Se voc desejar adicionar dados do usurio em um valor por vez, set_userdata() tambm suporta esta sintaxe: $this->session->set_userdata(alguma_coisa, algum_valor); Nota: Cookies podem conter at 4KB de dados, por isto tenha cuidado em no exceder tal capacidade. O processo de criptograa, em particular, produz uma string de dados mais longa que a original, por isso mantenha controle de quantos dados voc armazenar.

Salvando os dados de Sesso no Banco de Dados


A ID de sesso, contida da array respectiva, s pode ser validada se voc a armazenar no banco de dados. Para as aplicaes que requeiram pouca ou nenhuma segurana, a validao da ID de sesso pode ser Diagramado por: edson jr - edsonthadeu@hotmail.com 83

Code Igniter Verso 1.5.2 - Guia do Usurio necessria, mas se sua aplicao exigir segurana, a validao obrigatria. Quando os dados de sesso esto disponveis no banco, toda vez que uma sesso vlida for encontrada no cookie do usurio, uma query executada para compar-los. Se a ID no bater, a sesso destruda. As IDs no nunca podem ser atualizadas, podem apenas ser geradas quando uma nova sesso criada. Para armazenar sesses, voc primeiro deve criar a tabela no banco para este propsito. Aqui vai um prottipo bsico (para MySQL) requerido pela classe Sesso: CREATE TABLE IF NOT EXISTS `ci_sessions` ( id_sessao varchar(40) DEFAULT 0 NOT NULL, endereco_ip varchar(16) DEFAULT 0 NOT NULL, user_agent varchar(50) NOT NULL, ultima_atividade int(10) unsigned DEFAULT 0 NOT NULL, PRIMARY KEY (id_sessao) ); Nota: Por default, a tabela chama-se ci_sessions, mas voc pode colocar qualquer nome que quiser, desde que atualize o arquivo application/cong/cong.php para que ele contenha o novo nome. Uma vez criada a tabela, voc pode habilitar a opo de banco de dados em seu arquivo cong.php como se segue: $cong[sess_use_database] = TRUE; Uma vez habilitada, a classe Sesso ir armazenar os dados de sesso no banco. Tenha certeza de ter especicado o nome da tabela em seu arquivo de congurao: $cong[sess_table_name] = ci_sessions; Nota: A classe Sesso tem uma coleo lixeira embutida, que limpa as sesses expiradas, por isso voc no precisa criar sua prpria rotina para faz-los.

Destruindo uma Sesso


Para limpar a sesso atual: $this->session->sess_destroy();

Preferncias de Sesso
Voc encontrar as preferncias relacionadas a Sesses em seu arquivo application/cong/cong.php:
Preferncias sess_cookie_ name sess_ expiration sess_encrypt_ cookie sess_use_ database sess_table_ name Valor Default ci_session 7200 FALSE FALSE ci_sessions Opes Nenhum Nenhum TRUE/FALSE (boolean) TRUE/FALSE (boolean) Qualquer nome vlido para uma tabela SQL Descrio O nome para a sesso do cookie. O nmero de segundos que voc quer que a sesso dure. O valor padro 2 horas (7.200 segundos). Se desejar uma sesso que no expire, use o valor zero: 0 Se deve criptografar os dados da sesso. Se deve salvar a sesso no banco. Voc deve criar a tabela antes de habilitar esta opo. O nome da tabela de sesso no banco.

84

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio


sess_match_ip sess_match_ useragent FALSE TRUE TRUE/FALSE (boolean) TRUE/FALSE (boolean) Se deve vericar o endereo IP do usurio ao ler os dados da sesso. Note que alguns ISPs dinamicamente alterar o IP, portanto se voc quiser uma sesso que no expirer, deve usar FALSE. Se deve vericar o User Agent do usurio ao ler os dados da sesso.

Classe Trackback
A Classe Trackback Class prov funes para enviar e receber dados Trackback. Se voc no est familiarizado com Trackbacks, achar mais informaes aqui.

Inicializando a Classe
Como a maioria das classes no Code Igniter, a classe Trackback inicializada, em seu controller, usando a funo $this->load->library: $this->load->library(trackback); Uma vez carregada, seu objeto estar disponvel usando: $this->trackback

Enviando Trackbacks
Um trackback pode ser enviado de qualquer funo em seus controllers, usando um cdigo similar a este exemplo: $this->load->library(trackback); $tb_data = array( ping_url => http://algum-site.com/trackback/456, url => http://www.meu-site.com/blog/entry/123,

title => O Ttulo do meu Post, excerpt => O contedo do Post., blog_name => O nome do Meu Blog, charset => utf-8 ); if ( ! $this->trackback->send($tb_data)) { echo $this->trackback->display_errors(); } else { echo O Trackback foi enviado!; }

Diagramado por: edson jr - edsonthadeu@hotmail.com

85

Code Igniter Verso 1.5.2 - Guia do Usurio Descrio dos dados da array: ping_url - A URL do site para o qual voc est enviando o Trackback. Voc pode enviar Trackbacks para mltiplas URLs separando-as por vrgula.. url - A URL para o SEU site, onde o post do blog poder ser visto. title - O nome do ttulo do seu post. excerpt - O contedo de seu post. Nota: a classe Trackback ir automaticamente enviar apenas os primeiros 500 caracteres do post. E tambm ir retirar todo o HTML. blog_name - O nome do seu Blog. charset - A codicao de caracteres na qual seu post foi escrito. Se omitida, a UTF-8 ser usada. A funo de envio de Trackbacks retornar TRUE/FALSE (booleano) em sucesso ou falha, respectivamente. Se ela falhar, voc pode recuperar a mensagem de erro usando: $this->trackback->display_errors();

Recebendo Trackbacks
Antes que possa receber Trackbacks, voc precisa criar um blog. Se no tem um ainda, no h razo em continuar lendo isto. Receber Trackbacks um pouco mais complexo que envi-los, apenas porque voc precisar de uma tabela no banco de dados para armazen-los e precisar validar os dados recebidos. Voc encorajado a implementar um processo de validao completo e consistente para evitar dados duplicados e se proteger de spam. Voc pode querer tambm limitar o nmero de Trackbacks que deseja receber de um particular IP, dentro de um espao de tempo, para diminuir a chance de spam. O processo de receber Trackbacks bem simples; o processo da validao dos mesmos que toma mais tempo e esforo.

Sua URL Permanente


Para aceitar Trackbacks voc precisa mostrar a URL Trackback prxima a seus posts. Est ser a URL que as pessoas usaro para enviar Trackbacks para voc (iremos nos referenciar a ela como sua URL Ping). Sua URL Ping deve apontar para a funo de um controller onde o seu cdigo de recepo de Trackbacks est localizado e a URL deve conter o nmero ID de cada post em particular, para que quando um Trackback for recebido, voc poder associ-lo com o post. Por exemplo, se sua classe controller chama-se Trackback, e a funo de recepo chama-se receive, suas URLs Ping iro se parecer com algo assim: http://www.seu-site.com/index.php/trackback/receive/entry_id Onde entry_id representa o nmero ID individual ID para cada um de seus posts.

Criando uma Tabela Trackback


Para receber Trackbacks, voc precisar criar uma tabela para armazen-las. Aqui vai um prottipo bsico para tal tabela: CREATE TABLE trackbacks ( tb_id int(10) unsigned NOT NULL auto_increment, post_id int(10) unsigned NOT NULL default 0, url varchar(200) NOT NULL, titulo varchar(100) NOT NULL, excerto text NOT NULL, nome_blog varchar(100) NOT NULL, tb_data int(10) NOT NULL, endereco_ip varchar(16) NOT NULL, 86 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio PRIMARY KEY (tb_id), KEY (entry_id) ); A especicao Trackback apenas requer quarto pedaos de informao para serem enviados (url, ttulo, excerto, nome_blog), mas para tornar os dados mais teis, adicionamos alguns campos a mais no esquema acima (data, endereo IP etc.).

Processando um Trackback
Aqui est um exemplo mostrando como voc ir receber e processar um Trackback. O cdigo abaixo tem a inteno de ser usado dentro da funo controller onde voc espera receber os Trackbacks. $this->load->library(trackback); $this->load->database(); if ($this->uri->segment(3) == FALSE) { $this->trackback->send_error(No foi possvel determinar o ID do post); } if ( ! $this->trackback->receive()) { $this->trackback->send_error(O Trackback no contm dados vlidos); } $dados = array( tb_id => , entry_id => $this->uri->segment(3), url => $this->trackback->data(url), title => $this->trackback->data(titulo), excerpt => $this->trackback->data(excerto), blog_name => $this->trackback->data(nome_blog), tb_date => time(), ip_address => $this->input->endereco_ip() ); $sql = $this->db->insert_string(trackbacks, $dados); $this->db->query($sql); $this->trackback->send_success(); Notas: esperado que o nmero ID do post esteja no terceiro segmento da URL. Isto baseia-se no exemplo de URI que mostramos anteriormente: http://www.seu-site.com/index.php/trackback/receive/entry_id Note a entry_id no terceiro URI, o qual voc pode recuperar usando: $this->uri->segment(3); No cdigo de recebimento do Trackback, acima, se o terceiro segmento estiver faltando, iremos disparar um erro. Sem uma ID vlida, no h razo para continuar. A funo $this->trackback->receive() simplesmente uma funo de validao que pegar os dados recebidos e ter a certeza que eles contm os quatro pedaos de dados obrigatrios (url, titulo, excerto, Diagramado por: edson jr - edsonthadeu@hotmail.com 87

Code Igniter Verso 1.5.2 - Guia do Usurio nome_blog). Ela retornar TRUE/FALSE em sucesso ou falha, respectivamente. Se ela falhar, voc receber uma mensagem de erro. Os dados do Trackback recebido podem ser recuperados usando esta funo: $this->trackback->data(item) Onde item representa um destes quatro pedaos de informao: url, ttulo, excerto ou nome_blog. Se os dados do Trackback forem recebidos com sucesso, voc poder enviar uma mensagem de sucesso usando: $this->trackback->send_success(); Nota: O cdigo acima no contm validao de dados. Voc encorajado a inclu-la.

Classe Template Parser


Esta classe lhe habilita analisar sintaticamente (to parse) pseudo-variveis contidas dentro de seus arquivos View. Ela pode analisar simples variveis ou pares de tag variveis. Se voc nunca usou um template engine, pseudo-variveis se parecem com isto: <html> <head> <title>{blog_title}</title> </head> <body> <h3>{blog_heading}</h3> {blog_entries} <h5>{title}</h5> <p>{body}</p> {/blog_entries} </body> </html> Esas variveis no so variveis PHP na verdade, mas apenas representaes em texto puro, que lhe permitem eliminar o PHP de seus templates (view les). Nota: o Code Igniter no requer que voc use esta classe, pois usar PHP puro em suas pginas view as deixa rodar um pouco mais rpido. No entando, alguns desenvolvedores preferem usar um template engine se estiverem trabalhando com designers, que podem ter diculdades em trabalhar com PHP. Note tambm: A Classe Template Parser no uma soluo toda prova. Ns a mantivemos bem concisa em seu propsito, para manter mxima performance.

Inicializando a Classe
Como a maioria das classes no Code Igniter, esta inicializada, em seu controller, usando a funo $this>load->library: $this->load->library(parser); Uma vez carregada, seu objeto estar disponvel usando: $this->parser As seguintes funes esto disponveis para esta biblioteca: Esta varivel aceita um nome e uma array de dados de um template como entrada, e gerar a verso analisada (parsed). Exemplo:

88

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio $this->load->library(parser); $dados = array( titulo_blog => Meu Ttulo do Blog, cabecalho_blog => Meu Cabealho do Blog ); $this->parser->parse(blog_template, $dados); O primeiro parmetro contm o none do arquivo view (neste exemplo, o arquivo poderia se chamar blog_ template.php), e o segundo parmetro contm a array associativa com os dados a serem substitudos no template. No exemplo acima, o template conteria duas variveis: {titulo_blog} e {cabecalho_blog} No preciso dar echo ou fazer outra coisa com os dados retornados pela $this->parser->parse(). Eles so automaticamente passados Classe Output que dar sada para o browser. No entando, se voc quiser os dados retornados, no lugar de envi-los Classe Output, pode passar TRUE (booleano) para o terceiro parmetro: $string = $this->parser->parse(blog_template, $dados, TRUE);

Pares de Variveis
O exemplo acima permite que simples variveis sejam substitudas. Mas e se voc quiser que um bloco inteiro de variveis seja repetido, com cada interao contendo valores novos? Considere o exemplo que mostramos no topo da pgina: <html> <head> <title>{blog_title}</title> </head> <body> <h3>{blog_heading}</h3> {blog_entries} <h5>{title}</h5> <p>{body}</p> {/blog_entries} </body> </html> No cdigo acima, voc notar o par de variveis: {blog_entries} dados... {/blog_entries}. Neste caso, o montante de dados entre estes pares seria repetido mltiplas vezes, correspondendo ao nmeros de linhas em um resultado. A anlise sinttica de pares de variveis feita usando o mesmo cdigo parar analisar variveis simples mostrado acima, exceto que voc adicionar uma array multidimensional correspondente aos dados do seu par de variveis. Considere este exemplo: $this->load->library(parser); $dados = array( blog_title => Meu Ttulo do Blog, blog_heading => Meu cabealho do Blog, blog_entries => array( array(title => Ttulo 1, body => Contedo 1), array(title => Ttulo 2, body => Contedo 2), array(title => Ttulo 3, body => Contedo 3), array(title => Ttulo 4, body => Contedo 4), array(title => Ttulo 5, body => Contedo 5) ) ); $this->parser->parse(blog_template, $dados); Diagramado por: edson jr - edsonthadeu@hotmail.com 89

Code Igniter Verso 1.5.2 - Guia do Usurio Se os dados do seuparesto vindo de um resultado do banco de dados, que j uma array multidimensional, voc pode simplismente usar a funo de resultado de banco: $query = $this->db->query(SELECT * FROM blog); $this->load->library(parser); $dados = array( blog_title => Meu Ttulo do Blog, blog_heading => Meu cabealho do Blog, blog_entries => $query->result_array() ); $this->parser->parse(blog_template, $dados);

Classe Unit Testing


Unit testing, ou Teste Unitrio, uma abordagem em desenvolvimento de software na qual testes so escritos para cada funo em sua aplicao. Se voc no est familiarizado com este conceito, poderia fazer uma busca rpida sobre o assunto. A classe Unit Testing do Code Igniter bem simples, consistindo de uma funo de avaliao e duas de resultado. Ela no tem a inteno de ser uma suite de testes gigante mas sim um simples mecanismo de avaliar seu cdigo para determinar se ele est produzindo os corretos tipos de dados e resultados.

Inicializando a Classe
Como a maioria das classes no Code Igniter, esta classe inicializada, em seu controller, usando a funo $this->load->library: $this->load->library(unit_test); Uma vez carregada, seu objeto estar disponvel usando: $this->unit

Rodando Testes
Rodar um teste envolve fornecer um teste e o resultado esperado seguinte funo: $this->unit->run( teste, resultado esperado, nome do teste ); Onde teste o resultado do seu cdigo que voc deseja testar, resultado esperado o tipo de dado que voc espera, e nome do teste um nome opcional que voc pode dar ao seu teste. Exemplo: $teste = 1 + 1; $resultado_esperado = 2; $nome_do_teste = Somar um mais um; $this->unit->run($teste, $resultado_esperado, $nome_do_teste); O resultado esperado fornecido por voc pode ser uma comparao ligeral, ou uma comparao de tipos de dados. Aqui vai um exemplo de uma literal: $this->unit->run(Foo, Foo); Aqui vai um exemplo de uma comparao de tipos de dados: $this->unit->run(Foo, is_string); Notou o uso do is_string no segundo parmetro? Isto diz funo para avaliar se seu teste est produzindo uma string como resultado. Aqui vai uma lista de tipos permitidos de comparaes: is_string is_bool is_true 90 is_false is_int is_numeric is_oat is_double is_array Diagramado por: edson jr - edsonthadeu@hotmail.com is_null

Code Igniter Verso 1.5.2 - Guia do Usurio

Gerando relatrios
Voc pode tanto mostrar resultados aps cada teste, ou pode rodar vrios testes e gerar um relatrio no nal. Para mostrar um relatrio diretamente, simplesmente d um echo ou retorne a funo run: echo $this->unit->run($teste, $resultado_esperado); Para rodar um relatrio completo de todos os testes, use isto: echo $this->unit->report(); O relatrio ser formatado em uma tabela HTML para visualizao. Se voc preferir os dados crus, pode recuperar um array usando: echo $this->unit->result();

Modo Estrito
Por default, a classe unit test avalia comparaes literais de forma pouco rigorosa. Considere este exemplo: $this->unit->run(1, TRUE); O teste ir avaliar um inteiro, mas o resultado esperaro booleano. O PHP, no entando, devido a seus tipos-de-dados genricos, ir avaliar o cdigo acima como VERDADEIRO, usando um teste de igualdade normal: if (1 == TRUE) echo Isto avaliando como VERDADEIRO; Se voc preferir, pode colocar a classe unit test em modo estrito, no qual ela ir comprar os tipos de dados assim como os valores: if (1 === TRUE) echo Isto avaliando como FALSO; Para habilitar o modo estrito, use isto: $this->unit->use_strict(TRUE);

Habilitando/Desabilitando o Unit Testing


Se voc quiser manter alguns testes dentro de seus scripts, mas no quer rod-los a menos que precise, pode desabilitar o unit testing usando: $this->unit->active(FALSE)

Criando um Template
Se voc quiser seus resultados de testes formatados de forma diferente da padro, pode montar seu prprio template. Aqui vai um exemplo de um simples template. Note as pseudo-variveis exigidas: $str = <table border=0 cellpadding=4 cellspacing=1> {rows} <tr> <td>{item}</td> <td>{result}</td> </tr> {/rows} </table>; $this->unit->set_template($str); Nota: O seu template deve estar declarado antes de rodar o processo de unit testing. Diagramado por: edson jr - edsonthadeu@hotmail.com 91

Code Igniter Verso 1.5.2 - Guia do Usurio

Classe URI
A Classe URI prov funes que o ajudaro recuperar informaes a partir de suas string URI. Se voc usa o roteamento URI, pode ainda recuperar informaes sobre os segmentos re-roteados. Nota: Esta classe inicializada automaticamente pelo sistema, por isso no necessrio faz-lo. $this->uri->segment(n) Permite que voc recupere um segmento especco. Onde n o nmero do segmento que voc deseja recuperar. Segmentos so numeros da esquerda pra direita. Por exemplo, se sua URL completa for assim: http://www.seu-site.com/index.php/noticias/locais/metro/crime_aumenta O nmero dos segmentos seriam estes: 1. noticias 2. locais 3. metro 4. crime_aumenta Por default, a funo retorna FALSE (booleano) se o segmento no existir. H um segundo parmetro adicionar que lhe permite congurar seu prprio valor padro se o segmento estiver faltando. Por exemplo, isto diria funo retornar o nmero zero no advento de uma falha: $product_id = $this->uri->segment(3, 0); Isto ajuda evitar escrever cdigo como desse jeito: if ($this->uri->segment(3) === FALSE) { $product_id = 0; } else { $product_id = $this->uri->segment(3); }

$this->uri->rsegment(n)
Esta funo idncia a anterior, exceto que ela lhe permite recuperar um segmento especco em seus URI re-roteados, se voc estiver usando a funcionalidade URI Routing do Code Igniter.

$this->uri->slash_segment(n)
Esta funo praticamente idntica a $this->uri->segment(), exceto que ela adiciona uma barra antes e/ou depois baseado no segundo parmetro. Se o parmetro no for usado, a barra adicionada antes. Exemplo: $this->uri->slash_segment(3); $this->uri->slash_segment(3, leading); $this->uri->slash_segment(3, both); Retorna: 1. segmento/ 2. /segmento 3. /segmento/ 92 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

$this->uri->slash_rsegment(n)
Esta funo idncia a anterior, exceto que ela lhe permite adicionar barras a um segmento especco seus URI re-roteados, se voc estiver usando a funcionalidade URI Routing do Code Igniter.

$this->uri->uri_to_assoc(n)
Esta funo lhe permite tranformar segmentos URI em uma array associativa de pares chave/valor. Considere este URI: index.php/usuario/busca/nome/joe/localizacao/UK/sexo/masculino Usando esta funo, voc pode transformar a URI em uma array associatia usando este prottipo: [array] ( nome => joe localizacao => UK sexo => masculino ) O primeiro parmetro da funo lhe permite congurar a partir de qual segmento deve comear o processamento. Por default, ela comeara do 3, j que seu URI normalmente ir conter um controller/ funo no primeiro e segundo parmetro respectivamente. Exemplo: $array = $this->uri->uri_to_assoc(3); echo $array[nome]; O segundo parmetro lhe permite congurar os nomes de chave padres, para que a array retornada pela funo sempre contenha indces esperados, mesmo se faltantes na URI. Exemplo: $default = array(nome, sexo, localizao, tipo, espcie); $array = $this->uri->uri_to_assoc(3, $default); Se o URI no contiver um valor no segmento 3, um ndice na array ser adicionadado com esse nome, com o valor FALSE. Por ltimo, se um valor correspondente a uma dada chave no for encontrado para (se hover um nmero mpar de segmentos URI), o valor ser marcado como FALSE (booleano).

$this->uri->ruri_to_assoc(n)
Esta funo idntica a anterior, exceto que ela cria uma array associativa usando seus URI re-roteados, se voc estiver usando a funcionalidade URI Routing do Code Igniter.

$this->uri->assoc_to_uri()
Pega uma array associativa como entrada e gera uma string URI a partir dela. As chaves da array sero includas na string. Exemplo: $array = array(produto => sapatos, tamanho => grande, cor => vermelho); $str = $this->uri->assoc_to_uri($array); // Produz: produto/sapatos/tamanho/grande/cor/vermelho $this->uri->uri_string() Retorna uma string com o URI completo. Por exemplo, se esta sua URL completa: http://www.seu-site.com/index.php/noticas/local/345 A funo retornaria isto: Diagramado por: edson jr - edsonthadeu@hotmail.com 93

Code Igniter Verso 1.5.2 - Guia do Usurio noticas/local/345

$this->uri->ruri_string(n)
Esta funo idntica a anterior, exceto que ela retorna seus URI re-roteados, se voc estiver usando a funcionalidade URI Routing do Code Igniter.

$this->uri->total_segments()
Retorna o nmero total de segmentos.

$this->uri->total_rsegments(n)
Esta funo idntica a anterior, exceto que ela retorna o nmero total de segmentos em seus URI reroteados, se voc estiver usando a funcionalidade URI Routing do Code Igniter.

$this->uri->segment_array()
Retorna uma array contendo os segmentos URI. Por exemplo: $segs = $this->uri->segment_array(); foreach ($segs as $segment) { echo $segment; echo <br />; }

$this->uri->rsegment_array(n)
Esta funo idntica a anterior, exceto que ela retorna a array contendo os segmentos em seus URI reroteados, se voc estiver usando a funcionalidade URI Routing do Code Igniter.

Classe User Agent


A Classe User Agent prov funes que auxiliam a identicar informaes sobre o navegador, dispositivo mvel, ou o rob que esteja visitando seu site. Voc tambm pode usar esta Classe para obter informaes de referrer (de onde vem o usurio), idioma e conjunto de caracteres suportado (charset)

Inicializando a Classe
Da mesma maneira como a maioria das outras classes no Code Igniter, a classe User Agent inicializada no seu controller usando a funo $this->load->library: $this->load->library(user_agent); Uma vez carregado, o objeto estar disponvel usando: $this->agent

Denies de User Agent


As denies de nome do user agent esto localizadas no arquivo de congurao localizado em application/ cong/user_agents.php. Voc pode adicionar itens s vrias arrays do user agent se necessrio.

Exemplo
Quando a classe User Agent inicializada ela tentar determinar se o user agent que est visitando seu site um navegador (web browser), um dispositivo mvel ou um rob(spider).Tambm tentar obter a informao da plataforma, caso esteja disponvel. 94 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio $this->load->library(user_agent); if ($this->agent->is_browser()) { $agent = $this->agent->browser(). .$this->agent->version(); } elseif ($this->agent->is_robot()) { $agent = $this->agent->robot(); } elseif ($this->agent->is_mobile()) { $agent = $this->agent->mobile(); } else { $agent = Unidentied User Agent; } echo $agent; echo $this->agent->platform(); // Informao de Platforma (Windows, Linux, Mac, etc.)

Referncias de Funes
$this->agent->is_browser()
Retorna TRUE/FALSE (booleano) se o user agent um navegador conhecido.

$this->agent->is_mobile()
Retorna TRUE/FALSE (booleano) se o user agent um dispositivo mvel conhecido.

$this->agent->is_robot()
Retorna TRUE/FALSE (booleano) se o user agent um rob conhecido. Nota: A biblioteca user agent contem apenas as denies de robs mais comuns. No uma lista completa destes. Existe centenas deles, portanto car procurando cada um deles pode no algo eciente (e prtico). Caso voc ache que algum destes robs que regularmente visitam seu site est fora da lista, adicione-o no arquivo application/cong/user_agents.php.

$this->agent->is_referral()
Retorna TRUE/FALSE (booleano) se o the user agent foi referenciado de um outro site (est vindo de algum outro site).

$this->agent->browser()
Retorna uma string que contem o nome do navegador que est visitando seu site.

$this->agent->version()
Retorna uma string que contem o nmero de verso number do navegador que est visitando seu site.

Diagramado por: edson jr - edsonthadeu@hotmail.com

95

Code Igniter Verso 1.5.2 - Guia do Usurio

$this->agent->mobile()
Retorna uma string que contem o nome do dispositivo mvel que est visitando seu site.

$this->agent->robot()
Retorna uma string que contem o nome do rob que est visitando seu site.

$this->agent->platform()
Retorna uma string que contem a platforma que est sendo usada para visitar seu site (Linux, Windows, OS X, etc.).

$this->agent->referrer()
O referrer, se o user agent est vindo de algum outro site. Normalmente voc usar esta funo da seguinte maneira: if ($this->agent->is_referral()) { echo $this->agent->referrer(); }

$this->agent->agent_string()
Retorna uma string que contem a identicao completa do user agent . Normalmente algo assim: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.4) Gecko/20060613 Camino/1.0.2

$this->agent->accept_lang()
Permite vercar se o user agent aceita um idioma particular. Exemplo: if ($this->agent->accept_lang(en)) { echo Voc suporta Ingls!; } Nota: Esta funo no muito convel isto porque alguns navegadore no provem infomao de idioma, e os que o fazem, no fornecem a informao de modo preciso.

$this->agent->accept_charset()
Permite vercar se o user agent aceita um conjunto de caracteres (charset) particular. Exemplo: if ($this->agent->accept_charset(utf-8)) { echo Seu browser suporta UTF-8!; } Nota: Esta funo no muito convel isto porque alguns navegadore no provem infomao de conjunto de caracteres, e os que o fazem, no fornecem a informao de modo preciso.

96

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Validao de Formulrio
Antes de explicar a abordagem do Code Igniters com a validao de dados, vamos descrever o cenrio ideal: 1. Um formulrio exibido. 2. Voc preenche e o submete. 3. Se voc submeteu alguma informao invlida ou esqueceu algum item obrigatrioa, o formulrio re-exibido contendo seus dados e uma mensagem de erro descrivendo o problema. 4. Este processo continuar at voc submeter um formulrio totalmente vlido. No lado de recebimento dos dados, o script deve: 1. Conferir os dados que so obrigatrios. 2. Verique que os dados so do tipo correto e correspondem, respectivamente, com os critrios corretos. (Por exemplo, se um nome de usurio submetido, ele deve ser validado de modo a conter apenas caracteres permitidos. Deve ter um nmero mnimo de caracteres e no exceder o nmero mximo. O nome de usurio no pode ser um j existente ou nem mesmo uma palavra reservada. Etc.) 3. Limpar os dados para segurana (exemplo: limpar SQL injections). 4. Pr-formatar os dados caso precise ( necessrio retirar algum espao em branco? Codicar/Encodar HTML ? Etc.) 5. Preparar os dados para insero na base de dados. Embora no haja nada de complexo no processo acima, ele frequentemetne requer um considervel nmeros de linhas de cdigo e para exibio de mensagens de erro, vrias estruturas de controle so normalmente colocadas dentro do formulrio HTML. Valdao de Formulrio, embora simples de criar, geralmente um pouco desorganizado e tedioso de implementar. Code Igniter prov uma estrutura detalhada de validao que de fato minimiza a quantidade de linhas de cdigo que voc teria de escrever. Tambm remove toda as estruturas de controle de seu HTML, permitindo que seja limpo e livre de cdigo.

Viso Geral
De modo a implementar a validao de formulrio do Code Igniter voc precisar de trs coisas: 1. Um arquivo de View contendo o formulrio. 2. Um arquivo de View contendo a mensagem de successo para ser exibida aps o formulrio ser enviado. 3. Uma funo controller para receber e processar os dados que forem submetidos pelo formulrio. Vamos criar estas trs coisas usando como exemplo um formulrio de cadastro de usurio.

O Formulrio
Usando um editor de texto, crie um formulrio chamado myform.php. Nele coloque este cdigo e salve-o na sua pasta applications/views/:

Diagramado por: edson jr - edsonthadeu@hotmail.com

97

Code Igniter Verso 1.5.2 - Guia do Usurio <html> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/validation. html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:59 GMT --> <head> <title>My Form</title> </head> <body> <?=$this->validation->error_string; ?> <?=form_open(form); ?> <h5>Usurio</h5> <input type=text name=username value= size=50 /> <h5>Senha</h5> <input type=text name=password value= size=50 /> <h5>Conrmao de Senha</h5> <input type=text name=passconf value= size=50 /> <h5>Endereo de Email</h5> <input type=text name=email value= size=50 /> <div><input type=submit value=Submit /></div> </form> </body> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/validation. html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:59 GMT --> </html>

A Pgina de Sucesso
Usando um editor de texto, crie um formulrio chamado formsuccess.php. Nele coloque este cdigo e salve-o na sua pasta applications/views/: <html> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/validation. html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:59 GMT --> <head> <title>Meu Formulrio</title> </head> <body> <h3>Seu formulrio foi enviado com sucesso!</h3> <p><?=anchor(form, Try it again!); ?></p> </body> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/validation. html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:59 GMT --> </html>

O Controller
Usando um editor de texto, crie um formulrio chamado form.php. Nele coloque este cdigo e salve-o na sua pasta applications/controllers/:

98

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio <?php class Form extends Controller { function index() { $this->load->helper(array(form, url)); $this->load->library(validation); if ($this->validation->run() == FALSE) { $this->load->view(myform); } else { $this->load->view(formsuccess); } } } ?>

Execute-o!
Para executar seu formulrio, visite seu site usando uma URL similar a esta: www.seu-site.com/index.php/form/ Se voc enviar o formulrio ver apenas ele ser recarregado. Isso porque voc ainda no congurou regras de validao, regras estas que em breve veremos.

Explanao
Voc perceber muitas coisas a respeito das pginas acima: O formulrio (myform.php) um formulrio padro, com algumas excees: 1. Ele usa um assistente de formulrio para criar a abertura do formulrio. Tecnicamente isto no necessrio. Voc poderia criar o formulrio usando um HTML padro. Entretando, o benfcio de usar um assistente que ele gera a URL de action para voc, baseado na URL em seu arquivo de congurao. Isto torna sua aplicao mais portvel e exvel na eventualidade de mudana de suas URLs. 2. No topo do formulrio voc notar a seguinte varivel: <?=$this->validation->error_string; ?> Esta varivel exibr qualquer mesagem de erro retornada pelo validador. Se no existirem mensagens, ele no retornar nada. O controller (form.php) tem uma funo: index(). Esta funo inicializa a classe de validao e carrega o assistente de formulrio e o assistente de URL usados pelos seus arquivos de view. Ela tambm executa a rotina de validao. No caso da validao ter sido bem sucedida, pode ser apresentado o formulrio ou a pgina de sucesso de envio. Partindo do pressuposto que voc no tenha dito classe de validao para validar coisa alguma ela retornar false(false booleano) por padro. A funo run() apenas retorna true se tiver aplicado suas regras com sucesso sem nenhum tipo de falha.

Congurando Regras de Validao


Code Igniter permite que voc congure quantas regras voc precisar para determinado campo, cascateando-as em ordem, e permite at mesmo que voc trate e pr-processe os datos do campo concomitantemente. Vejamos isso em ao, explicaremos isso em seguida. Diagramado por: edson jr - edsonthadeu@hotmail.com 99

Code Igniter Verso 1.5.2 - Guia do Usurio Em seu controller (form.php), adicione este cdigo logo abaixo da funo de inicializao de validao: $rules[username] = required; $rules[password] = required; $rules[passconf] = required; $rules[email] = required; $this->validation->set_rules($rules); Seu controller agora ir se parecer com algo assim: <?php class Form extends Controller { function index() { $this->load->helper(array(form, url)); $this->load->library(validation); $rules[username] = required; $rules[password] = required; $rules[passconf] = required; $rules[email] = required; $this->validation->set_rules($rules); if ($this->validation->run() == FALSE) { $this->load->view(myform); } else { $this->load->view(formsuccess); } } } ?> Agora submeta o formulrio com os campos em branco e voc dever ver a mensagem de erro. Se voc submeter o formulrio com todos os campos preenchidos, ver ento a pgina de envio com sucesso. Nota: Os campos do formulrio ainda no esto sendo re-populados com os dados quando ocorre o erro. Vamos chegar nesta parte em breve, uma vez que ainda estamos falando sobre as regras de validao.

Alterando os Delimitadores de Erro


Por padro, o sistema adiciona uma tag de pargrafo (<p>) em volta de cada mensagem de erro exibida. Voc pode facilmente alterar estes delimitadores com este cdigo, colocado em seu controller: $this->validation->set_error_delimiters(<div class=error>, </div>); Neste exemplo ns trocamos para tags DIV.

Regras em Cascata
Code Igniter permite concatenar mltiplas regras. Vamos experimentar. Altere sua array de regras para isto: $rules[username] = required|min_length[5]|max_length[12]; $rules[password] = required|matches[passconf]; $rules[passconf] = required; $rules[email] = required|valid_email; 100 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio O cdigo acima requer que: 1. O campo username no seja menor que 5 caracteres nem maior que 12. 2. O valor do campo senha(password) deve corresponder ao valor do campo de conrmao de senha (passconf ). 3. O campo email deve conter um endereo de email vlido. Experimente Nota: H muitas regras disponveis que voc pode ler sobre na referncia de validao.

Tratando os Dados
Juntamente com as funes de validao como as que usamos acima, voc tambm pode tratar seus dadoas de vrios modos. Por exemplo, voc pode congurar regras como esta: $rules[username] = trim|required|min_length[5]|max_length[12]|xss_clean; $rules[password] = trim|required|matches[passconf]|md5; $rules[passconf] = trim|required; $rules[email] = trim|required|valid_email; Acima, estamos aparando(trimming) os campos, covertendo o password para MD5, e executando o username atravs da funo xss_clean, que remove dados maliciosos. Qualquer funo nativa do PHP que aceite um parmetro pode ser usada como regra, como, por exemplo,: htmlspecialchars, trim, MD5, etc. Nota: Geralmente voc ir querer usar as funes de tratamento depois das regras de validao, pois caso exista algum erro os dados originais sero mostrados no formulrio.

Callbacks(Rechamadas): Suas prprias Funes de Validao


O sistema de validao suporta callbacks(rechamadas) para suas prprias funes de validao. Isto permite que voc extenda a classe de validao para suas necessidades. Por exemplo, se voc precisa executar uma query no banco de dados para ver se o usurio escolheu um nome de usurio(username) nico, voc pode criar uma funo de callback que faa isso. Vamos criar um exemplo simples. Em seu controller, altere a regra de username para isto: $rules[username] = callback_username_check; Ento adicone uma nova funo chamada username_check ao seu controller. Aqui est como deve car seu controller: <?php class Form extends Controller { function index() { $this->load->helper(array(form, url)); $this->load->library(validation); $rules[username] = callback_username_check; $rules[password] = required; $rules[passconf] = required; $rules[email] = required; $this->validation->set_rules($rules); if ($this->validation->run() == FALSE) { $this->load->view(myform); } Diagramado por: edson jr - edsonthadeu@hotmail.com 101

Code Igniter Verso 1.5.2 - Guia do Usurio else { } }

$this->load->view(formsuccess);

function username_check($str) { if ($str == test) { $this->validation->set_message(username_check, The %s eld can not be the word test); return FALSE; } else { return TRUE; } } } ?> Recarregue seu formulrio e submeta a palavra test como Nome de usurio(username). Voc pode ver que os dados do campo do formulrio foram passados a sua funo de callback(rechamada) para voc processar. Para chamar um callback apenas coloque o nome da funo em uma regra com callback_ como prexo da regra. A mensagem de erro foi congurada usando a funo $this->validation->set_message. Lembre-se que a chave da mensagem (o primeiro parmetro) deve coincidir com o nome de sua funo. Nota: Voc pode aplicar suas prprias mensagens de erros personalizadas a qualquer regra, apenas congurando a mensagem similarmente. Por exemplo, para alterar a mensagem para a regra required (obrigatrio) voc far isto: $this->validation->set_message(required, Your custom message here);

Re-populando o formulrio
At aqui estivemos apenas lidando com erros . Chegou a hora de repopular os campos do formulrio com os dados enviados. Isto feito similarmente s regras. Adicione o seguinte cdigo a seu controller, logo abaixo de suas regras: $elds[username] = Nome de usurio; $elds[password] = Senha; $elds[passconf] = Conrmao de Senha; $elds[email] = Endereo de Email; $this->validation->set_elds($elds); As chaves do array so os nomes atuais dos campos do formulrio, o valor representa o nome completo que voc quer mostrar na mensagem de erro. A funo index de seu controller ir se parecer com algo assim:

102

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio function index() { $this->load->helper(array(form, url)); $this->load->library(validation); $rules[username] = required; $rules[password] = required; $rules[passconf] = required; $rules[email] = required; $this->validation->set_rules($rules); $elds[username] = Username; $elds[password] = Password; $elds[passconf] = Password Conrmation; $elds[email] = Email Address; $this->validation->set_elds($elds); if ($this->validation->run() == FALSE) { $this->load->view(myform); } else { $this->load->view(formsuccess); } } Agora abra seu arquivo de view myform.php e atualize o valor em cada campo de modo que cada um tenha um objeto correspondente a seu nome: <html> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/validation. html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:59 GMT --> <head> <title>My Form</title> </head> <body> <?=$this->validation->error_string; ?> <?=form_open(form); ?> <h5>Nome de usurio</h5> <input type=text name=username value=<?=$this->validation->username;?> size=50 /> <h5>Senha</h5> <input type=text name=password value=<?=$this->validation->password;?> size=50 /> <h5>Conrmao de Senha</h5> <input type=text name=passconf value=<?=$this->validation->passconf;?> size=50 /> <h5>Endereo de Email</h5> <input type=text name=email value=<?=$this->validation->email;?> size=50 /> <div><input type=submit value=Submit /></div> </form> </body> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/libraries/validation. html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 19:59:59 GMT --> </html> Agora recarregue sua pgina e envie o formulrio de modo que isso ir disparar um erro. Seu formulrio dever estar populado e as mensagens de erro contero um nome de campo mais relevante. Diagramado por: edson jr - edsonthadeu@hotmail.com 103

Code Igniter Verso 1.5.2 - Guia do Usurio

Exibindo Erros Individualmente


Se voc preferir mostrar uma mensagem de erro prxima a cada campo do formulrio, ao invs de uma lista, voc pode alterar seu formulrio de modo que ele que parecido com algo assim: <h5>Nome de usurio</h5> <?=$this->validation->username_error; ?> <input type=text name=username value=<?=$this->validation->username;?> size=50 /> <h5>Senha</h5> <?=$this->validation->password_error; ?> <input type=text name=password value=<?=$this->validation->password;?> size=50 /> <h5>Conrmao de Senha</h5> <?=$this->validation->passconf_error; ?> <input type=text name=passconf value=<?=$this->validation->passconf;?> size=50 /> <h5>Endereo de Email</h5> <?=$this->validation->email_error; ?> <input type=text name=email value=<?=$this->validation->email;?> size=50 /> Se no houverem erros, nada ser mostrado. Se houver um erro, a mensagem aparecer dentro dos delimitadores que voc congurou (tag <p> por padro). Nota: Para exibir erros desta maneira voc deve lembrar de congurar seus campos usando a funo$this>validation->set_elds descrita anteriormente. Os erros sero transformados em variveis que tenham _error aps o nome do seu campo. Por exemplo , seu erro para username estar disponvel em: $this->validation->username_error.

Referncia de Regras
O que segue uma lista de todas as regras nativas que esto disponveis para uso:
Regra required matches min_length max_length exact_length alpha alpha_numeric alpha_dash numeric valid_email valid_ip Parmetro No Sim Sim Sim Sim No No No No No No descrio Retorna FALSE se o elemento do formulrio estiver vazio. Retorna FALSE se o elemento do formulrio no corresponder com o matches[form_ elemento no parmetro. item] Retorna FALSE se o elemento do formulrio for mais curto/menor que o min_length[6] valor do parmetro. Retorna FALSE se o elemento do formulrio for mais longo/maior que o max_length[12] valor do parmetro. Retorna FALSE se o elemento do formulrio no for exatamente igual ao exact_length[8] valor do parmetro. Retorna FALSE se o elemento do formulrio contiver alguma outra coisa que no sejam caracteres alfabticos(letras). Retorna FALSE se o elemento do formulrio contiver alguma outra coisa que no sejam caracteres alfanumricos. Retorna FALSE se o elemento do formulrio contiver alguma outra coisa que no sejam caracteres alfanumricos, underscores ou traos(hfen). Retorna FALSE se o elemento do formulrio contiver alguma outra coisa que no sejam caracteres numricos(nmeros). Retorna FALSE se o elemento do formulrio no contiver um endereo de email vlido. Retorna FALSE se o IP fornecido no for vlido. Exemplo

104

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Nota: Estas regras tambm podem ser chamadas atravs de funes discretas. Por exemplo: $this->validation->required($string); Nota: Voc tambm pode usar quaisquer funes nativa do PHP que permitam um parmetro.

Referncia de Tratamento de Dados


O que segue uma lista de todas as funes de tratamento que esto disponveis para uso:
Nome xss_clean prep_for_form prep_url strip_image_tags encode_php_ tags Parmetro No No No No No descrio Executa os dados atravs da funo de ltragem XSS, descrita na pgina Classe Input. Converte caracteres especiais de modo que dados HTML pode ser mostrados em um campo de formulrio sem quebr-lo. Adiciona http:// s URLs caso no tenham. Retira o cdigo HTML das tags de imagem deixando apenas a URL bruta de endereo da mesma. Converte tags PHP em entities.

Nota: Voc tambm pode usar quaisquer funes nativa do PHP que permitam um parmetro, comotrim, htmlspecialchars, urldecode, etc.

Congurando Mensagens de Erros Personalizadas


Todas as mensagens de erro esto localizadas no seguinte arquivo de idioma: language/english/validation_ lang.php Para congurar sua prpria mensagem personalizada voc pode: ou editar esse arquivo ou usar a seguinte funo: $this->validation->set_message(regra, Mensagem de Erro); Onde regra corresponde ao nome de uma regra particular, e Mensagem de Erro o texto que dever ser exibido.

Tratando com Menus Select, Radio Buttons e Checkboxes


Se voc usa menus select, radio buttons or checkboxes, ir, ento, querer que o estado destes itens seja guardado quando ocorrer um erro. A classe Validao tem trs funes que o auxiliam a fazer isto:

set_select()
Permite que voc exiba o item do menu que foi selecionado. O primeiro parmetro deve conter o nome do menu select, o segundo parmetro deve conter o valor de cada item. Exemplo: <select name=meuselect> <option value=um <?= $this->validation->set_select(meuselect, um); ?> >Um</option> <option value=dois <?= $this->validation->set_select(meuselect, dois); ?> >Dois</option> <option value=tres <?= $this->validation->set_select(meuselect, tres); ?> >Trs</option> </select>

set_checkbox()
Permite que voc exiba um checkbox no estado em que foi enviado. O primeiro parmetro deve conter o nome do checkbox, o segundo parmetro deve conter seu valor. Exemplo: <input type=checkbox name=meucheck checkbox(meucheck, 1); ?> /> value=1 <?= $this->validation->set_

Diagramado por: edson jr - edsonthadeu@hotmail.com

105

Code Igniter Verso 1.5.2 - Guia do Usurio

set_radio()
Permite que voc exiba radio buttons no estado em que forem enviados. O primeiro parmetro deve conter o nome do radio button, o segundo parmetro deve conter seu valor. Exemplo: <input type=radio name=meuradio value=1 <?= $this->validation->set_radio(meuradio, 1); ?> />

Classes XML-RPC e Servidor de XML-RPC


As classes de XML-RPC do Code Igniter permitem que voc envie requisies a outro servidor, ou congurar seu prprio servidor de XML-RPC para receber requisies.

O que XML-RPC?
Simplesmente um modo de dois computadores comunicarem-se pela internet usando XML. Um computador, que chamaremos de de cliente, envia uma requisio XML-RPC a outro computadore, que chamaremos de servidor. Uma vez que o servidore receba e processe a requisio ele enviar de volta uma resposta ao cliente. Por exemplo, usando a API MetaWeblog, um Cliente XML-RPC (normalmente uma ferramenta de desktop publishing) enviar uma requisio para um Servidor XML-RPC rodando em seu site. Esta requisio poderia ser uma nova postagem de um weblog sendo enviada para publicao, ou poderia ser uma requisio de uma postagem editada. Quando o Servidor XML-RPC recebe esta requisio ele o examinar para determinar qual classe/mtodo deve ser chamado para processar esta requisio. Uma vez processada, o servidor enviar de volta uma mensagem de resposta. Para especicaes detalhadas, visite o site XML-RPC.

Inicializando a Classe
Assim como a maioria das classe no Code Igniter, as classes XML-RPC e XML-RPCS so inicializadas em seu controller usando a funo $this->load->library: Para carregar a classe XML-RPC voc usar: $this->load->library(xmlrpc); Uma vez carregado, o objeto biblioteca xml-rpc estar disponvel usando: $this->xmlrpc Para carregar a classe Servidor de XML-RPC voc usar: $this->load->library(xmlrpc); $this->load->library(xmlrpcs); Uma vez carregado, o objeto biblioteca xml-rpcs estar disponvel usando: $this->xmlrpcs Nota: Ao usar a classe Servidor de XML-RPC voc deve carregar tanto a classe XML-RPC quanto a classe Servidor de XML-RPC.

Enviando Requisies XML-RPC


Para enviar uma solicitao a um servidor XML-RPC voc deve especicar os seguintes dados: - O URL do servidor - O mtodo no servidor que voc deseja chamar -A solicitao de dados (explicado abaixo). Aqui est um exemplo bsico que envia uma simples Weblogs.com ping para o Ping-o-Matic 106 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio $this->load->library(xmlrpc); $this->xmlrpc->server(http://rpc.pingomatic.com/, 80); $this->xmlrpc->method(weblogUpdates.ping); $request = array(My Photoblog, http://www.my-site.com/photoblog/); $this->xmlrpc->request($request); if ( ! $this->xmlrpc->send_request()) { echo $xmlrpc->display_error(); } Explicao O cdigo acima inicializa o XML-RPC aula, conjuntos URL do servidor eo mtodo a ser chamado (weblogUpdates.ping). O pedido (neste caso, o ttulo eo URL de seu site) colocada em uma matriz de transporte, e compilado com o pedido () funo. Por ltimo, o pedido enviado completo. Se o send_ request () retorna falso mtodo que ir exibir a mensagem de erro foi enviado de volta a partir do XML-RPC Server.

Anatomia de uma Solicitao


Uma solicitao XML-RPC simplesmente o que voc est enviando os dados para o servidor XML-RPC. Cada pedao de dados no mbito de um pedido se refere a um pedido como parmetro. O exemplo acima tem dois parmetros: o ttulo eo URL do seu site. Quando o servidor XML-RPC recebe o seu pedido, ele ir procurar por parmetros necessrios. Pedido parmetros devem ser colocados em uma matriz de transporte, e cada parmetro pode ser um dos sete tipos de dados (strings, nmeros, datas, etc.) Se os seus parmetros so algo diferente de cordas voc ter que incluir o tipo de dados no pedido array. Aqui est um exemplo simples de um array com trs parmetros: $request = array(John, Doe, www.some-site.com); $this->xmlrpc->request($request); Se voc usar outros tipos de dados do que cordas, ou se voc tiver vrios tipos de dados, voc ir colocar cada um dos parmetros para a sua prpria matriz, com o tipo de dados na segunda posio: $request = array ( array(John, string), array(Doe, string), array(FALSE, boolean), array(12345, int) ); $this->xmlrpc->request($request); A seco abaixo os tipos de dados tem um lista completa de tipos de dados.

Criando um XML-RPC Server


Um XML-RPC Server funciona como uma espcie de polcia de trfego, espera de receber os pedidos e reorientando-os para as funes para tratamento adequado. Para criar o seu prprio XML-RPC envolve inicializao do servidor XML-RPC Server classe em seu controlador quando voc espera que o prximo pedido para aparecer, ento, que cria um array com mapeamento instrues, para que receber os pedidos podem ser enviados para a classe eo mtodo adequado para Diagramado por: edson jr - edsonthadeu@hotmail.com 107

Code Igniter Verso 1.5.2 - Guia do Usurio processamento. Aqui est um exemplo para ilustrar: $this->load->library(xmlrpcs); $this->load->library(xmlrpcs); $cong[functions][new_post]; = array(function => My_blog.new_entry); $cong[functions][update_post] = array(function => My_blog.update_entry); $this->xmlrpcs->initialize($cong); $this->xmlrpcs->serve(); O exemplo acima contm um array especicando dois pedidos mtodo permite que o servidor. Os mtodos so permitidas no lado esquerdo da matriz. Quando um desses dois so recebidos, eles sero mapeados para a classe e mtodo do lado direito. Em outras palavras, se um cliente XML-RPC envia um pedido para que a new_post mtodo, o servidor ir carregar o My_blog classe e chamar a new_entry funo. Se o pedido para o update_post mtodo, o servidor ir carregar o My_blog classe e chamar a update_entry funo. A funo nomes no exemplo acima, so arbitrrios. Voc vai decidir o que deve ser chamado em seu servidor, ou se voc estiver usando APIs padronizado, como o Blogger ou MetaWeblog API, voc vai usar os seus nomes de funo.

Processamento servidor pedidos


Quando o XML-RPC Server receba um pedido e carrega a classe / mtodo de tratamento, ele ir passar um objeto para que o mtodo que contm os dados enviados pelo cliente. Usando o exemplo acima, se o mtodo new_post solicitado, o servidor ir esperar uma classe de existir com este prottipo: class My_blog extends Controller { function new_post($request) { } }

A varivel $request um objeto compilado pelo servidor, que contm os dados enviados pelo cliente XML-RPC. Usando esse objeto, voc ter acesso ao pedido parmetros para que voc possa processar o pedido. Quando tiver concludo ir enviar uma resposta de volta para o Cliente. Abaixo est um exemplo do mundo real, utilizando o Blogger API. Um dos mtodos, no Blogger API getUserInfo (). Usando esse mtodo, um XML-RPC Client Server pode enviar a um nome de usurio e senha, em contrapartida o servidor envia de volta informaes sobre o usurio especial (apelido, ID do usurio, endereo de e-mail, etc.) Aqui est a forma como a funo de transformao possa parecer:

108

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio class My_blog extends Controller { function getUserInfo($request) { $username = smitty; $password = secretsmittypass; $this->load->library(xmlrpc); $parameters = $request->output_parameters(); if ($parameters[1] != $username AND $parameters[2] != $password) { return $this->xmlrpc->send_error_message(100, Invalid Access); } $response = array(array(nickname => array(Smitty,string), userid => array(99,string), url => array(http://yoursite.com,string), email => array(jsmith@yoursite.com,string), lastname => array(Smith,string), rstname => array(John,string) ), struct); } $this->xmlrpc->send_response($response);

Notas: O output_parameters () recupera uma funo array indexada corresponde ao pedido parmetros enviados pelo cliente. No exemplo acima, os parmetros de sada ser o nome de usurio e senha. Se o nome de usurio ea senha enviada pelo cliente no eram vlidas, ea mensagem de erro retornado usando send_error_message (). Se a operao foi bem sucedida, o cliente ser enviada de volta uma resposta array contendo as informaes do usurio.

Formatar uma Resposta


Semelhante aos pedidos, respostas devem ser formatado como um array. No entanto, ao contrrio de pedidos, a resposta uma matriz que contenha um nico item. Este item pode ser um array com vrios outros arranjos, mas s pode haver um ndice primrio array. Em outras palavras, o prottipo bsica esta: $ pedido = array ( Response dados, array ); As respostas, no entanto, costumam conter vrias peas de informao. A m de realizar esta tarefa que temos de colocar a resposta em sua prpria matriz de modo a que a principal matriz continua a conter uma nica pea de dados. Aqui est um exemplo que mostra a forma como esta poder ser realizada:

Diagramado por: edson jr - edsonthadeu@hotmail.com

109

Code Igniter Verso 1.5.2 - Guia do Usurio $request = array ( array( rst_name => array(John, string), last_name => array(Doe, string), member_id => array(123435, int), todo_list => array(array(clean house, call mom, water plants), array), ), struct ); Note que a matriz acima formatado como uma struct. Este o tipo mais comum de dados para as respostas. Tal como acontece com Pedidos, pode ser uma resposta a uma das sete tipos de dados listados na seo de tipos de dados.

Enviando uma resposta de erro


Se voc precisar enviar ao cliente um erro resposta que voc ir usar o seguinte: regressar $ this-> xmlrpc-> send_error_message (123 , dados solicitados no esto disponveis); O primeiro parmetro o nmero de erro enquanto o segundo parmetro a mensagem de erro.

Criar o seu prprio cliente e servidor

Para ajud-lo a entender tudo o que tenha coberto at agora, vamos criar uma jovem controladores que atuam como XML-RPC cliente e servidor. Voc vai usar o Cliente para enviar uma solicitao para o servidor e receber uma resposta.

O Cliente
Usando um editor de texto, crie um controlador chamado xmlrpc_client.php. Nele, colocar esse cdigo e guarde-o para seus aplicativos / controladores / pasta: <?php class Xmlrpc_client extends Controller { function index() { $this->load->helper(url); $server_url = site_url(xmlrpc_server); $this->load->library(xmlrpc); $this->xmlrpc->server($server_url, 80); $this->xmlrpc->method(Greetings); $request = array(How is it going?); $this->xmlrpc->request($request); if ( ! $this->xmlrpc->send_request()) { echo $this->xmlrpc->display_error(); } else { echo <pre>; print_r($this->xmlrpc->display_response()); echo </pre>; } } } ?> 110 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Nota: No cdigo acima estamos a usar um ajudante url. Voc pode encontrar mais informaes na pgina Funes Auxiliares.

O Servidor
Usando um editor de texto, crie um controlador chamado xmlrpc_server.php. Nele, colocar esse cdigo e guarde-o para seus aplicativos / controladores / pasta: <?php class Xmlrpc_server extends Controller { function index() { $this->load->library(xmlrpc); $this->load->library(xmlrpcs); $cong[functions][Greetings] = array(function => Xmlrpc_server.process); $this->xmlrpcs->initialize($cong); $this->xmlrpcs->serve(); } function process($request) { $parameters = $request->output_parameters(); $response = array( array( you_said => $parameters[0], i_respond => Not bad at all.), struct); return $this->xmlrpc->send_response($response); } } ?> Experimente! Agora, visite o seu site usando uma URL semelhante a esta: www.your-site.com/index.php/xmlrpc_client/ Agora voc deve ver a mensagem que voc enviou para o servidor, e sua resposta de volta para voc. O cliente envia uma mensagem que voc criou ( Como vai se passa?) Para o servidor, junto com um reqest para o Saudaes mtodo. O servidor recebe o pedido e mapas-a ao processo funo, no caso de a resposta enviada de volta.

XML-RPC funo referncia


$this->xmlrpc->server() Dene o URL e o nmero da porta do servidor para o qual um pedido est a ser enviada: $this->xmlrpc->server(http://www.sometimes.com/pings.php, 80);

$this->xmlrpc->timeout()
Dena um tempo de descanso perodo (em segundos) aps o qual o pedido ser cancelado: $ this-> xmlrpc-> timeout (6);

Diagramado por: edson jr - edsonthadeu@hotmail.com

111

Code Igniter Verso 1.5.2 - Guia do Usurio

$this->xmlrpc->method()
Dene o mtodo que ser solicitada a partir do servidor XML-RPC: $ this-> xmlrpc-> mtodo ( mtodo); Quando mtodo o nome do mtodo.

$ this-> xmlrpc-> pedido ()


Toma um conjunto de dados e constri pedido para ser enviada ao servidor XML-RPC: $request = array(array(My Photoblog, string), http://www.yoursite.com/photoblog/); $this->xmlrpc->request($request);

$ this-> xmlrpc-> send_request ()


O pedido enviando funo. Retorna boolean TRUE ou FALSE baseada no sucesso para a falha, permitindo que seja usado condicionalmente.

$ this-> xmlrpc-> set_debug (TRUE);


Habilita depurao, que ir mostrar uma variedade de informaes e dados teis erro durante o desenvolvimento.

$ this-> xmlrpc-> display_error ()


Retorna uma mensagem de erro como uma string caso o seu pedido falhou por algum motivo. echo $ this-> xmlrpc-> display_error ();

$ this-> xmlrpc-> display_response ()


Retorna a resposta do servidor remoto uma vez pedido recebido. A resposta vai ser tipicamente um array associativo. $ this-> xmlrpc-> display_response ();

$ this-> xmlrpc-> send_error_message ()


Essa funo permite que voc envie uma mensagem de erro do seu servidor para o cliente. Primeiro parmetro o nmero de erro enquanto o segundo parmetro a mensagem de erro. return $this->xmlrpc->send_error_message(123, Requested data not available);

$ this-> xmlrpc-> send_response ()


Permite-lhe enviar a resposta do seu servidor para o cliente. Uma matriz de valores vlidos dados devem ser enviados com esse mtodo. $response = array( array( error => array(FALSE, boolean), message => Thanks for the ping!) ) struct); return $this->xmlrpc->send_response($response);

112

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Tipos de Dados
De acordo com a especicao XML-RPC, existem sete tipos de valores que poder ser enviado via XMLRPC: - int or i4 - boolean - string - double - dateTime.iso8601 - base64 - struct (contains array of values) - array (contains array of values)

Classe codicao ZIP


Cdigo Igniter a classe Codicao Zip permitem que voc crie arquivos Zip. Arquivos podem ser baixados para o seu desktop ou gravados em um diretrio.

Inicializao da classe
Tal como a maioria dos outros ramos do Cdigo Igniter, o CEP em sua classe inicializado utilizando o controlador $ this-> load-> biblioteca funo: $this->load->library(zip); Uma vez carregado, o objeto Zip biblioteca estar disponvel usando: $ this-> zip

Exemplo de uso
Este exemplo demonstra como a comprimir um cheiro, guarde-o para uma pasta no seu servidor, e baixlo para o seu desktop. $name = mydata1.txt; $data = A Data String!; $this->zip->add_data($name, $data); // Write the zip le to a folder on your server. Name it my_backup.zip $this->zip->archive(/path/to/directory/my_backup.zip); // Download the le to your desktop. Name it my_backup.zip $this->zip->download(my_backup.zip);

Function Reference
$this->zip->add_data()
Permite-lhe adicionar os dados para o arquivo Zip. O primeiro parmetro deve conter o nome que voc gostaria dado ao processo, o segundo parmetro deve conter os dados do arquivo como uma string: $name = my_bio.txt; $data = I was born in an elevator...; $this->zip->add_data($name, $data); Diagramado por: edson jr - edsonthadeu@hotmail.com 113

Code Igniter Verso 1.5.2 - Guia do Usurio Voc permitido vrias chamadas para esta funo, a m de acrescentar vrios cheiros para o seu arquivo. Exemplo: $name = mydata1.txt; $data = A Data String!; $this->zip->add_data($name, $data); $name = mydata2.txt; $data = Another Data String!; $this->zip->add_data($name, $data); Ou voc pode passar vrios arquivos usando um array: $data = array( mydata1.txt => A Data String!, mydata2.txt => Another Data String! ); $this->zip->add_data($data); $this->zip->download(my_backup.zip); Se voc gostaria que seu comprimido dados organizados em sub-pastas, incluir o caminho como parte do nome de arquivo: $name = personal/my_bio.txt; $data = I was born in an elevator...; $this->zip->add_data($name, $data); O exemplo acima my_bio.txt ter lugar dentro de uma pasta chamada pessoal.

$ this-> zip-> add_dir ()


Permite-lhe adicionar um diretrio. Normalmente esta funo desnecessria uma vez que voc pode colocar os seus dados em pastas quando utiliza $ this-> zip-> add_data (), mas se voc gostaria de criar uma pasta vazia voc pode faz-lo. Exemplo: $ this-> zip-> add_dir ( myfolder); / / Cria uma pasta chamada myfolder

$ this-> zip-> read_le ()


Permite que voc comprima um arquivo que j existe algum lugar no seu servidor. Abastecimento um caminho de arquivo zip e da turma vai l-lo e adicion-lo ao arquivo: $path = /path/to/photo.jpg; $this->zip->read_le($path); // Download the le to your desktop. Name it my_backup.zip $this->zip->download(my_backup.zip); Se voc quiser o arquivo Zip para manter a estrutura de diretrios de arquivos est em, passar TRUE (boolean) no segundo parmetro. Exemplo:

114

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio $path = /path/to/photo.jpg; $this->zip->read_le($path, TRUE); // Download the le to your desktop. Name it my_backup.zip $this->zip->download(my_backup.zip); No exemplo acima, photo.jpg sero colocadas dentro de duas pastas: path/to/

$ this-> zip-> read_dir ()


Permite que voc comprima uma pasta (eo seu contedo) que j existe algum lugar no seu servidor. Abastecimento um caminho de arquivo para o diretrio e da classe zip ir recursivamente l-lo e recri-la como um arquivo Zip. Todos os arquivos contidos dentro do caminho ser fornecido codica, como se qualquer sub-pastas contidas dentro dela. Exemplo: $path = /path/to/your/directory/; $this->zip->read_dir($path); // Download the le to your desktop. Name it my_backup.zip $this->zip->download(my_backup.zip);

$ this-> zip-> archive ()


Escreve o arquivo Zip-codicado para um diretrio em seu servidor. Enviar um servidor vlido caminho que termina no nome do arquivo. Verique se o diretrio gravvel (666 ou 777 normalmente OK). Exemplo: $this->zip->archive(/path/to/folder/myarchive.zip); / / Cria um arquivo chamado myarchive.zip

$ this-> zip-> download ()


Faz com que o arquivo Zip para ser transferido para o seu servidor. A funo deve ser passado o nome que voc gostaria que o arquivo zip chamado. Exemplo: $ this-> zip-> download ( latest_stu.zip); / / arquivo ser nomeado latest_stu.zip Nota: No exibir quaisquer dados no mbito do controlador em que voc chamar esta funo, uma vez que envia vrias servidor cabealhos que causam o download do arquivo de acontecer e de ser tratado como binrio.

$ this-> zip-> get_zip ()

$name = my_bio.txt; $data = I was born in an elevator...; $this->zip->add_data($name, $data); $zip_le = $this->zip->get_zip();

Diagramado por: edson jr - edsonthadeu@hotmail.com

115

Code Igniter Verso 1.5.2 - Guia do Usurio

$ this-> zip-> clear_data ()


O Zip classe caches seu zip dados para que ele no precisa de recompilar o arquivo Zip para cada funo que voc usa acima. Se, no entanto, necessrio criar mltiplas Fecha, cada um com dados diferentes, voc pode limpar a cache entre chamadas. Exemplo: $name = my_bio.txt; $data = I was born in an elevator...; $this->zip->add_data($name, $data); $zip_le = $this->zip->get_zip(); $this->zip->clear_data(); $name = photo.jpg; $this->zip->read_le(/path/to/photo.jpg); // Read the les contents $this->zip->download(myphotos.zip);

116

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Classe banco de dados


Cdigo Igniter vem com uma full-featured e muito rpido captadas classe base que suporta tanto as estruturas tradicionais e Active Record padres. A base de dados oferecem funes claras, simples de sintaxe.

Banco de Dados incio: exemplo de cdigo


A pgina seguinte contm exemplo de cdigo mostrando como a base de dados classe usada. Para maiores detalhes leia as pginas individuais descrevendo cada funo.

Inicializando a classe banco de dados


O cdigo a seguir carrega e inicia o banco de dados baseados em sua classe conguraes: $this->load->database(); Uma vez carregada a classe est pronto para ser usado como descrito abaixo. Nota: Se todas as suas pginas requerem acesso banco de dados voc pode se conectar automaticamente. Veja a pgina ligar para mais detalhes.

Standard query com vrios resultados (verso Object)


$query = $this->db->query(SELECT name, title, email FROM my_table); foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->email; } echo Total Results: . $query->num_rows(); O resultado acima result() retorna um array de objetos. Exemplo: $ row-> ttle

Standard query com vrios resultados (verso Array)


$query = $this->db->query(SELECT name, title, email FROM my_table); foreach ($query->result_array() as $row) { echo $row[title]; echo $row[name]; echo $row[email]; } O acima result_array() funo retorna um array de array padro ndices. Exemplo: $row [ ttle]

Testes de Resultados
Se voc executar consultas que no poderia produzir um resultado, voc incentivado a ensaio para um resultado usando o primeiro num_rows () Funo:

Diagramado por: edson jr - edsonthadeu@hotmail.com

117

Code Igniter Verso 1.5.2 - Guia do Usurio $query = $this->db->query(YOUR QUERY); if ($query->num_rows() > 0) { foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->body; } }

Standard Query com o nico resultado


$query = $this->db->query(SELECT name FROM my_table LIMIT 1); $row = $query->row(); echo $row->name; A funo row() retorna um objeto. Exemplo: $ row-> name

Com o nico resultado Standard Query (verso Array)


$query = $this->db->query(SELECT name FROM my_table LIMIT 1); $row = $query->row_array(); echo $row->[name]; O acima row_array () funo retorna um array. Exemplo: $ row-> [ name]

Inserir Standard
$sql = INSERT INTO mytable (title, name) VALUES (.$this->db->escape($title)., .$this->db->escape($name).); $this->db->query($sql); echo $this->db->aected_rows();

Active Record Query


O Active Record Padro d-lhe uma simplicao dos meios de recuperar dados: $query = $this->db->get(table_name); foreach ($query->result() as $row) { echo $row->title; } O acima get () recupera todas as funo dos resultados a partir da tabela fornecida. O Active Record classe contm um elogio completo de funes para trabalhar com os dados.

118

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Active Record inserir


$data = array( title => $title, name => $name, date => $date ); $this->db->insert(mytable, $data); // Produces: INSERT INTO mytable (title, name, date) VALUES ({$title}, {$name}, {$date})

Congurao de banco de dados


Cdigo Igniter tem um cheiro de congurao que permite que voc armazene seu banco de dados conexo valores (nome de usurio, senha, nome de dados, etc.) O arquivo de congurao est localizado em: application/cong/database.php As denies de congurao so armazenadas em um array multi-dimensional com este prottipo: $db[default][hostname] = localhost; $db[default][username] = root; $db[default][password] = ; $db[default][database] = database_name; $db[default][dbdriver] = mysql; $db[default][dbprex] = ; $db[default][pconnect] = TRUE; $db[default][db_debug] = FALSE; $db[default][active_r] = TRUE; A razo para utilizar um array multi-dimensional, em vez de uma maneira mais simples a de permitir que voc opcionalmente armazenar vrios conjuntos de ligao valores. Se, por exemplo, voc executar mltiplos ambientes (desenvolvimento, produo, testes, etc) ao abrigo de uma nica instalao, voc pode congurar uma conexo para cada grupo e, em seguida, alternar entre os grupos, conforme necessrio. Por exemplo, a criao de um teste ambiente que voc pode fazer isso: $db[test][hostname] = localhost; $db[test][username] = root; $db[test][password] = ; $db[test][database] = database_name; $db[test][dbdriver] = mysql; $db[test][dbprex] = ; $db[test][pconnect] = TRUE; $db[test][db_debug] = FALSE; $db[test][active_r] = TRUE; Em seguida, para o sistema globalmente dizer que a utilizao grupo, voc poder criar essa varivel localizada no cheiro de congurao: active_group $ = test; Nota: O nome teste arbitrrio. Pode ser o que quiser. Por padro temos usado a palavra padro para a conexo primria, mas ela tambm pode ser renomeado para algo mais relevante para o seu projeto. Diagramado por: edson jr - edsonthadeu@hotmail.com 119

Code Igniter Verso 1.5.2 - Guia do Usurio

Explicao de Valores:
hostname - O nome do host do seu banco de dados. Muitas vezes isto localhost. username - O nome de usurio usado para conectar ao banco de dados. password - A senha usada para conectar ao banco de dados. database - O nome do banco de dados que deseja ligar. dbdriver - A base de dados tipo. ou seja: mysql, POSTGRE, obdc, etc devem ser especicados em minsculas. dbprex - Uma mesa opcional prexo que ser adicionado ao nome da tabela quando correr Active Record buscas. Isto permite mltiplas Cdigo Igniter instalaes de partilhar uma base de dados. pconnect - verdadeiro / falso (boolean) - a possibilidade de utilizar uma conexo persistente. db_debug - verdadeiro / falso (boolean) - Quer erros de dados deve ser exibido. active_r - verdadeiro / falso (boolean) - Quer a carga do Active Record Class. Se voc no estiver usando o registro ativo classe voc pode ter se omitido quando o banco de dados aulas so inicializadas a m de utilizar menos recursos. port - A base de dados nmero da porta. Actualmente, apenas utilizado com o POSTGRE condutor. Nota: Dependendo do que voc est usando plataforma de dados (MySQL, POSTGRE, etc) todos os valores no sero necessrios. Por exemplo, quando se utilizam SQLite no ser necessrio fornecer um nome de usurio ou senha, eo nome do banco de dados ser o caminho para o seu arquivo de dados. As informaes acima assume que voc est usando o MySQL.

Conectando a sua base de dados


Existem duas formas de se conectar a um banco de dados:

Ligar automaticamente
O auto conectar recurso ir carregar e exemplicam a base de dados com todas as pginas classe carga. Para ativar a auto conexo, adicionar a palavra banco de dados para o ncleo array, como indicado na seguinte arquivo: application/cong/autoload.php

Conectar manualmente
Se apenas algumas das suas pginas requerem conectividade de dados manualmente voc pode conectar ao seu banco de dados atravs da adio desta linha de cdigo em qualquer funo onde ela necessria, ou em sua classe construtor de tornar a base de dados disponvel a nvel mundial em que a classe. $ this-> load-> database (); Se a funo acima no contm qualquer informao no primeiro parmetro ele ir conectar-se ao grupo em seu banco de dados especicado o arquivo de congurao. Para a maioria das pessoas, este o mtodo preferido de uso. O primeiro parmetro desta funo pode opcionalmente ser utilizado para especicar um grupo particular de dados a partir do seu arquivo cong, ou voc pode at apresentar valores para a conexo de uma base de dados que no est especicado em seu arquivo de congurao. Exemplos: Para escolher um grupo especco de seu arquivo cong voc pode fazer isto: $ this-> load-> database ( group_name);

120

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Quando group_name o nome da conexo de seu grupo arquivo de congurao. Para conectar manualmente para um banco de dados desejados voc pode passar um conjunto de valores: $cong[hostname] = localhost; $cong[username] = myusername; $cong[password] = mypassword; $cong[database] = mydatabase; $cong[dbdriver] = mysql; $cong[dbprex] = ; $cong[pconnect] = FALSE; $cong[db_debug] = TRUE; $cong[active_r] = TRUE; $this->load->database($cong); Para obter informaes sobre cada um desses valores, por favor veja a pgina de congurao. Ou voc pode enviar sua base de dados valores como uma fonte de dados Nome. DSNs devem ter este prottipo: $dsn = dbdriver://username:password@hostname/database; $this->load->database($dsn); Note que se voc usar um DSN que voc no ser capaz de indicar alguns dos valores padro como voc pode se usar uma conexo array.

Conectando-se a mltiplas bases de dados


Se voc precisa se conectar a mais do que um banco de dados em simultneo, pode faz-lo do seguinte modo: $DB1 = $this->load->database(group_one, TRUE); $DB2 = $this->load->database(group_two, TRUE); Nota: Alterar as palavras group_one e group_two para o grupo especco que voc est se conectando a nomes (ou voc pode passar a ligao valores como indicado acima). Ao denir o segundo parmetro para TRUE (boolean) a funo ir retornar o banco de dados objeto. Quando voc ligar, desta forma, voc ir usar o seu nome ao objeto emitir comandos mais do que a sintaxe usada durante todo este guia. Em outras palavras, em vez de emitir comandos: $this->db->query(); $this->db->result(); etc... You will instead use: $DB1->query(); $DB1->result(); etc...

Diagramado por: edson jr - edsonthadeu@hotmail.com

121

Code Igniter Verso 1.5.2 - Guia do Usurio

Query
$ this-> db-> query ();
Para enviar uma consulta, use as seguintes funes: $ this-> db-> query ( a sua consulta AQUI ); A funo query() retorna um banco de dados objeto resultado quando a ler tipo buscas so feitas, que voc pode usar para mostrar seus resultados. Quando escrever tipo buscas so feitas simplesmente retorna true ou false dependendo do xito ou fracasso. Ao recuperar os dados que voc normalmente atribuir a consulta para a sua prpria varivel, como este: $ query = $ this-> db-> query ( a sua consulta AQUI );

$ this-> db-> simple_query ();


Esta uma verso simplicada da funo $this-> db-> query (). Ele s retorna verdadeiro / falso, sobre o sucesso ou fracasso. No retorna um banco de dados resultado conjunto, nem denir o temporizador consulta, ou vincular compilar dados, ou guardar a sua consulta para depurao. Ela simplesmente permitelhe enviar uma consulta. A maioria dos usurios raramente utilize esta funo.

Escape de Consultas
uma boa prtica de segurana para escapar os seus dados antes de envi-lo em seu banco de dados. Cdigo Igniter tem duas funes que ajudam voc a fazer isso: $ this-> db-> escape () Esta funo determina o tipo de dados para que possa escapar apenas string dados. Ele tambm adiciona automaticamente aspas simples em torno dos dados, para que voc no tem que: $sql = INSERT INTO table (title) VALUES(.$this->db->escape($title).); $ this-> db-> escape_str () Esta funo escapa os dados passaram a ela, independentemente do tipo. A maior parte do tempo voc vai usar a funo acima esta um pouco depois. Use a funo desta forma: $sql = INSERT INTO table (title) VALUES(.$this->db->escape_str($title).);

Query Ligaes
Bindings permitem-lhe simplicar a sua consulta sintaxe ao deixar o sistema de colocar a consultas entre si para si. Considere o seguinte exemplo: $sql = SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?; $this->db->query($sql, array(3, live, Rick)); Os pontos de interrogao na consulta so substitudos automaticamente com os valores na tabela, no segundo parmetro da funo Consulta. O benefcio da utilizao da liga secundria que os valores so automaticamente escapou, produzindo mais segura buscas. Voc no tem que se lembrar de manualmente escapar dados; que que o motor automaticamente para voc.

122

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Gerando Resultados de Uma Query


Existem vrias formas de gerar resultados query:

Result ()
Esta funo retorna a consulta como resultado de uma srie de objetos, ou um array vazio em fracasso. Normalmente voc vai usar isso em um loop foreach, como este: $query = $this->db->query(YOUR QUERY); foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->body; } A funo acima um apelido de result_object (). Se voc executar consultas que no poderia produzir um resultado, voc incentivado a testar o primeiro resultado: $query = $this->db->query(YOUR QUERY); if ($query->num_rows() > 0) { foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->body; } }

result_array()
Esta funo retorna o resultado como uma pura query array, ou FALSE em fracasso. Normalmente voc vai usar isso em um loop foreach, como este: $query = $this->db->query(YOUR QUERY); foreach ($query->result_array() as $row) { echo $row[title]; echo $row[name]; echo $row[body]; }

row()
Esta funo retorna um nico resultado row. Se a sua consulta tem mais de uma linha, ele retorna apenas a primeira row. O resultado retornado como um objeto. Aqui est um exemplo de utilizao:

Diagramado por: edson jr - edsonthadeu@hotmail.com

123

Code Igniter Verso 1.5.2 - Guia do Usurio $query = $this->db->query(YOUR QUERY); if ($query->num_rows() > 0) { $row = $query->row(); echo $row->title; echo $row->name; echo $row->body;

Se voc quiser uma linha especca retornou voc pode enviar a linha nmero como um dgito no primeiro parmetro: $row = $query->row(5);

row_array ()
Idntico ao da linha acima (), exceto que retorna um array. Exemplo: $query = $this->db->query(YOUR QUERY); if ($query->num_rows() > 0) { $row = $query->row_array(); echo $row[title]; echo $row[name]; echo $row[body];

Se voc quiser uma linha especca retornou voc pode enviar a linha nmero como um dgito no primeiro parmetro: $row = $query->row_array(5); Alm disso, voc pode andar forward/backwards/rst/last atravs de seus resultados usando estas variaes: $row = $query->rst_row() $row = $query->last_row() $row = $query->next_row() $row = $query->previous_row() Por padro ela retornar um objeto a menos que voc coloque a palavra array no parmetro: $row = $query->rst_row(array) $row = $query->last_row(array) $row = $query->next_row(array) $row = $query->previous_row(array)

124

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Resultado Helper funes


$ query-> num_rows ()
O nmero de linhas retornadas pela consulta. Nota: Neste exemplo, $ query a varivel que a consulta resultado atribudo ao objeto: $query = $this->db->query(SELECT * FROM my_table); echo $query->num_rows();

$ query-> num_elds ()
O nmero de campos (columns) retornado pela consulta. Certique-se de chamar a funo utilizando a sua consulta resultar objeto: $query = $this->db->query(SELECT * FROM my_table); echo $query->num_elds();

$ query-> free_result ()
Ela libera a memria associada com o resultado e suprime o resultado dos recursos ID. Normalmente PHP libera sua memria automaticamente no nal do script execuo. No entanto, se voc estiver executando uma srie de consultas, em particular um script voc pode querer libertar o resultado depois de cada consulta resultado foi gerado, a m de reduzir os consumos de memria. Exemplo: $query = $this->db->query(SELECT title FROM my_table); foreach ($query->result() as $row) { echo $row->title; } $query->free_result(); // The $query result object will no longer be available $query2 = $this->db->query(SELECT name FROM some_table); $row = $query2->row(); echo $row->name; $query2->free_result(); // The $query2 result object will no longer be available

Query Helper funes


$ this-> db-> insert_id ()
O nmero de ID de inserir dados no desempenho insere.

$ this-> db-> aected_rows ()


Mostra o nmero de linhas afetadas, quando fazendo escrever tipo queries (inserir, atualizar, etc.) Nota: No MySQL DELETE FROM TABLE retorna 0 linhas afectadas. A base de dados classe tem um pequeno truque que lhe permite voltar a correcta do nmero de linhas afetadas. Por padro esse truque est ativado, mas ele pode ser desligado no banco de dados condutor arquivo.

$ this-> db-> count_all ();


Permite-lhe determinar o nmero de linhas em uma determinada tabela. Enviar o nome da tabela no Diagramado por: edson jr - edsonthadeu@hotmail.com 125

Code Igniter Verso 1.5.2 - Guia do Usurio primeiro parmetro. Exemplo: echo $this->db->count_all(my_table); // Produces an integer, like 25

$ this-> db-> platform ()


Sadas a base de dados plataforma que est sendo executada (MySQL, MS SQL, POSTGRE, etc ..): echo $this->db->platform();

$this->db->version()
Sadas a base de dados verso que voc est executando: echo $this->db->version();

$this->db->last_query();
Retorna a ltima consulta que foi executado (a string de consulta, e no o resultado). Exemplo: $str = $this->db->last_query(); // Produces: SELECT * FROM sometable.... Os dois seguintes funes ajudam a simplicar o processo de escrita de dados inseres e atualizaes.

$this->db->insert_string();
Esta funo simplica o processo de escrita insero de dados. Ele retorna uma string inserir SQL formatado corretamente. Exemplo: $data = array(name => $name, email => $email, url => $url); $str = $this->db->insert_string(table_name, $data); O primeiro parmetro o nome da tabela, o segundo um array associativo com os dados que devem ser inseridos. O exemplo acima produz: INSERT INTO table_name (name, email, url) VALUES (Rick, rick@your-site.com, www.your-site. com) Nota: Os valores so automaticamente escapou, produzindo mais segura buscas.

$this->db->update_string();
Esta funo simplica o processo de escrita database updates. Ele retorna uma string atualizao SQL formatado corretamente. Exemplo: $data = array(name => $name, email => $email, url => $url); $where = author_id = 1 AND status = active; $str = $this->db->update_string(table_name, $data, $where); O primeiro parmetro o nome tabela, o segundo um array associativo com os dados que devem ser inseridos, eo terceiro parmetro o onde clusula. O exemplo acima produz: UPDATE exp_weblog SET name = Rick, email = rick@your-site.com, url = www.your-site.com WHERE author_id = 1 AND status = active Nota: Os valores so automaticamente escapou, produzindo mais segura buscas. 126 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Active Record classe


Cdigo Igniter usa uma verso modicada do Active Record Database Padro. Este padro permite a informao a ser recuperada, inserido, e atualizados em seu banco de dados com o mnimo de scripting. Em alguns casos, apenas uma ou duas linhas de cdigo so necessrios para a execuo de uma base de dados aco. Cdigo Igniter no exige que cada banco de dados ser o seu prprio quadro classe arquivo. invs fornece uma interface mais simplicada. Para alm simplicidade, um grande benefcio para a utilizao do Active Record caractersticas que ele permite que voc crie banco de dados independente aplicaes, desde a consulta sintaxe gerada por cada banco de dados adaptador. Permite tambm mais seguro para consultas, uma vez que os valores so escapou automaticamente pelo sistema. Nota: Se voc tem a inteno de escrever as suas prprias consultas voc pode desativar esta classe em seu banco de dados cong arquivo, permitindo que o banco central biblioteca e adaptador para utilizar menos recursos.

Selecting Data
As seguintes funes permitem que voc crie SQL SELECT declaraes. Nota: Se voc estiver usando o PHP 5 voc pode utilizar o mtodo de encadeamento mais compacto sintaxe. Esta situao descrita no nal da pgina.

$ this-> db-> get ();


Executada a seleco de consulta e retorna o resultado. Pode ser usado por si s para recuperar todos os registros de uma tabela: $query = $this->db->get(mytable); // Produces: SELECT * FROM mytable O segundo e terceiro parmetros permitir que voc faz xar um limite e oset clusula: $query = $this->db->get(mytable, 10, 20); // Produces: SELECT * FROM mytable LIMIT 20, 10 (in MySQL. Other databases have slightly dierent syntax) Voc ver que o que precede funo atribuda a uma varivel chamada $ query, que pode ser usada para mostrar os resultados: $query = $this->db->get(mytable); foreach ($query->result() as $row) { echo $row->title; } Por favor, visite a pgina de funes resultado de uma ampla discusso quanto resultado gerao.

$this->db->getwhere();
Idntico ao da funo acima exceto que ela permite que voc adicione um where clusula no segundo parmetro, em vez de usar o db-> where () Funo: $ query = $ this-> db-> getwhere ( mytable, array (id => $ id), US $ limite de US $ oset); Por favor leia sobre o caso da funo abaixo para obter mais informaes. Diagramado por: edson jr - edsonthadeu@hotmail.com 127

Code Igniter Verso 1.5.2 - Guia do Usurio

$this->db->select();
Permite-lhe escrever o SELECT poro de sua consulta: $this->db->select(title, content, date); $query = $this->db->get(mytable); // Produces: SELECT title, content, date FROM mytable Nota: Se voc estiver selecionando todos (*) a partir de uma tabela que voc no precisa usar esta funo. Quando omitido, Cdigo Igniter assume que voc deseja SELECT *

$this->db->from();
Permite-lhe escrever a partir poro de sua consulta: $this->db->select(title, content, date); $this->db->from(mytable); $query = $this->db->get(); // Produces: SELECT title, content, date FROM mytable Nota: Tal como demonstrado anteriormente, a partir poro de sua consulta pode ser especicado no $this-> db-> get (), ento use independentemente do mtodo que preferir.

$ this-> db-> join ();


Permite-lhe escrever o JOIN poro de sua consulta: $this->db->select(*); $this->db->from(blogs); $this->db->join(comments, comments.id = blogs.id); $query = $this->db->get(); // Produces: // SELECT * FROM blogs // JOIN comments ON comments.id = blogs.id Mltipla funo chamadas podem ser feitas se voc precisa de vrios junta em uma consulta. Se voc precisar de alguma coisa que no um natural JOIN voc pode especic-lo atravs do terceiro parmetro da funo. As opes so: esquerda, direita, exterior, interior, exterior esquerda, direita e exterior. $this->db->join(comments, comments.id = blogs.id, left); // Produces: LEFT JOIN comments ON comments.id = blogs.id

$ this-> db-> where ();


Essa funo permite que voc dena clusulas WHERE utilizando uma das quatro modalidades: Nota: Todos os valores passados para essa funo so escapou automaticamente, produzindo mais segura buscas. 1. Simple chave / valor patrimonial (Simple key/value method): $this->db->where(name, $name); // Produces: WHERE name = Joe Repare que a igualdade de sinal adicionado para voc.

128

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Se voc usar mltiplas funes que sero chamadas encadeada juntamente AND entre eles: $this->db->where(name, $name); $this->db->where(title, $title); $this->db->where(status, $status); // WHERE = Joe AND title = boss AND status = active 2. Custom chave / valor patrimonial (Custom key/value method): Voc pode incluir um operador no primeiro parmetro, a m de controlar a comparao: $this->db->where(name !=, $name); $this->db->where(id <, $id); // Produces: WHERE name != Joe AND id < 45 3. Array associativo mtodo (Associative array method): $array = array(name => $name, title => $title, status => $status); $this->db->where($array); // Produces: WHERE name = Joe AND title = boss AND status = active Voc pode incluir seus prprios operadores que utilizam este mtodo tambm: $array = array(name != => $name, id < => $id, date > => $date); $this->db->where($array); 4. Custom texto (Custom string): Voc pode escrever as suas prprias clusulas manualmente: $where = name=Joe AND status=boss OR status=active; $this->db->where($where);

$ this-> db-> orwhere ();


Esta funo idntica anterior, excepto as vrias instncias esto ligadas por OR: $this->db->where(name !=, $name); $this->db->orwhere(id >, $id); // Produces: WHERE name != Joe OR id > 50

$this->db->like();
Essa funo permite-lhe gerar LIKE clusulas, til para fazer pesquisas. Nota: Todos os valores passados para essa funo so automaticamente escapou. 1. Simple chave / valor patrimonial (Simple key/value method): $this->db->like(title, $match); // Produces: WHERE title LIKE %match% Se voc usar mltiplas funes que sero chamadas encadeada juntamente AND entre eles:: $this->db->like(title, $match); $this->db->like(body, $match); // WHERE title LIKE %match% AND body LIKE %match%

Diagramado por: edson jr - edsonthadeu@hotmail.com

129

Code Igniter Verso 1.5.2 - Guia do Usurio 2. Array associativo mtodo (Associative array method): $array = array(title => $match, page1 => $match, page2 => $match); $this->db->like($array); // WHERE title LIKE %match% AND page1 LIKE %match% AND page2 LIKE %match%

$ this-> db-> orlike ();


Esta funo idntica anterior, excepto as vrias instncias esto ligadas por OR: $this->db->like(title, $match); $this->db->orlike(body, $match); // WHERE title LIKE %match% OR body LIKE %match%

$this->db->groupby();
Permite-lhe escrever o GROUP BY poro de sua consulta: $this->db->groupby(title); // Produces: GROUP BY title Voc tambm pode passar uma matriz de mltiplos valores to bem: $this->db->groupby(array(title, date); // Produces: GROUP BY title, date

$this->db->having();
Permite-lhe escrever o HAVING poro de sua consulta: $this->db->having(user_id = 45); // Produces: HAVING user_id = 45 Voc tambm pode passar uma matriz de mltiplos valores to bem: $this->db->having(array(title = => My Title, id < => $id)); // Produces: HAVING title = My Title, id < 45

$this->db->orderby();
Permite-lhe denir uma clusula ORDER BY. O primeiro parmetro contm o nome da coluna que voc gostaria de por m. O segundo parmetro permite-lhe denir o rumo do resultado. As opes so asc ou desc ou RAND (). $this->db->orderby(title, desc); // Produces: ORDER BY title DESC Voc tambm pode passar a sua prpria string no primeiro parmetro: $this->db->orderby(title desc, name asc); // Produces: ORDER BY title DESC, name ASC

$this->db->limit();
Permite limitar o nmero de linhas que voc gostaria retornado pela consulta: $this->db->limit(10); // Produces: LIMIT 10 O segundo parmetro permite que voc dena um resultado compensado. $this->db->limit(10, 20); // Produces: LIMIT 20, 10 (in MySQL. Other databases have slightly dierent syntax)

130

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

$ this-> db-> count_all ();


Permite-lhe determinar o nmero de linhas em uma determinada tabela. Enviar o nome da tabela no primeiro parmetro. Exemplo: echo $this->db->count_all(my_table); // Produces an integer, like 25

Inserting Data $this->db->insert();


Gera inserir uma string com base nos dados que voc fornecer, e executa a consulta. Voc pode passar um array ou um objeto para a funo. Aqui est um exemplo usando um array: $data = array( title => My title , name => My Name , date => My date ); $this->db->insert(mytable, $data); // Produces: INSERT INTO mytable (title, name, date) VALUES (My title, My name, My date) O primeiro parmetro ir conter o nome da tabela, o segundo um array associativo de valores. Aqui est um exemplo usando um objeto: /* class Myclass { var $title = My Title; var $content = My Content; var $date = My Date; }

*/ $object = new Myclass; $this->db->insert(mytable, $object); // Produces: INSERT INTO mytable (title, content, date) VALUES (My Title, My Content, My Date) O primeiro parmetro ir conter o nome da tabela, o segundo um array associativo de valores. Nota: Todos os valores so automaticamente escapou produzindo mais segura buscas.

$this->db->set();
Esta funo lhe permite denir valores para inseres ou atualizaes. Pode ser usado em vez de passar um array dados diretamente para a inserir ou atualizar funes: $this->db->set(name, $name); $this->db->insert(mytable); // Produces: INSERT INTO mytable (name) VALUES ({$name}) Se voc usar vrios funo chamada eles sero montados corretamente baseada em saber se voc est fazendo uma insero ou de uma actualizao: $this->db->set(name, $name); $this->db->set(title, $title); $this->db->set(status, $status); $this->db->insert(mytable); Diagramado por: edson jr - edsonthadeu@hotmail.com 131

Code Igniter Verso 1.5.2 - Guia do Usurio Voc tambm pode passar um array associativo para esta funo: $array = array(name => $name, title => $title, status => $status); $this->db->set($array); $this->db->insert(mytable); Ou um objeto: /* class Myclass { var $title = My Title; var $content = My Content; var $date = My Date; } */ $object = new Myclass; $this->db->set($object); $this->db->insert(mytable);

Updating Data $this->db->update();


Gera uma atualizao string e roda a consulta na base de dados que voc fornecer. Voc pode passar um array ou um objeto para a funo. Aqui est um exemplo usando um array: $data = array( title => $title, name => $name, date => $date ); $this->db->where(id, $id); $this->db->update(mytable, $data); // Produces: // UPDATE mytable // SET title = {$title}, name = {$name}, date = {$date} // WHERE id = $id Ou voc pode fornecer uma objeto: /* class Myclass { var $title = My Title; var $content = My Content; var $date = My Date; } */ $object = new Myclass; $this->db->where(id, $id); $this->db->update(mytable, $object); // Produces: // UPDATE mytable // SET title = {$title}, name = {$name}, date = {$date} // WHERE id = $id Nota: Todos os valores so automaticamente escapou produzindo mais segura buscas.

132

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Voc pode observar a utilizao dos $this-> db-> where (), permitindo-lhe denir o WHERE. Voc pode opcionalmente passar essas informaes diretamente na atualizao funcionar como uma string: $this->db->update(mytable, $data, id = 4); Ou como um array: $this->db->update(mytable, $data, array(id => $id)); Voc tambm pode usar o $this-> db-> set () funo acima descrito quando realizar atualizaes.

Deleting Data $this->db->delete();


Gera uma string SQL apagar e executa a consulta. $this->db->delete(mytable, array(id => $id)); // Produces: // DELETE FROM mytable // WHERE id = $id O primeiro parmetro o nome da tabela, onde a segunda a clusula. Voc tambm pode usar the where() or orwhere() funciona em vez de cruzar os dados para o segundo parmetro da funo: $this->db->where(id, $id); $this->db->delete(mytable); // Produces: // DELETE FROM mytable // WHERE id = $id Nota: Todos os valores so automaticamente escapou produzindo mais segura buscas.

Mtodo encadeamento (Method Chaining)


Mtodo de encadeamento lhe permite simplicar sua sintaxe, ligando vrias funes. Considere este exemplo: $this->db->select(title)->from(mytable)->where(id, $id)->limit(10, 20); $query = $this->db->get(); Nota: Mtodo encadeamento s funciona com o PHP 5.

Diagramado por: edson jr - edsonthadeu@hotmail.com

133

Code Igniter Verso 1.5.2 - Guia do Usurio

Transaes (Transactions)
Cdigo Igniter banco de dados do abstrao permite a voc usar transaes com bases de dados que suportam a operao segura tabela tipos. No MySQL, voc precisa estar executando InnoDB ou BDB sim, ento a tabela tipos mais comuns MyISAM. A maior parte das outras plataformas apoiar operaes de dados nativa. Se voc no est familiarizado com operaes recomendamos que voc encontrar um bom recurso online para aprender sobre eles para o seu banco de dados particular. As informaes a seguir assume que voc tenha um entendimento bsico de operaes.

Cdigo Igniter a abordagem da Transaes


Cdigo Igniter utiliza uma abordagem de transaes que muito semelhante ao processo utilizado pela classe ADODB base popular. Temos que a abordagem escolhida, uma vez que simplica muito o processo de executar operaes. Na maioria dos casos, tudo o que exigido so duas linhas de cdigo. Tradicionalmente, as operaes tm exigido um nmero razovel de trabalho para implementar uma vez que exigem que voc se manter a par das suas consultas e determinar se a cometer ou repetir a basear-se o sucesso ou o fracasso de suas buscas. Isto particularmente pesado com nested queries. Em contrapartida, temos implementado um sistema inteligente transaco que que isto automaticamente para voc (voc tambm pode gerenciar suas transaes se voc optar por manualmente, mas h realmente nenhuma vantagem).

Executando Transaes
Para executar suas consultas usando transaes que voc ir usar o $this->db->trans_start() e $this->db>trans_complete() funciona como segue: $this->db->trans_start(); $this->db->query(AN SQL QUERY...); $this->db->query(ANOTHER QUERY...); $this->db->query(AND YET ANOTHER QUERY...); $this->db->trans_complete(); Voc pode executar tantas as perguntas que voc quer entre o incio / funes completas e eles sero todos empenhados ou retirada baseado em sucesso ou fracasso de uma determinada consulta.

Gerenciando Erros
Se voc tiver ativado em seu relato erro cong / database.php arquivo que voc ver uma mensagem de erro se a norma cometer foi vencida. Se depurao desligado, voc pode gerenciar seus prprios erros como este: $this->db->trans_start(); $this->db->query(AN SQL QUERY...); $this->db->query(ANOTHER QUERY...); $this->db->trans_complete(); if ($this->db->trans_status() === FALSE) { // generate an error... or use the log_message() function to log your error }

134

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

A ativao Transaes
As transaces so ativadas automaticamente o momento em que voc usar $ this-> db-> trans_start (). Se voc quiser desativar transaes voc pode fazer isso usando $ this-> db-> trans_o (): $this->db->trans_o() $this->db->trans_start(); $this->db->query(AN SQL QUERY...); $this->db->trans_complete(); Quando as transaces so decientes, as suas questes sero auto-commited, como j acontece quando executando consultas sem transaes.

Modo de teste
Voc pode opcionalmente colocar o sistema em operao Modo de teste, o que far com que suas consultas para ser retirada - mesmo que as consultas produzir um resultado vlido. Para usar o modo teste basta denir o primeiro parmetro no $ this-> db-> trans_start () a funo TRUE: $this->db->trans_start(TRUE); // Query will be rolled back $this->db->query(AN SQL QUERY...); $this->db->trans_complete();

Executando transaes manualmente


Se voc gostaria de executar operaes manualmente voc pode faz-lo do seguinte modo: $this->db->trans_begin(); $this->db->query(AN SQL QUERY...); $this->db->query(ANOTHER QUERY...); $this->db->query(AND YET ANOTHER QUERY...); if ($this->db->trans_status() === FALSE) { $this->db->trans_rollback(); } else { $this->db->trans_commit(); } Nota: Certique-se de usar $ this-> db-> trans_begin () quando estiver executando transaes manual, e NO $ this-> db-> trans_start ().

Campo de dados (Field Data)


$ this-> db-> list_elds ()
Retorna uma matriz contendo os nomes campo. Essa consulta pode ser chamado duas maneiras: 1. Voc poder fornecer o nome da tabela e cham-lo a partir de US $ this-> db-> object: $elds = $this->db->list_elds(table_name) foreach ($elds as $eld) { echo $eld; } Diagramado por: edson jr - edsonthadeu@hotmail.com 135

Code Igniter Verso 1.5.2 - Guia do Usurio 2. Voc pode recolher o campo nomes associados com qualquer dvida que correm ao chamar a funo de sua consulta resultar objeto: $query = $this->db->query(SELECT * FROM some_table) foreach ($query->list_elds() as $eld) { echo $eld; }

$this-> db-> eld_exists ()


Algumas vezes til saber se existe um campo particular antes de executar uma ao. Retorna um boolean verdadeiro / falso. Uso exemplo: if ($this->db->eld_exists(eld_name, table_name)) { // some code... } Nota: Substitua eld_name com o nome da coluna que voc est procurando, e substituir table_name com o nome da tabela que voc est procurando.

$ this-> db-> eld_data ()


Retorna um array de objetos contendo informaes campo. Algumas vezes til para reunir o campo nomes ou outros metadados, como a coluna tipo, comprimento mximo, etc Nota: Nem todos os bancos de dados fornecem meta-dados. Uso exemplo: $elds = $this->db->eld_data(table_name) foreach ($elds as $eld) { echo $eld->name; echo $eld->type; echo $eld->max_length; echo $eld->primary_key; } Se voc tiver executado uma consulta j pode utilizar o resultado objeto em vez de fornecer o nome da tabela: $query = $this->db->query(YOUR QUERY) $elds = $query->eld_data() Os dados a seguir est disponvel a partir desta funo se for suportada pelo seu banco de dados: name - coluna nome max_length - tamanho mximo da coluna primary_key - 1 se a coluna uma chave primria type - o tipo da coluna

136

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Funo convites personalizados (Custom Function Calls):


$this-> db-> call_function ();
Essa funo permite que voc faa chamadas de dados PHP funes que no esto includas no Cdigo nativamente Igniter, uma plataforma de forma independente. Por exemplo, permite armar que pretende chamar a mysql_get_client_info (), o que no apoiado pelo Cdigo Igniter nativamente. Voc poderia faz-lo desta forma: $ this-> db-> call_function ( get_client_info); Voc deve fornecer o nome da funo, sem o prexo mysql_, no primeiro parmetro. O prexo adicionado automaticamente com base em dados motorista que est sendo usada. Isto permite-lhe executar a mesma funo em diferentes plataformas de dados. evidente que nem todas as funes chamadas so idnticos entre plataformas, por isso existem limites forma como esta funo pode ser til em termos de portabilidade. Quaisquer parmetros necessrios pela funo que est a ligar ser acrescentado ao segundo parmetro. $ this-> db-> call_function ( some_function, $ param1, $ param2, etc.); Muitas vezes, voc quer necessidade de abastecer um banco de dados ou ligao ID resultado de uma base de dados ID. A ligao pode ser acessado utilizando ID: $ this-> db-> conn_id; O resultado ID podem ser acessados a partir de objeto dentro do seu resultado, como este: $query = $this->db->query(SOME QUERY); $query->result_id;

Database Utility Class


O Banco de dados Utility Class contm funes que ajudam a gerenciar sua base de dados.

Inicializando o utilitrio de classe


Importante: Para inicializar o utilitrio classe, seu banco de dados condutor devem ser j em execuo, uma vez que os utilitrios classe baseia-lo.

Coloque o Utilitrio classe como segue:


$ this-> load-> dbutil () Uma vez que voc ter inicializado utilizando o acesso a funes $ this-> dbutil objeto: $ this-> dbutil-> some_function ()

$ this-> dbutil-> create_database ( db_name)


Permite-lhe criar o banco de dados especicada no primeiro parmetro. Retorna verdadeiro / falso baseado no sucesso ou falha: if ($this->dbutil->create_database(my_db)) { echo Database created!; }

Diagramado por: edson jr - edsonthadeu@hotmail.com

137

Code Igniter Verso 1.5.2 - Guia do Usurio

$ this-> dbutil-> drop_database ( db_name)


Permite-lhe a queda da base de dados especicada no primeiro parmetro. Retorna verdadeiro / falso baseado no sucesso ou falha: if ($this->dbutil->drop_database(my_db)) { echo Database deleted!; }

$ this-> dbutil-> list_databases ()


Retorna uma matriz de nomes de dados: $dbs = $this->dbutil->list_databases(); foreach($dbs as $db) { echo $db; }

$ this-> dbutil-> optimize_table ( table_name);


Nota: Este caractersticas est disponvel apenas para MySQL / MySQLi bases de dados. Permite-lhe para otimizar uma tabela utilizando o nome da tabela especicada no primeiro parmetro. Retorna verdadeiro / falso baseado no sucesso ou fracasso: if ($this->dbutil->optimize_table(table_name)) { echo Success!; } Nota: Nem todas as plataformas de dados apoio tabela otimizao.

$ this-> dbutil-> repair_table ( table_name);


Nota: Este caractersticas est disponvel apenas para MySQL / MySQLi bases de dados. Permite que voc reparar uma tabela utilizando o nome da tabela especicada no primeiro parmetro. Retorna verdadeiro / falso baseado no sucesso ou falha: if ($this->dbutil->repair_table(table_name)) { echo Success!; } Nota: Nem todas as plataformas de dados apoio tabela reparos.

$ this-> dbutil-> optimize_database ();


Nota: Este caractersticas est disponvel apenas para MySQL / MySQLi bases de dados. Permite que voc otimize o seu banco de dados DB est actualmente ligado classe. Retorna uma matriz contendo o status DB mensagens ou FALSE em falha. $result = $this->dbutil->optimize_database(); if ($result !== FALSE) { print_r($result); } 138 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Nota: Nem todas as plataformas de dados apoio tabela otimizao. $ this-> dbutil-> csv_from_result ($db_result) Permite a voc gerar um arquivo CSV a partir de uma consulta resultado. O primeiro parmetro da funo deve conter o resultado objeto de sua consulta. Exemplo: $this->load->dbutil(); $query = $this->db->query(SELECT * FROM mytable); echo $this->dbutil->csv_from_result($query); O segundo e terceiro parmetros permite que voc dena o delimitador e newline caracteres. Por padro guias so utilizados como o delimitador e \ n utilizada como uma nova linha. Exemplo: $delimiter = ,; $newline = \r\n; echo $this->dbutil->csv_from_result($query, $delimiter, $newline); Importante: Esta funo no gravar o arquivo para voc. Ela simplesmente cria o layout CSV. Se voc precisa para gravar o arquivo utilizar o File Helper.

$ this-> dbutil-> xml_from_result ($db_result)


Permite a voc gerar um arquivo XML a partir de uma consulta resultado. O primeiro parmetro espera uma consulta objeto resultado, o segundo pode conter uma variedade de conguraes opcionais parmetros. Exemplo: $this->load->dbutil(); $query = $this->db->query(SELECT * FROM mytable); $cong = array ( root => root, element => element, newline => \n, tab => \t ); echo $this->dbutil->xml_from_result($query, $cong); Importante: Esta funo no gravar o arquivo XML para voc. Ela simplesmente cria o esquema XML. Se voc precisa para gravar o arquivo utilizar o File Helper.

$ this-> dbutil-> backup ()


Permite-lhe fazer backup completo banco de dados ou tabelas individuais. O backup de dados pode ser comprimido em zip ou qualquer formato GZIP. Nota: Este caractersticas est disponvel apenas para MySQL / MySQLi bases de dados. Nota: Devido ao tempo limitado execuo e de memria disponvel para o PHP, apoiando-se muito grandes bases de dados podem no ser possvel. Se a sua base de dados muito grande pode precisar de backup diretamente do seu servidor SQL atravs da linha de comando, ou que tenham o seu servidor admin fazer isso para voc se voc no tem privilgios root. Exemplo de uso: / / Carregue o utilitrio classe DB $this->load->dbutil(); / / Backup todo o seu banco de dados e associ-lo a uma varivel $backup =& $this->dbutil->backup(); / / Carga do arquivo helper e escrever o arquivo para o servidor $this->load->helper(le); Diagramado por: edson jr - edsonthadeu@hotmail.com 139

Code Igniter Verso 1.5.2 - Guia do Usurio write_le(/path/to/mybackup.gz, $backup); / / Carregue o download ajudante e enviar o arquivo para o seu desktop $this->load->helper(download); force_download(mybackup.gz, $backup);

Denir preferncias de backup


So estabelecidas atravs da apresentao de uma srie de valores para o primeiro parmetro da funo de backup. Exemplo: $prefs = array( tables => array(table1, table2), // Array of tables to backup. ignore => array(), // List of tables to omit from the backup format => txt, // gzip, zip, txt lename => mybackup.sql, // File name - NEEDED ONLY WITH ZIP FILES add_drop => TRUE, // Whether to add DROP TABLE statements to backup le add_insert => TRUE, // Whether to add INSERT data to backup le newline => \n // Newline character used in backup le ); $this->dbutil->backup($prefs);

Descrio das Preferncias de backup


Valor Default tables ignore format lename add_drop add_insert newline empty array empty array gzip the current date/time TRUE TRUE \n Opes None None gzip, zip, txt None TRUE/FALSE TRUE/FALSE Descrio Uma srie de tabelas que voc quer cpia de segurana. Se for deixado em branco todas as mesmas sero exportados. Uma srie de tabelas que voc deseja que a rotina de backup para ignorar. O formato do arquivo de exportao do arquivo. O nome da backups de arquivo. O nome necessria apenas se voc estiver usando compresso zip. Seja para incluir declaraes DROP TABLE em seu arquivo SQL exportao. Se a incluir em suas declaraes INSERT SQL exportao arquivo.

\n, \r, \r\n Tipo de newline para uso em seu arquivo SQL exportao.

140

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Classe Database caching


O Banco de dados permite que voc cashing Classe cache suas buscas de arquivos como texto base reduzida carga. Importante: Esta categoria inicializado automaticamente pelo banco de dados quando caching condutor est habilitado. No ative esta classe manualmente. Alm disso, note: Nem todas as funes resultado consulta esto disponveis quando voc usa caching. Por favor, leia atentamente esta pgina.

A ativao cashing
Caching ativado em trs etapas: - Crie um diretrio gravvel em seu servidor onde o cache cheiros podem ser armazenados. - Dena o caminho para o seu esconderijo em sua aplicao pasta / cong / database.php arquivo. - Ativar cache do recurso, quer a nvel global atravs da denio de preferncia na sua candidatura / cong / database.php arquivo, ou manualmente, como descrito a seguir. Uma vez ativado, caching ir acontecer automaticamente sempre que uma pgina carregada que contm banco de dados SQL.

Como o cache funciona?


Cdigo Igniters query caching sistema dinamicamente acontece quando as suas pginas so visualizadas. Quando cache est ativado, a primeira vez que uma pgina da Web carregada, resultado da consulta ser objecto serializada e armazenadas em um arquivo de texto em seu servidor. A prxima vez que a pgina carregado o arquivo de cache ser usado em vez de acessar seu banco de dados. Seu banco de dados de utilizao podem efetivamente ser reduzida a zero para quaisquer pginas que foram armazenadas na memria cache. Apenas leia-tipo (SELECT) as consultas podem ser armazenadas em cache, uma vez que estas so o nico tipo de consultas que produzem um resultado. Escreva-tipo (INSERT, UPDATE, etc) as consultas, uma vez que eles no geram um resultado, no ser armazenada pelo sistema. Cache cheiros no expiram. Todas as consultas que foram em cache ir permanecer armazenadas at voc exclu-los. O sistema permite que voc caching claro caches associados a pginas individuais, ou voc pode apagar todo o cache coleo de arquivos. Normalmente voc vai usar a casa para funes descritas a seguir para apagar arquivos cache aps certos eventos ocorrem, como quando voc adicionar novas informaes ao seu banco de dados.

Caching ir melhorar o desempenho do seu site?


Conseguir um desempenho ganho como resultado de caching depende de muitos fatores. Se voc tem um banco de dados altamente otimizado com muito pouca carga, voc provavelmente no ir ver um desempenho impulso. Se seu banco de dados est em uso pesado voc provavelmente ver uma melhor resposta, assumindo o seu sistema de arquivos no excessivamente tributado. Lembre-se que caching simplesmente muda o modo como suas informaes so recuperadas, deslocando-lo a partir de uma base de dados a ser uma operao de um sistema de arquivos. Em alguns ambientes agregadas servidor, por exemplo, caching pode ser prejudicial ao sistema de arquivo desde as operaes so to intensa. A nica servidores em ambientes compartilhados, caching provavelmente ser benco. Infelizmente, no existe uma nica resposta para a questo de saber se voc deve cache do banco de dados. realmente depende da sua situao.

Diagramado por: edson jr - edsonthadeu@hotmail.com

141

Code Igniter Verso 1.5.2 - Guia do Usurio

Como so Cache arquivos armazenados?


Cdigo Igniter coloca o resultado de cada consulta em seu prprio arquivo de cache. Conjuntos de cache de arquivos so mais organizados em sub-pastas correspondentes s suas funes controlador. Para ser preciso, a sub-pastas com nomes idnticos para os dois primeiros segmentos do seu URI (o controlador classe nome e funo nome). Por exemplo, digamos que voc tem um blog chamado controlador com uma funo chamada comentrios que contm trs buscas. O cache vai criar um sistema de cache pasta chamada blog + comentrios, em que ele ir escrever trs cache arquivos. Se voc usar consultas que mudar dinmico baseado nas informaes de seu URI (quando se utiliza paginao, por exemplo), cada instncia da consulta ir produzir o seu prprio arquivo de cache. possvel, portanto, para acabar com cache muitas vezes mais do que arquivos voc tem buscas.

Gerenciando o cache arquivos


Desde cache cheiros no termina, voc precisa construir supresso rotinas em sua candidatura. Por exemplo, digamos que voc tem um blog que permite que os usurios comentando. Sempre que for apresentado um novo comentrio que voc quer apagar a memria cache arquivos associados com o controlador funo que serve o seu comentrio. Voc encontrar duas funes descritas abaixo excluir que o ajudam a limpar os dados.

Nem todas as funes funcionam com base caching


Por ltimo, temos de salientar que o resultado que o objeto em cache uma verso simplicada do resultado completo objeto. Por essa razo, algumas das funes resultado da consulta no esto disponveis para uso. As seguintes funes no esto disponveis quando se utiliza um resultado em cache objeto: num_elds () eld_names () eld_data () free_result () Alm disso, os dois recursos de dados (result_id e conn_id) no esto disponveis quando caching, uma vez que apenas se referem a recursos resultar em tempo de execuo operaes.

Funo Referncia
$this->db->cache_on() / $this->db->cache_o()
Manualmente permite / desabilita caching. Isto pode ser til se voc quiser manter certas consultas de ser armazenado em cache. Exemplo: / / Rode a caching $this->db->cache_on(); $query = $this->db->query(SELECT * FROM mytable); / / Turn o caching para uma consulta $this->db->cache_o(); $query = $this->db->query(SELECT * FROM members WHERE member_id = $current_user); / / Retorna caching $this->db->cache_on(); $query = $this->db->query(SELECT * FROM another_table); 142 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

$ this-> db-> cache_delete ()


Apaga o cache arquivos associados com uma pgina em particular. Isto til se voc precisa limpar a cache depois de voc atualizar o seu banco de dados. O sistema salva o cache caching arquivos para pastas que correspondem URI da pgina que voc est vendo. Por exemplo, se voc est vendo uma pgina em www.your-site.com/index.php/blog/comments, o sistema de caching cache ir colocar todos os arquivos associados a ele em uma pasta chamada blog + comentrios. Para apagar esses arquivos cache especial que voc usar: $ this-> db-> cache_delete ( blog, Comentrios); Se voc no usa nenhum dos actuais parmetros URI ser utilizado para determinar qual deve ser apuradas.

$ this-> db-> cache_delete_all ()


Apaga todos os arquivos existentes cache. Exemplo: $ this-> db-> cache_delete_all ();

Diagramado por: edson jr - edsonthadeu@hotmail.com

143

Code Igniter Verso 1.5.2 - Guia do Usurio

Referncias dos Assistentes

144

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Assistente de Array
O arquivo Assistente de Array contem funes que auxiliam no trabalho com arrays.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(array); As seguinte funes esto disponveis:

element()
Permite que voc busque um item dentro de um array. A funo testa o ndice do array e seu valor. Se um valor existe ele ento retornado. Se um valor no existe ele retorna FALSE, ou qualquer outra mensagem que voc tenha especicado como padro no terceiro parmetro. Exemplo: $array = array(cor => vermelho, forma => redondo, size => ); // retorna vermelho echo element(cor, $array); // retorna NULL echo element(tamanho, $array, NULL);

random_element()
Pega um array como entrada e retorna um elemento randmico dele. Exemplo de uso: $citacoes = array( I nd that the harder I work, the more luck I seem to have. - Thomas Jeerson, Dont stay in bed, unless you can make money in bed. - George Burns, We didnt lose the game; we just ran out of time. - Vince Lombardi, If everything seems under control, youre not going fast enough. - Mario Andretti, Reality is merely an illusion, albeit a very persistent one. - Albert Einstein, Chance favors the prepared mind - Louis Pasteur ); echo random_element($citacoes);

Diagramado por: edson jr - edsonthadeu@hotmail.com

145

Code Igniter Verso 1.5.2 - Guia do Usurio

Assistente de Cookie
O arquivo Assistente de Cookie contem funes que auxiliam no trabalho com cookies.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(cookie); As seguinte funes esto disponveis:

set_cookie()
Congura um cookie contendo os valores que voc especicar. Existe dois modos de passar a informao a esta funo de modo que o cookie pode ser congurado como: Mtodo de Array, e Parmetros Discretos(Discreet Parameters): Mtodo de Array Usando este mtodo, um array associativo passado ao primeiro parmetro: $cookie = array( name => O Nome do Cookie, value => O Valor, expire => 86500, domain => .algum-dominio.com, path => /, prex => meuprexo_, ); set_cookie($cookie); Notas: Apenas o nome(name) e valor(value) so obrigatrios. O tempo de expirao(expire) do cookie ajustado em segundos, que ser adicionado hora atual.No inclua a hora, apenas os segundos a partir do momento que voc deseja que o cookie seja vlido . Se o tempo de expirao estiver congurado como zero o cookie durar apenas o tempo em que o browser estiver aberto. Para apagar um cookie congure o tempo de expirao em branco/sem valor. Para cookies que abranjam todo site no importando como este seja requisitado, adicione sua URL ao domain comeando com um perdo, como este: .seu-dominio.com O caminho (path) normalmente desnecessrio desde que a funo congure um caminho raiz. O prexo apenas necessrio se voc precisar evitar colises de nomes dos cookies no seu servidor. Parmetros Discretos(Discreet Parameters) Se voc preferir, pode congurar o cookie passando os dados usando parmetros individuais: set_cookie($name, $value, $expire, $domain, $path, $prex);

get_cookie()
Permite que voc busque um cookie. O primeiro parmetro conter o nome do cookie que vocs est buscando: get_cookie(algum_cookie); 146 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio A funo retornar FALSE (booleano) se o item que voc estiver tentando recuperar no existir. O segundo parmetro opcional permite voc executar os dados atravs do ltro XSS. Este estar habilitado ao congurar o segundo parmetro para TRUE; get_cookie(algum_cookie, TRUE);

delete_cookie()
Permite que voc apague um cookie. A no ser que voc tenha congurado um caminho personalizado ou outros valores, apenas o nome do cookie necessrio: delete_cookie(nome); Esta funo, por sua vez, idntica set_cookie(), exceto pelo fato de no ter os parmetros de valor (value) e expirao(expire). Voc pode submeter um array de valores no primeiro parmetro ou pode congurar parmetros discretos(discreet parameters). delete_cookie($name, $domain, $path, $prex)

Assistente de Data
O arquivo Assistente de Data contem funes que auxiliam no trabalho com datas.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(date); As seguinte funes esto disponveis:

now()
Retorna a hora atual no format Unix timestamp, referente ou ao seu servidor local ou a hora GMT, baseada na hora referncia(time reference) congurada em seu arquivo de congurao. Se voc no pretende congurar sua hora mestre conforme a hora GMT (que normalmente o que voc faz se voc permite que cada usurio ajuste suas prprias conguraes de local e data) no haver benfcio em usar esta funo ao invs da funo time() do PHP.

mdate()
Esta funo idntica funo date() do PHP, a no ser pelo fato que ela lhe permite usar cdigos de data no estilo do MySQL, onde cada cdigo precedido por uma sinal de percentual: %Y %m %d etc. O benfcio de fazer datas desta maneira que voc no precisa se preocupar em das escape em nenhum caracter que no seja um cdigo de data como voc normalmente faria se usasse a funo date(). Exemplo: $stringdedata = Ano: %Y Ms: %m Dia: %d - %h:%i %a; $data = time(); echo mdate($stringdedata, $data); Se o timestamp no estiver includo no segundo parmetro a hora atual ser usada.

standard_date()
Permite gerar uma string de data em um dos muitos formatos padronizados. Exemplo: $formato = DATE_RFC822; $data = time(); echo standard_date($formato, $data); Diagramado por: edson jr - edsonthadeu@hotmail.com 147

Code Igniter Verso 1.5.2 - Guia do Usurio O primeiro parmetro deve conter o formato, o segundo deve conter a data como Unix timestamp. Formatos suportados: - DATE_ATOM - DATE_COOKIE - DATE_ISO8601 - DATE_RFC822 - DATE_RFC850 - DATE_RFC1036 - DATE_RFC1123 - DATE_RFC2822 - DATE_RSS - DATE_W3C

local_to_gmt()
Pega um Unix timestamp como entrada e retonrna como um GMT. Exemplo: $agora = time(); $gmt = local_to_gmt($agora);

gmt_to_local()
Pega um Unix timestamp (referente ao GMT) como entrada e o converte para um timestamp local basead no fuso e horrio de vero enviados. Exemplo: $timestamp = 1140153693; $fuso = UM8; $horario_de_verao = TRUE; echo gmt_to_local($timestamp, $fuso, $horario_de_verao); Nota: Para uma lista de fusos horrios veja a referncia no na desta pgina.

mysql_to_unix()
Pega um MySQL Timestamp como entrada e o retorna como Unix. Exemplo: $mysql = 20061124092345; $unix = mysql_to_unix($mysql);

unix_to_human()
Pega um Unix timestamp como entrada e o retorna num formato legvel ao homem com este prottipo: YYYY-MM-DD HH:MM:SS AM/PM Pode ser til se voc precisar exibir uma data num campo de formulrio para envio. A hora pode ser formatada com ou sem segundos e pode ser ajustada no formato Europeu ou Americano. Se apenas o timestamp for submetido ele retornar a hora sem segundos no formato Americano. Exemplo The time can be formatted with or without seconds, and it can be set to European or US format. If only the timestamp is submitted it will return the time without seconds formatted for the U.S.:

148

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio $agora = time(); echo unix_to_human($agora); // Formato de hora Americano, sem segundos echo unix_to_human($agora, TRUE, us); // Formato Americano com segundos echo unix_to_human($agora, TRUE, eu); // Formato Europeu com segundos

human_to_unix()
Oposto funo acima.Pega a hora humana como entrada e retorna no formato Unix. Esta funo til se voc recebe a hora formatada pelo padro humano atravs de formulrio. Retornar FALSE (booleano) se a string de hora passada a ela no estiver formatada como indicado acima. Exemplo: $agora = time(); $humano = unix_to_human($agora); $unix = human_to_unix($humano);

timespan()
Formata o unix timestamp de modo que ele que similar a isto: 1 Ano, 10 Meses, 2 Semanas, 5 Dias, 10 Horas, 16 Minutos O primeiro parmetro deve conter um Unix timestamp. O segundo deve conter um timestamp maior ao primeiro timestamp. Se o segundo parmetro estiver vazio, a hora atual ser usada. A nalidade mais comum para esta funo mostrar quanto tempo se passou desde algum ponto no passado at agora. Exemplo: $hora_passada = 1079621429; $agora = time(); echo timespan($hora_passada, $agora); Nota: O texto gerado por esta funo encontrado no seguinte arquivo de idioma:language/<seu_idioma>/ date_lang.php

days_in_month()
Retorna o nmero de dias em um dado ms/ano. Returns the number of days in a given month/year. Computa anos bissextos na contagem. Exemplo: echo days_in_month(06, 2005); Se o segundo parmetro estiver vazio, o ano atual ser usado.

timezone_menu()
Geral um menu pull-down de fusos horrios, como este:

Este menu til se possui um site de cadastros onde cada usurio pode ajustar seu prprio fuso local. O primeiro parmetrp permite congurar o item selecionado do menu. Por exemplo, para deixar selecionado o fuso Pacic como padro voc deve fazer isto: echo timezone_menu(UM8); Por favor veja a referncia de fusos abaixo para ver os valores deste menu. O segundo parmetro permite congurar um class name de CSS para o menu. Nota: O texto contido no menu pode ser encontrado no seguindo arquivo de idioma: language/<seu_idioma>/ date_lang.php Diagramado por: edson jr - edsonthadeu@hotmail.com 149

Code Igniter Verso 1.5.2 - Guia do Usurio

Referncia de Fuso-horrio
A tabela a seguir mostra cada fuso com sua localizao. Fuso Horrio UM12 UM11 UM10 UM9 UM8 UM7 UM6 UM5 UM4 UM25 UM3 UM2 UM1 UTC UP1 UP2 UP3 UP25 UP4 UP35 UP5 UP45 UP6 UP7 UP8 UP9 UP85 UP10 UP11 UP12 Localizao (UTC - 12:00) Enitwetok, Kwajalien (UTC - 11:00) Nome, Midway Island, Samoa (UTC - 10:00) Hawaii (UTC - 9:00) Alaska (UTC - 8:00) Pacic Time (UTC - 7:00) Mountain Time (UTC - 6:00) Central Time, Mexico City (UTC - 5:00) Eastern Time, Bogota, Lima, Quito (UTC - 4:00) Atlantic Time, Caracas, La Paz (UTC - 3:30) Newfoundland (UTC - 3:00) Brazil, Buenos Aires, Georgetown, Falkland Is. (UTC - 2:00) Mid-Atlantic, Ascention Is., St Helena (UTC - 1:00) Azores, Cape Verde Islands (UTC) Casablanca, Dublin, Edinburgh, London, Lisbon, Monrovia (UTC + 1:00) Berlin, Brussels, Copenhagen, Madrid, Paris, Rome (UTC + 2:00) Kaliningrad, South Africa, Warsaw (UTC + 3:00) Baghdad, Riyadh, Moscow, Nairobi (UTC + 3:30) Tehran (UTC + 4:00) Adu Dhabi, Baku, Muscat, Tbilisi (UTC + 4:30) Kabul (UTC + 5:00) Islamabad, Karachi, Tashkent (UTC + 5:30) Bombay, Calcutta, Madras, New Delhi (UTC + 6:00) Almaty, Colomba, Dhakra (UTC + 7:00) Bangkok, Hanoi, Jakarta (UTC + 8:00) Beijing, Hong Kong, Perth, Singapore, Taipei (UTC + 9:00) Osaka, Sapporo, Seoul, Tokyo, Yakutsk (UTC + 9:30) Adelaide, Darwin (UTC + 10:00) Melbourne, Papua New Guinea, Sydney, Vladivostok (UTC + 11:00) Magadan, New Caledonia, Solomon Islands (UTC + 12:00) Auckland, Wellington, Fiji, Marshall Island

150

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Assistente de Diretrio
O arquivo Assistente de Diretrio contem funes que auxiliam no trabalho com diretrio.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(directory); As seguinte funes esto disponveis:

directory_map(diretorio fonte)
Esta funo l o caminho de diretrio especicado no primeiro parmetro e monta um array representativo dele e de seus arquivos contidos. Exemplo: $mapa = directory_map(./meudiretorio/); Nota: Caminhos so em sua maiorira relativos ao seu arquivo principal index.php. Subdiretrios contidos dentro do diretrio sero mapeados tambm. Se desejar mapear apenas o diretrio de nvel mais alto ajuste o segundo parmetro para true (booleano): $mapa = directory_map(./meudiretorio/, TRUE); Cada nome de diretrio ser um ndice do array, enquanto que seus arquivos sero indexados numericamente. Aqui est um exemplo de um array comum: Array ( [libraries] => Array ( [0] => benchmark.html [1] => cong.html [database] => Array ( [0] => active_record.html [1] => binds.html [2] => conguration.html [3] => connecting.html [4] => examples.html [5] => elds.html [6] => index.html [7] => queries.html ) [2] => email.html [3] => le_uploading.html [4] => image_lib.html [5] => input.html [6] => language.html [7] => loader.html [8] => pagination.html [9] => uri.html )

Diagramado por: edson jr - edsonthadeu@hotmail.com

151

Code Igniter Verso 1.5.2 - Guia do Usurio

Assistente de Download
O Assistente de Download permite que voc baixe dados para seu desktop.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(download); As seguinte funes esto disponveis:

force_download(nomedoarquivo, dados)
Gera cabealhos de servidor que foram os dados a serem baixados para seu desktop. til para downloads de arquivos. O primeiro parmetro o nome que voc quer que o arquivo a ser baixado tenha, o segundo parmetro so os dados do arquivo. Exemplo: $dados = Aqui est algum texto!; $nome = meutexto.txt; force_download($nome, $dados); Caso queira baixar algum arquivo existente de seu servidor voc precisar l-lo dentro de uma string: $dados = le_get_contents(/caminho/para/foto.jpg); // L o contedo do arquivo $nome = minhafoto.jpg; force_download($nome, $dados);

Assistente de Arquivo
O arquivo Assistente de Diretrio contem funes que auxiliam no trabalho com arquivos.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(le); As seguinte funes esto disponveis:

read_le(caminho)
Retorna os dados contidos dentro do arquivo especicado no caminho. Exemplo: $string = read_le(./caminho/para/arquivo.php); O caminho pode ser relativo ou absoluto no servidor. Retornar FALSE (booleano) caso falhe. Nota: O caminho relativo ao seu arquivo index.php principal, NO ao seus arquivos controller ou view. O Code Igniter usa um front controller de modo que sempre ser relativo ao index principal do site. Se o seu servidor estiver executando uma restrio open_basedir esta funo talvez no funcione se tentar acessar um arquivo que esteja um nvel acima ao script chamado.

write_le(caminho, $dados)
Escreve os dados no arquivo especicado no caminho. Caso o arquivo no exista ele ser criado. Exemplo:

152

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio $dados = Alguns dados de arquivo; if ( ! write_le(./caminho/para/arquivo.php, $dados)) { echo No foi possvel escrever no arquivo; } else { echo Dados escritos!; } Voc pode congurar opcionalmente o modo de escrita atravs do terceiro parmetro: write_le(./caminho/para/arquivo.php, $dados, r+); O modo padro wb Por favor veja o Guia de Usurio do PHP para as opes de modo disponveis. Nota: Para que esta funo escreva os dados no arquivo, este deve ter suas permisses conguradas para escrita (666, 777, etc.). Se o arquivo no existir ainda, ento o diretrio que o conter deve ter essas permisses de escrita. Nota: O caminho relativo ao seu arquivo index.php principal, NO ao seus arquivos controller ou view. O Code Igniter usa um front controller de modo que sempre ser relativo ao index principal do site.

delete_les(caminho)
Apaga TODOS os arquivos dentro do caminho fornecido. Exemplo: delete_les(/caminho/para/diretorio/); Se o segundo parmetro estiver congurado como true, qualquer diretrio dentro do caminho fornecido tambm ser apagado. Exemplo: delete_les(/caminho/para/diretorio/, TRUE); Nota: Os arquivos devem ter permisso de escrita ou pertencerem ao sistema de modo que possam ser apagados.

get_lenames(caminho/para/diretorio/)
Pega um caminho do servidor como entrada e retorna um array contendo os nomes de todos os arquivos dentro dele. O caminho do arquivo pode opcionalmente ser adicionado aos nomes de arquivos ao congurar o segundo parmentro como TRUE.

Assistente de Formulrio
O Assistente de Formulrio contem funes que auxiliam no trabalho com formulrio.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(form); As seguinte funes esto disponveis:

form_open()
Cria uma tag de abertura de formulrio com a URL base montada em cima de suas preferncias de congurao. Permitir que, opcionalmente, voc adicione atributos e campos hidden. A principal vantagem de usar esta tag ao invs de codicar manualmente seu prprio HTML que ela Diagramado por: edson jr - edsonthadeu@hotmail.com 153

Code Igniter Verso 1.5.2 - Guia do Usurio permite que seu site seja mais fcil de portar no caso de sua URL ser alterada. Aqui est um exemplo simples: echo form_open(email/send); O exemplo acima criar um formulrio que aponta para sua URL base mais os segmentos email/send, desta maneira: <form method=post action=http:/www.seu-site.com/index.php/email/send />

Adicionando Atributos
Atributos podem ser adicionados ao passar um array associativo como segundo parmetro, desta maneira: $attributes = array(class => email, id => meuform); echo form_open(email/send, $attributes); O exemplo acima criar um formulrio semelhante a este: <form method=post action=http:/www.seu-site.com/index.php/email/send class=email id=meuform />

Adicionando Campos Hidden


Campos Hidden podem ser adicionados ao passar um array associativo como terceiro parmetro, desta maneira: $hidden = array(username => Jose, id_membro => 234); echo form_open(email/send, , $hidden); O exemplo acima criar um formulrio semelhante a este: <form method=post action=http:/www.seu-site.com/index.php/email/send id=meuform /> <input type=hidden name=username value=Jose /> <input type=hidden name=id_membro value=234 /> class=email

form_open_multipart()
Esta funo totalmente idntica tag form_open() acima, exceto pelo daoto de adicionar o atributo multipart, que necessrio se voc deseja usar um formulrio para fazer upload de arquivos.

form_hidden()
Permite gerar campos hidden. Voc pode tambm enviar uma string nome/valor para criar um campo: form_hidden(username, joaoninguem); // Produzir: <input type=hidden name=username value=joaoninguem />

154

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Ou pode enviar um array associativo para criar mltiplos campos: $dados = array( name => Joo Ningum, email => joao@algum-site.com, url => http://www.algum-site.com ); echo form_hidden($dados); // Produzir: <input type=hidden name=name value=Joo Ningum /> <input type=hidden name=email value=joao@algum-site.com /> <input type=hidden name=url value=http://www.algum-site.com />

form_input()
Permite gerar um campo input text padro. Voc pode passar o name e o value do campo no primeiro e segundo parmetros: echo form_input(username, joaoninguem); Ou passar um array associativo contendo algum dado que deseje que o fomulrio contenha: $dados = array( name => username, id => username, value => joaoninguem, maxlength => 100, size => 50, style => width:50%, ); echo form_input($dados); // Produzir: <input type=text name=username id=username value=joaoninguem maxlength=100 size=50 style=width:50% /> Se quiser que o formulrio contenha algum dado adicional, como JavaScript, voc pode passar isso como uma string no terceiro parmetro: $js = onClick=some_function(); echo form_input(username, joaoninguem, $js);

form_password()
Esta funo idntica em todos os aspectos funo form_input() acima exceto pelo fato de gerar um campo como type=password (campo senha).

form_upload()
Esta funo idntica em todos os aspectos funo form_input() acima exceto pelo fato de congurar o campo como type=le (campo arquivo), permitindo o envio de arquivos ao servidor.

form_textarea()
Esta funo idntica em todos os aspectos funo form_input() acima exceto pelo fato de gerar um campo textarea. Nota: Ao invs dos atributos maxlength e size no exemplo acima, voc especicar Diagramado por: edson jr - edsonthadeu@hotmail.com 155

Code Igniter Verso 1.5.2 - Guia do Usurio rows e cols.

form_dropdown()
Permite criar um campo select padro (drop-down). O primeiro parmetro contm o nome do campo, o segundo parmetro conter um array associativo de opes, e o terceiro parmetro conter o valor que voc deseja deixar como selecionado. Exemplo: $opcoes = array( pequena => Camisa Pequena, media => Camisa Mdia, grande => Camisa Grande, extragrande => Camisa Extra-Grande, ); echo form_dropdown(camisas, $opcoes, grande); // Produzir: <select name=camisas> <option value=pequena>Camisa Pequena</option> <option value=media>Camisa Mdia</option> <option value=grande selected>Camisa Grande</option> <option value=extragrande>Camisa Extra-Grande</option> </select> Se quiser que a tag de abertura <select> contenha dados adicionais, como JavaScript, voc pode pass-los como uma string no quarto parmetro: $js = onChange=some_function(); echo form_dropdown(camisas, $opcoes, grande, $js);

form_checkbox()
Permite gerar um campo checkbox. Exemplo simples: echo form_checkbox(newsletter, aceitar, TRUE); // Produzir: <input type=checkbox name=newsletter value=aceitar checked=checked /> O terceiro parmetro conter um TRUE/FALSE boolenao que determina se o campo dever vir marcado ou no. Semelhante s outras funes de formulrio neste assistente, voc pode passar um array de atributos funo: $dados = array( name => novidades, id => novidades, value => aceitar, checked => TRUE, style => margin:10px, ); echo form_checkbox($dados); // Produzir: <input type=checkbox name=novidades id=novidades value=aceitar checked=checked style=margin:10px />

156

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Como em outras funes, se quiser que a tag contenha dados adicionais, como JavaScript, voc pode pass-los como uma string no quarto parmetro: $js = onClick=some_function(); echo echo form_checkbox(novidades, aceitar, TRUE, $js)

form_radio()
Esta funo idntica em todos os aspectos funo form_checkbox() acima exceto pelo fato de congurar o campo(input) como type=radio.

form_submit()
Permite voc gerar um boto submit padro. Exemplo simples: echo form_submit(meusubmit, Enviar!); // Produzir: <input type=submit name=meusubmit value=Enviar! /> Semelhante a outras funes, voc pode enviar um array associativo no primeiro parmetro se preferir congurar seus prprios atributos. O terceiro parmetro permite adicionar dados extar ao seu formulrio, como Javascript.

form_close()
Gera a tag de fechamento </form>. A nica vantagem de que permite que voc passe informaes que sero adicionadas aps a tag. Por exemplo: $string = </div></div>; echo form_close($string); // Produzir: </form> </div></div>

form_prep()
Permite que use com segurana HTML e caracteres como aspas dentro dos elementos do formulrio sem quebr-los para fora do formulrio. Considere este exemplo: $string = Aqui est uma string contendo um texto com aspas.; <input type=text name=meuform value=$string /> Mesmo que a string acima contenha aspas ela no causar a quebra do formulrio. A funo form_prep convert o HTML de modo que pode ser usado com segurana: <input type=text name=meuform value=<?php echo form_prep($string); ?> /> Nota: Se voc usar alguma das funes do assistente de formulrio listadas nesta pgina os valores do formulrio sero convertidos automaticamente, eno no preciso chamar esta funo. Use somente se voc estiver criando seus prprios elementos de formulrio.

Diagramado por: edson jr - edsonthadeu@hotmail.com

157

Code Igniter Verso 1.5.2 - Guia do Usurio

Assistente de HTML
O Assistente de HTML contem funes que auxiliam no trabalho com HTML.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(html); As seguinte funes esto disponveis:

heading()
Permite criar tags HTML <h1>, O primeiro parmetro ir conter os dados, o segundo o tamanho do heading. Exemplo: echo heading(Bem-vindo!, 3); O cdigo acima produzir: <h3>Bem-vindo!</h3>

ol() and ul()


Permite gerar listas HTML ordenadas ou n-ordenadas de um array simples ou multi-dimensional. Exemplo: $this->load->helper(html); $lista = array( vermelho, azul, verde, amarelo ); $atributos = array( class => listanegritada, id => minhalista ); echo ul($lista, $atributos); O cdigo acima produzir isto: <ul class=listanegritada id=minhalista> <li>vermelho</li> <li>azul</li> <li>verde</li> <li>amarelo</li> </ul> Aqui est um exemplo mais complexo, usando um array multi-dimensional:

158

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio $this->load->helper(html); $lista = array( cores => array( vermelho, azul, verde ), formas => array( curva, quadrado, circulos => array( elipse, oval, esfera ) ), humor => array( feliz, chateado => array( derrotado => array( rejeitado, desolado, deprimido ), irritado, atravessado, brabo ) ) ); echo ul($lista); O cdigo acima produzir isto: <ul class=listanegritada id=minhalista> <li>cores <ul> <li>vermelho</li> <li>azul</li> <li>verde</li> </ul> </li> <li>formas <ul> <li>curva</li> <li>quadrado</li> <li>circulos <ul> <li>elipse</li> <li>oval</li> <li>esfera</li> </ul> </li> Diagramado por: edson jr - edsonthadeu@hotmail.com 159

Code Igniter Verso 1.5.2 - Guia do Usurio </ul> </li> <li>humor <ul> <li>feliz</li> <li>chateado <ul> <li>derrotado <ul> <li>rejeitado</li> <li>desolado</li> <li>deprimido</li> </ul> </li> <li>irritado</li> <li>atravesado</li> <li>brabo</li> </ul> </li> </ul> </li> </ul>

nbs()
Gera non-breaking spaces (&nbsp;) baseada no nmero que voc enviar. Exemplo: echo nbs(3); O cdigo acima produzir: &nbsp;&nbsp;&nbsp;

br()
Gera tags de quebra de linha (<br />) baseada no nmero que voc enviar. Exemplo: echo br(3); O cdigo acima produzir: <br /><br /><br />

Assistente de Segurana
O Assistente de Segurana contem funes funes relacionadas segurana.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(security); As seguinte funes esto disponveis:

xss_clean()
Prove um ltro Cross Site Script Hack. Esta funo um apelido/pseudnimo para a classe Input . Maiores informaes podem ser encontradas atravs do link fornecido.

dohash()
Permite criar um um modo de hash SHA1 ou MD5 apropriado para encriptar senhas. Ir usar o SHA1 por 160 Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio padro. Exemplos: $str = dohash($str); // SHA1 $str = dohash($str, md5); // MD5

strip_image_tags()
Esta uma funo de segurana que ir tirar as tags de imagem de uma string. Deixando apenas,em texto puro, a URL da imagem. $string = strip_image_tags($string);

encode_php_tags()
Esta uma funo de segurana que converte tags PHP em entities. Nota: Se voc usar a funo de ltro XSS ele far isso automaticamente. $string = encode_php_tags($string);

Assistente de Smiley
O Assistente de Smiley contem funes que permitem que voc tenha controle sobre smileys (emoticons).

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(smiley);

Viso Geral
O Assistente de Smiley possui um renderizador que pega smileys de texto puro como :-) e transforma em representao grca como . Permite tambm que seja exibido um conjunto de imagens de emoticons que quando clicados sero inseridos num campo de formulrio. Por exemplo, se voc tiver um blog que permita o comentrio de usurios poder, ento, exibir os emoticons perto do campo de comentrios. Seus usurios podero clicar no emoticon e com a ajuda de algum Javascript este ser colocado no campo do formulrios.

Tutorial de Smileys(Emoticons) Clicveis


Aqui est um exemplo que demonstra como voc pode criar um conjunto de emoticons clicveis prximos do campo do formulrio. Este exemplo requer que voc, primeiramente, baixe e instale as imagens de smiley, ento, depois, crie um controller e uma View como descritos. Importante: Antes de comear, por favor baixe os emoticons e coloque-os em um local de acesso pblico em seu servidor. Este assistente tambm assume que voc tenha o array de substituio de smiley localizado em application/cong/smileys.php

O Controller
Em sua pasta application/controllers/, crie um arquivo chamado smileys.php e cole o cdigo abaixo nele. Importante: Mude a URL na funo get_clickable_smileys() abaixo de modo que aponte para sua pasta smiley. Voc notar que alm do assistente de smiley tambm estamos usando a Classe Table.

Diagramado por: edson jr - edsonthadeu@hotmail.com

161

Code Igniter Verso 1.5.2 - Guia do Usurio <?php class Smileys extends Controller { function Smileys() { parent::Controller(); } function index() { $this->load->helper(smiley); $this->load->library(table); $image_array = get_clickable_smileys(http://www.your-site.com/images/smileys/); $col_array = $this->table->make_columns($image_array, 8); $data[smiley_table] = $this->table->generate($col_array); } $this->load->view(smiley_view, $data);

Em sua pasta application/views/, crie um arquivo chamado smiley_view.php e cole este cdigo nele: <html> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/helpers/smiley_ helper.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 20:00:00 GMT --> <head> <title>Smileys</title> <?php echo js_insert_smiley(blog, comments); ?> </head> <body> <form name=blog> <textarea name=comments cols=40 rows=4></textarea> </form> <p>Clique para inserir um smiley!</p>a <?php echo $smiley_table; ?> </body> <!-- Mirrored from www.plasmadesign.com.br/codeigniter/user_guide-pt_BR/helpers/smiley_ helper.html by HTTrack Website Copier/3.x [XR&CO2007], Wed, 15 Aug 2007 20:00:00 GMT --> </html> Depois de criar o controller e a view acima, carregue-os visitando http://www.seu-site.com/index.php/ smileys/

162

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Referncia da Funo
get_clickable_smileys()
Retorna um array contendo suas imagens de smiley dentro de um link. Voc deve fornecer a URL para sua pasta de smiley atravs do primeiro parmetro: $image_array = get_clickable_smileys(http://www.seu-site.com/images/smileys/);

js_insert_smiley()
Gera o javascript que permite as imagens serem clicadas e inseridas dentro do campo de formulrio. O primeiro parmetro deve conter o nome de seu formulrio, o segundo deve conter o nome do campo. Esta funo feita para ser colocada dentro da seo <head> de sua pgina web. <?php echo js_insert_smiley(blog, comments); ?>

parse_smileys()
Pega uma string de texto como entrada e substitui o texto pelos smileys/emoticons equivalentes. O primeiro parmetro deve conter sua string, o segundo deve conter a URL de sua pasta de smiley: $str = Aqui esto alguns emoticons: :-) ;-); $str = parse_smileys($str, http://www.seu-site.com/ images/smileys/); echo $str;

Assistente de String
O Assistente de String contem funes que auxiliam no trabalho com strings.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(string); As seguinte funes esto disponveis:

random_string()
Gera uma string randmica baseada no tipo e no comprimento que voc especicar. til para criar senhas ou hashes randmicos. O primeiro parmetro especica o tipo de string, o segundo especica o comprimento. As seguintes opes esto disponveis: - alnum: String alfa-numrica com caracteres em caixa alta e baixa. - numeric: String numrica. - nozero: String numrica sem zeros. - unique: Encriptada com MD5 e uniquid(). Nota: O paremtro de comprimento no disponvel para este tipo. Retorna uma string de comprimento xo de 33 caracteres. Exemplo de Uso: echo random_string(alnum, 16);

alternator()
Permite que dois ou mais itens alternem-se entre si quando dentro de um loop. Exemplo: Diagramado por: edson jr - edsonthadeu@hotmail.com 163

Code Igniter Verso 1.5.2 - Guia do Usurio for ($i = 0; $i < 10; $i++) { echo alternator(string um, string dois); } Voc pode adicionar quantos parmetros quiser e a cada interao de seu loop o prximo tem ser retornado. for ($i = 0; $i < 10; $i++) { echo alternator(um, dois, trs, quatro, cinco); } Nota: Para usar chamadas mltiplas separadas a esta funo basta chamar a funo sem argumento para reinicializ-la.

repeater()
Gera cpias repetidas dos dados que voc enviar. Exemplo: $string = \n; echo repeater($string, 30); O cdigo acima gerar 30 novas linhas.

Assistente de Texto
O Assistente de Texto contem funes que auxiliam no trabalho com texto.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(text); As seguinte funes esto disponveis:

word_limiter()
Trunca uma string para o nmero de palavras especicado. Exemplo: $string = Aqui temos um belo texto de oito palavras.; $string = word_limiter($string, 4); // Retorna: Aqui temos um belo O terceiro parmetro um suxo opcional adicionado string. Por padro adiciona-se reticncias.

character_limiter()
Trunca uma string para o nmero de caracteres especicado. Mantem a integridade das palavras de modo que a contagem pode ter uma pequena variao para mais ou para menos do que voc especicar. Exemplo: $string = Aqui temos um belo texto de oito palavras.; $string = character_limiter($string, 20); // Retorna: Aqui temos um belo O terceiro parmetro um suxo opcional adicionado string. Por padro adiciona-se reticncias.

164

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

ascii_to_entities()
Converte valores ASCII em character entities, incluindo high ASCII e caracteres MS Word que podem causar problemas quando usado em uma pgina da web, de modo que possam ser mostrados sem erros no obstante conguraes do browser ou serem armazenados sem problemas em uma base de dados. Eiste algumas dependncias no seu conjunto de caracteres suportados pelo servidor, portanto isto pode no ser 100% convel, mas na maioria dos casos ele identicar corretamente os caracteres foram do escopo normal (acentuados por exemplo). Exemplo: $string = ascii_to_entities($string);

entities_to_ascii()
Esta funo faz o oposto da anterior, transforma character entities de volta em ASCII.

word_censor()
Habilita a censura de palavras de uma determinada string. O primeiro parmetrp conter a string original. O segundo conter uma array de palavras proibidas. O terceiro (opcional) conter um valor substituto para as palavras. Se no especicado elas sero subsituidas por sinal de jogo da velha: ####. Exemplo: $proibidas = array(txico, maconha, cocaina, cigarro); $string = word_censor($string, $proibidas, eeeeeeepppaaaa!);

highlight_code()
Colore uma string de cdigo(PHP, HTML, etc.). Exemplo: $string = highlight_code($string); A funo usa a funo highlight_string() do PHP, as cores usadas so as especicadas no seu arquivo php. ini.

highlight_phrase()
Destacar uma frase dentro de uma string de texto. O primeiro parmetro conter a string original, o segundo a frase que deseja destacar. Os terceiro e quarto parmetros contero as tags HTML de abertura e fechamento onde a frase estar contida. Exemplo: $string = Aqui est um belo texto sobre nada em especial.; $string = highlight_phrase($string, belo texto, <span style=color:#990000>, </span>); O cdigo acima retornar: Aqui est um belo texto sobre nada em especial.

word_wrap()
Quebra a linha de texto conforme o nmero de caracteres especicados mantendo as palavras inteiras. Exemplo: $string = Aqui temos um string simples de texto que nos ajudar a demonstrar esta funo; echo word_wrap($string, 25); // Produzir: Aqui temos um string simples de texto que nos ajudar a demonstrar esta funo

Diagramado por: edson jr - edsonthadeu@hotmail.com

165

Code Igniter Verso 1.5.2 - Guia do Usurio

Assistente de Tipograa
O Assistente de Tipograa contem funes que auxiliam a formatar texto de modo semanticamente relevante.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(typography); As seguinte funes esto disponveis:

auto_typography()
Formata o texto de modo a car tipogracamente e semanticamente correto o HTML. Pega uma string como entrada e retorna com a seguinte formatao: - Envolve os pargrafos com <p></p> (procura por duas linhas em branco para identicar pargrafos). - Converte quebras de linha em <br />, exceto aquelas que aparecerem dentro de tags <pre>. - Elementos block, como tags <div>, no so envolvidos dentro de tags pargrafos, mas seus contedos de texto sim caso sejam pargafos. - Aspas so convertidas para suas entities corretas, exceto aquelas que aparecerem dentro de tags. - Apstrofos so convertidos para entities. - Traos duplos (como -- esse ou como--esse) so convertidos para traosassim. -Trs perodos consecutivos precedendo ou seguintes a uma palavra so convertidos para reticncicas - Espaos duplos seguindo sentenas so convertidos para non-breaking spaces &nbsp; para imitar o espao. Exemplo de Uso: $string = auto_typography($string); Nota: Formatao tipogrca pode causar sobrecarga de processamento, principalmente se voc possuir muito contedo a ser formatado. Se optar por usar esta funo talvez queira considerar fazer caching de suas pginas.

nl2br_except_pre()
Converte novas linhas em tags <br />a no ser que estas estejam dento de tags <pre>. Esta funo idntica funo nl2br() nativa do PHP, exceto pelo fato de esta ltima ignorar tags <pre>. Exemplo de Uso: $string = nl2br_except_pre($string);

166

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio

Assistente de URL
O Assistente de XML contem funes que auxiliam no trabalho com URLs.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(url); As seguinte funes esto disponveis:

site_url()
Retorna a URL de seu site, conforme especicada no seu arquivo de congurao. O arquivo index.php (ou algum outro que seja a index_page de seu confrome seu arquivo de congurao) ser adicionado URL, como qualquer segmento URI que voc passar para a funo. Sinta-se encorajado a usar esta funo sempre que precisar gerar uma URL local de modo que suas pginas tornem-se muito mais portveis na eventualidade de mudanas em sua URL. Segmentos podem ser passados (opcionalmente) para a funo como uma string ou array. Aqui est um exemplo de string: echo site_url(novidades/local/123); O exemplo acima retornar algo assim: http://www.seu-site.com/index.php/novidades/local/123 Aqui est um exemplo de segmentos passados como um array: $segmentos = array(novidades, local, 123); echo site_url($segments);

base_url()
Retorna a URL base do seu site, conforme especicado no seu arquivo de congurao. Exemplo: echo base_url();

index_page()
Retorna a pgina index do seu site, conforme especicado no seu arquivo de congurao. Exemplo: echo index_page();

anchor()
Cria um link HTML baseado na URL local de seu site: <a href=http://www.seu-site.com>Clique aqui</a> A tag tem trs parmetros opcionais: anchor(segmentos uri, texto, atributos) O primeiro parmetro pode conter qualquer segmento que voc queira adicionar URL. Como com a funo site_url() acima, segmentos podem ser uma string ou um array. Nota: Se voc estiver montando links internos para sua aplicao no inclua a URL base (http://...). Isto ser adicionado automaticamente conforme informao especicada no seu arquivo de congurao. Inclua apenas os segmentos de URI que voc deseje adicionar URL. O segundo parmetro o texto que o link vai mostrar como clicvel. Se deixado em branco ento a URL ser usada. Diagramado por: edson jr - edsonthadeu@hotmail.com 167

Code Igniter Verso 1.5.2 - Guia do Usurio O terceiro parmetro pode conter uma lista de atributos que voc gostaria de adicionar ao link(tag). Os atributos podem ser uma simples string ou um array associativo. Aqui esto alguns exemplos: echo anchor(novidades/local/123, Minhas Novidades); Produzir: <a href=http://www.seu-site.com/index.php/novidades/local/123 Novidades>Minhas Novidades</a> echo anchor(novidades/local/123, Minhas Novidades, array(title => As melhores!)); Produzir: <a href=http://www.seu-site.com/index.php/novidades/local/123title=As melhores!>Minhas Novidades</a> title=Minhas

anchor_popup()
Quase idntico funo anchor() exceto que abrir a url em uma nova janela. Voc pode especicar atributos Javascript no terceiro parmetro para controlar como a janela ser aberta. Se o terceiro parmetro no estiver congurado ento a nova janela ser aberta conforme as conguraes do navagador do usurio. Aqui est um exemplo com atributos: $atributos = array( width => 800, height => 600, scrollbars => yes, status => yes, resizable => yes, screenx => 0, screeny => 0 ); echo anchor_popup(novidades/local/123, Click Me!, $atributos); Nota: Os atributos acima so funes padro sendo que voc somente precisar declar-las se precisar de algo diferente disso. Se voc quiser que a funo use todos os valores padres basta passar um array vazio como terceiro parmetro: echo anchor_popup(novidades/local/123, Clique me!, array());

mailto()
Cria uma tag link para e-mail. Exemplo de uso: echo mailto(eu@meu-site.com, Clique aqui para falar comigo); Como com a tag anchor() acima, voc pode declarar atributos usando o terceiro parmetro.

safe_mailto()
idntico funo acima exceto por escrever uma verso ofuscada da tag mailto usando nmeros escritos com Javascript para ajudar a bloquear o rastreio dos emails por robs de spam.

auto_link()
Transforma URLs e emails (que esto em strings) automaticamente em links. Exemplo: $string = auto_link($string); O segundo parmetro determina se URLs e emails sero convertidos ou somente um ou outro. O padro a transformao de ambos se o parmetro no for especicado

168

Diagramado por: edson jr - edsonthadeu@hotmail.com

Code Igniter Verso 1.5.2 - Guia do Usurio Converte apenas URLs: $string = auto_link($string, url); Converte apenas endereos de Email: $string = auto_link($string, email); O terceiro parmetro determina se os links sero aberto em uma nova janela. O valor pode ser TRUE ou FALSE (booleano): $string = auto_link($string, both, TRUE);

url_title()
Pega uma string como entrada e cria uma string URL amigvel. til se, por exemplo, voc tiver um blog no qual gostaria de usar o ttulo de seus artigos na URL. Exemplo: $title = O que h de errado com o CSS?; $url_title = url_title($title); // Produz: o-que-ha-de-errado-com-o-css O segundo parmetro determina o delimitador de palavra. Por padro traos sero usados. As opes so The second parameter determines the word delimiter. By default dashes are used. Options are: trao, ou underscore: $title = O que h de errado com o CSS?; $url_title = url_title($title, underscore); // Produces: o_que_ha_de_errado_com_o_css

prep_url()
Esta funo adicionar http:// se estiver faltando na URL. Passe a string URL para a funo deste modo: $url = www.algum-site.com; $url = prep_url($url);

redirect()
Faz um header redirect(redirecionamento pelo servidor) para a URI local especicada. Assim como outras funes neste assistente, esta designada para redirecionar a uma URL local dentro do seu site. Voc no especicar a URL absoluta do seu site, mas somente os segmentos URI do controller que voc quer abrir. A funo montar a URL baseada nos valores declarados no seu arquivo de congurao. O segundo parmetro permite que voc escolha entre o mtodo location ou o mtodo refresh. O location mais rpido, porm em servidores Windows pode ser um problema algumas vezes. Exemplo: if ($logged_in == FALSE) { redirect(/login/form/, refresh); } Nota: Para esta funo funcionar ela deve ser declarada antes que qualquer coisa que gere uma sada ao browser, pois ela usa cabealhos de servidor(server headers).

Diagramado por: edson jr - edsonthadeu@hotmail.com

169

Code Igniter Verso 1.5.2 - Guia do Usurio

Assistente de XML
O Assistente de XML contem funes que auxiliam no trabalho com dados XML.

Carregando este Assistente


Este assistente carregado usando o seguinte cdigo: $this->load->helper(xml); As seguinte funes esto disponveis: xml_convert(string) Pega um string como entrada e converte os seguintes caracteres reservados para XML em entities: - E comercial(&): & - Maior que e menor que em caracteres: < > - Aspas simples e aspas duplas: - Traos: Esta funo ignora Es comerciais(&) se eles forem parte de entities de caracteres existentes. Exemplo: $string = xml_convert($string);

170

Diagramado por: edson jr - edsonthadeu@hotmail.com

Você também pode gostar