<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-8093072554885564114</atom:id><lastBuildDate>Sun, 27 Nov 2011 23:49:11 +0000</lastBuildDate><category>CodeIgniter</category><category>Tutorial MVC-CodeIgniter</category><category>tutoriais</category><title>Programador Anónimo</title><description>Blog dedicado à framework codeigniter.
Tutoriais práticos.</description><link>http://programadoranonimo.blogspot.com/</link><managingEditor>noreply@blogger.com (Rui)</managingEditor><generator>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ProgramadorAnonimo" /><feedburner:info uri="programadoranonimo" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FProgramadorAnonimo" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FProgramadorAnonimo" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FProgramadorAnonimo" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/ProgramadorAnonimo" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FProgramadorAnonimo" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FProgramadorAnonimo" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FProgramadorAnonimo" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8093072554885564114.post-8793989402075788052</guid><pubDate>Thu, 15 Jul 2010 14:00:00 +0000</pubDate><atom:updated>2010-07-15T07:00:08.098-07:00</atom:updated><title>Mudança de rumo</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7JcNnuBcidUVv9nxFI2lf-HUdXs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7JcNnuBcidUVv9nxFI2lf-HUdXs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7JcNnuBcidUVv9nxFI2lf-HUdXs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7JcNnuBcidUVv9nxFI2lf-HUdXs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Olá pessoal,&lt;br /&gt;
&lt;br /&gt;
Como podem ver este blog está um pouco ao abandono. A falta de tempo levou a tal, e estava a trabalhar com outras ferramentas PHP que não o CI, logo deixou-me um pouco de lado, não ajudando a continuar a lançar tutoriais.&lt;br /&gt;
&lt;br /&gt;
De momento até disponho da liberdade necessária para continuar este projecto, mas pessoalmente, estou um pouco saturado do ambiente web. Já não me traz grande novidade e motivação. Pelo que vou seguir por outros caminhos.&lt;br /&gt;
&lt;br /&gt;
Sempre tive interesse em desenvolvimento para plataformas móveis, mas só agora tenho disponibilidade para me focar nessa área. Se estiverem interessados podem acompanhar este novo projecto em: &lt;a href="http://androideiro.blogspot.com/"&gt;http://androideiro.blogspot.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Como é óbvio estes tutorias vão continuar disponíveis, a não ser que se tornem claramente obsoletos.&lt;br /&gt;
&lt;br /&gt;
Saudações a todos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8093072554885564114-8793989402075788052?l=programadoranonimo.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ProgramadorAnonimo?a=NBhle3fFkQg:rnbRFxv6uTQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ProgramadorAnonimo?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ProgramadorAnonimo?a=NBhle3fFkQg:rnbRFxv6uTQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ProgramadorAnonimo?i=NBhle3fFkQg:rnbRFxv6uTQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ProgramadorAnonimo/~3/NBhle3fFkQg/mudanca-de-rumo.html</link><author>noreply@blogger.com (Rui)</author><thr:total>1</thr:total><feedburner:origLink>http://programadoranonimo.blogspot.com/2010/07/mudanca-de-rumo.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8093072554885564114.post-7115716642652119805</guid><pubDate>Wed, 12 Nov 2008 23:09:00 +0000</pubDate><atom:updated>2009-01-26T04:28:22.902-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tutorial MVC-CodeIgniter</category><category domain="http://www.blogger.com/atom/ns#">tutoriais</category><category domain="http://www.blogger.com/atom/ns#">CodeIgniter</category><title>Tutorial MVC - 4 Inserir dados, Formulários e Validação</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LtzYtXS0nhnbIGD5vZFmu9NEgXI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LtzYtXS0nhnbIGD5vZFmu9NEgXI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LtzYtXS0nhnbIGD5vZFmu9NEgXI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LtzYtXS0nhnbIGD5vZFmu9NEgXI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Este tutorial é um seguimento directo do anterior. Utilizaremos os mesmos componentes e tabela de dados para criar um sistema de registo de utilizadores. Se não tem acompanhado esta série aconselho-lhe a dar uma olhadela ao &lt;a href="http://programadoranonimo.blogspot.com/2008/10/tutorial-mvc-3-acesso-dados.html"&gt;tutorial anterior&lt;/a&gt;.&lt;br /&gt;No que diz respeito à validação, será usado o novo sistema form_validation introduzido na versão 1.7.0. Dado que este tutorial é orientado para iniciantes não vi razão pela qual não o orientar para a nova versão.&lt;br /&gt;&lt;br /&gt;Em qualquer página web com validação de dados existe o seguinte ciclo de validação:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pedir os dados ao utilizador&lt;/li&gt;&lt;li&gt;Verificar os dados&lt;/li&gt;&lt;li&gt;Caso os dados não sejam válidos exibir erros e voltar ao ponto 1&lt;/li&gt;&lt;li&gt;Tratar os dados&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Começando pela solicitação de dados, vamos criar uma &lt;span style="font-style: italic;"&gt;view&lt;/span&gt; &lt;span style="font-family:arial;"&gt;user/register.php&lt;/span&gt; com o seguinte conteúdo:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;?php&lt;/span&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;echo&lt;/span&gt;&lt;/b&gt; validation_errors() &lt;span style="color: rgb(153, 0, 0);"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;?php&lt;/span&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;echo&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;form_open&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'user/register'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;&lt;/span&gt;fieldset&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;&lt;/span&gt;label &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"username"&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;gt;&lt;/span&gt;Utilizador&lt;span style="color: rgb(153, 0, 0);"&gt;:&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;/&lt;/span&gt;label&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;&lt;/span&gt;input type&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"text"&lt;/span&gt; id&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"username"&lt;/span&gt; value&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;""&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;&lt;/span&gt;label &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"password"&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;gt;&lt;/span&gt;Palavra&lt;span style="color: rgb(153, 0, 0);"&gt;-&lt;/span&gt;Passe&lt;span style="color: rgb(153, 0, 0);"&gt;:&amp;lt;/&lt;/span&gt;label&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;&lt;/span&gt;input type&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"password"&lt;/span&gt; id&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"password"&lt;/span&gt; value&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;""&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;&lt;/span&gt;label &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"confirm"&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;gt;&lt;/span&gt;Confirmar&lt;span style="color: rgb(153, 0, 0);"&gt;:&amp;lt;/&lt;/span&gt;label&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;&lt;/span&gt;input type&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"password"&lt;/span&gt; id&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"confirm"&lt;/span&gt; value&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;""&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;&lt;/span&gt;label &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"email"&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;gt;&lt;/span&gt;E&lt;span style="color: rgb(153, 0, 0);"&gt;-&lt;/span&gt;mail&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;/&lt;/span&gt;label&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;&lt;/span&gt;input type&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"text"&lt;/span&gt; id&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"email"&lt;/span&gt; value&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;""&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;/&lt;/span&gt;fieldset&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;&lt;/span&gt;input type&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"submit"&lt;/span&gt; value&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"Enviar"&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;/&lt;/span&gt;form&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;A view acima é um formulário típico em PHP/HTML. Na primeira linha serão imprimidas as mensagens de erro caso a validação dos dados falhe. Recorre-se também à função form_tag para gerar uma tag form que chamará o controlador responsável por validar e armazenar os dados.&lt;br /&gt;&lt;br /&gt;Agora para armazenar os dados resta-nos criar o controlador para o efeito. Mas antes disso vamos preparar a nossa classe modelo para guardar este tipo de dados. Lembre-se que estamos a criar um formulário para registo de utilizadores e dados sensíveis como a password não serão armazenados no formato em que são inseridos. A palavra passe será transformada antes de ser armazenada recorrendo à função de &lt;span style="font-style: italic;"&gt;hashing&lt;/span&gt; sha1 utilizando uma chave salt para impedir a obtenção da palavra passe através de dicionários com &lt;span style="font-style: italic;"&gt;hashs&lt;/span&gt; conhecidos. Ao modelo user_model.php serão acrescentados os seguintes métodos:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;private &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;hashPassword&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$password&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//gera uma string salt aleatória&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'salt'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sha1&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;rand&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;())&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//gera o hashing da password&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'password'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sha1&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'salt'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;].&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$password&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;/b&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;register&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'username'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;input&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;post&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'username'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$hash&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;hashPassword&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;input&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;post&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'passwd'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'passwd'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$hash&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'password'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'salt'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$hash&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'salt'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'email'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;input&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;post&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'email'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;db&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;insert&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'users'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;?&amp;gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;O método &lt;span style="font-family:arial;"&gt;register&lt;/span&gt; guarda os dados, depois de codificar a password. Usando o método &lt;span style="font-family:arial;"&gt;insert&lt;/span&gt; do &lt;span style="font-style: italic;"&gt;Active Record &lt;/span&gt;a inserção de dados não poderia ser mais simples, basta um array associativo em que o indice corresponde ao nome do campo na tabela e depois passá-lo como argumento da função insert. Para obter os dados enviados pelo formulário podem usar o método &lt;span style="font-family:arial;"&gt;$this-&gt;input-&gt;post('nome')&lt;/span&gt; ou aceder directamente ao respectivo elemento no array post: &lt;span style="font-family:arial;"&gt;$_POST['nome']&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;O método &lt;span style="font-family:arial;"&gt;hashPassword&lt;/span&gt; é responsável apenas por gerar um hash e um salt para a password.&lt;br /&gt;&lt;br /&gt;Por fim no controlador &lt;span style="font-family:arial;"&gt;user&lt;/span&gt; vamos criar um método &lt;span style="font-family:arial;"&gt;register&lt;/span&gt; que, neste exemplo, será responsável por criar as regras e executar o ciclo de validação.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;register&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//definição da lista de regras a aplicar&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$config&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;array&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;array&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;'field'&lt;/span&gt;   &lt;span style="color: rgb(153, 0, 0);"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'username'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;'label'&lt;/span&gt;   &lt;span style="color: rgb(153, 0, 0);"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'Nome de Utilizador'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;'rules'&lt;/span&gt;   &lt;span style="color: rgb(153, 0, 0);"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'required|min_length[4]|max_length[20]'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;),&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;array&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;'field'&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'passwd'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;'label'&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'Palavra Passe'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;'rules'&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'required|min_length[6]|matches[confirm]'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;),&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;array&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;'field'&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'confirm'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;'label'&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'Confirmação de Palavra Passe'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;'rules'&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'required'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;),&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;array&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;'field'&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'email'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;'label'&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'E-mail'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;'rules'&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'required|valid_email'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//atribui a lista de regras à próxima execução da validação&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;form_validation&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;set_rules&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$config&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//Teste de validação de dados&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;((&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;form_validation&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;run&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;())==&lt;/span&gt;FALSE&lt;span style="color: rgb(153, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//caso a validação não tenha tido sucesso&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//ou ainda não foi invocada&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;load&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;view&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'user/register'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//se a validação teve sucesso&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;user_model&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;register&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//redirecciona para uma página de sucesso&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;redirect&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'user/success'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;?&amp;gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Neste exemplo recorremos ao método de criar um array com todas as regras de validação a aplicar. Nesse array cada elemento possui três campos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;field: possui o nome do campo a avaliar, deverá obrigatoriamente corresponder ao id do elemento do formulário que fornecerá esses dados.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;label: contém uma identificação do campo, compreensível pelos utilizadores, a aparecer na mensagem de erro.&lt;/li&gt;&lt;li&gt;rules: aqui são declaradas as regras a ser aplicadas ao campo, as mais comuns são: required, campo obrigatório; min_length/max_length, definem os limites de tamanho em caracteres dos dados inseridos; valid_email, endereço de correio electrónico válido; etc...&lt;/li&gt;&lt;/ul&gt;A estrutura if no exemplo garante a execução do ciclo de validação. Na primeira chamada ao controlador, invocada pelo utilizador, a validação falha sempre sem qualquer erro, por isso é exibida a view com o formulário. O utilizador ao enviar os dados faz com que o controlador seja de novo invocado e a validação executada. Se falhar será re-exibido o formulário com as respectivas mensagens de erro. Caso os dados estejam correctamente inseridos, estes serão guardados na base de dados. Após o armazenamento o controlador redirecciona-nos para uma página de sucesso que não foi listada neste exemplo, dada a sua simplicidade deixo-a ao critério de cada um.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8093072554885564114-7115716642652119805?l=programadoranonimo.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ProgramadorAnonimo?a=tWNTWPpQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/ProgramadorAnonimo?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ProgramadorAnonimo?a=aKuPnABF"&gt;&lt;img src="http://feeds.feedburner.com/~f/ProgramadorAnonimo?i=aKuPnABF" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ProgramadorAnonimo/~3/4Hf9xnwPBK0/tutorial-mvc-4-inserir-de-dados.html</link><author>noreply@blogger.com (Rui)</author><thr:total>9</thr:total><feedburner:origLink>http://programadoranonimo.blogspot.com/2008/10/tutorial-mvc-4-inserir-de-dados.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8093072554885564114.post-9159698847054095682</guid><pubDate>Thu, 16 Oct 2008 16:11:00 +0000</pubDate><atom:updated>2008-10-20T15:52:53.978-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tutorial MVC-CodeIgniter</category><category domain="http://www.blogger.com/atom/ns#">tutoriais</category><category domain="http://www.blogger.com/atom/ns#">CodeIgniter</category><title>Tutorial MVC - 3 Acesso a dados</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qJgsz47MD2n6idZeIWCunSncmvE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qJgsz47MD2n6idZeIWCunSncmvE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qJgsz47MD2n6idZeIWCunSncmvE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qJgsz47MD2n6idZeIWCunSncmvE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Depois de termos dado uma visão global ao padrão MVC e de dar os primeiros passos com a &lt;span style="font-style: italic;"&gt;framework&lt;/span&gt; CodeIgniter vamos abordar uma parte também importante de uma aplicação web: o acesso a bases de dados.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Criação da base de dados e configurar o acesso&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ao contrário de algumas &lt;span style="font-style: italic;"&gt;frameworks&lt;/span&gt;, p.e.: &lt;span style="font-style: italic;"&gt;Symfony&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;Django&lt;/span&gt;, etc... o CodeIgniter não possui nenhum mecanismo próprio para criação de bases de dados, à semelhança do que acontece no &lt;span style="font-style: italic;"&gt;Ruby on Rail&lt;/span&gt;s e &lt;span style="font-style: italic;"&gt;CakePHP&lt;/span&gt;, pelo que esta terá que ser criada com as ferramentas fornecidas pelo seu SGBD. O CodeIgniter segue um padrão de acesso a dados conhecido como Active Record que será demonstrado mais à frente.  Para este capítulo apenas iremos utilizar a seguinte tabela utilizando o MySQL:&lt;pre&gt;&lt;tt&gt;&lt;blockquote&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;CREATE&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;TABLE&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;`users`&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;`id`&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;int&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);font-size:130%;" &gt;11&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;)&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NOT&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;auto_increment&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;,&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;`username`&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;varchar&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);font-size:130%;" &gt;20&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;)&lt;/span&gt;&lt;span style="font-size:130%;"&gt; character &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&lt;/b&gt; latin1 &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NOT&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;,&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;`passwd`&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;varchar&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);font-size:130%;" &gt;40&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;)&lt;/span&gt;&lt;span style="font-size:130%;"&gt; character &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&lt;/b&gt; latin1 &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NOT&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;,&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;`salt`&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;varchar&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);font-size:130%;" &gt;40&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;)&lt;/span&gt;&lt;span style="font-size:130%;"&gt; character &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&lt;/b&gt; latin1 &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NOT&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;,&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;`email`&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;varchar&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);font-size:130%;" &gt;100&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;)&lt;/span&gt;&lt;span style="font-size:130%;"&gt; character &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&lt;/b&gt; latin1 &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NOT&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;,&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;PRIMARY&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;KEY&lt;/span&gt;&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;`id`&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;)&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;Agora vamos configurar o acesso à base de dados no CodeIgniter, dentro do directório application/config editem o ficheiro database.php:&lt;br /&gt;&lt;pre&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$active_group&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;"default"&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$active_record&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; TRUE&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'default'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;][&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'hostname'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;"localhost"&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'default'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;][&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'username'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;"o_meu_nick"&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'default'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;][&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'password'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;"a_minha_pass"&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'default'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;][&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'database'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;"nome_da_bd"&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'default'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;][&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'dbdriver'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;"mysql"&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'default'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;][&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'dbprefix'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;""&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'default'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;][&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'pconnect'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; TRUE&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'default'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;][&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'db_debug'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; TRUE&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'default'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;][&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'cache_on'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; FALSE&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'default'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;][&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'cachedir'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;""&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'default'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;][&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'char_set'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;"utf8"&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'default'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;][&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'dbcollat'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;"utf8_general_ci"&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;br /&gt;O ficheiro em sí não tem muito que saber, basta alterar o valor de cada elemento com os dados respectivos. Para seguir este tutorial será necessário ter a variável $active_record a TRUE. O passo seguinte será configurar o acesso à classe de base de dados. Isto pode ser feito de dois modos: activar o carregamento automático da classe ou carregá-la no construtor de cada &lt;span style="font-style: italic;"&gt;Controller&lt;/span&gt; ou &lt;span style="font-style: italic;"&gt;Model&lt;/span&gt;:&lt;br /&gt;&lt;pre&gt;&lt;tt&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;&lt;/span&gt;&lt;/i&gt;&lt;blockquote&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//---Carregamento "Manual"---&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//em cada controlador ou modelo invocar&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//$this-&amp;gt;load-&amp;gt;database()&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;/b&gt; User &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;extends&lt;/span&gt;&lt;/b&gt; Controller&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;{&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;  //em PHP4: function Nome()&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;__construct&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;()&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  {&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;   parent&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;::&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Controller&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;();&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;    $this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;load&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;database&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;();&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  }&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;}&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//---Carregamento automático&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//para carregamento automático editar config/autoload.php&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//e adicionar 'database' ao array $autoload['libraries']&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$autoload&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'libraries'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;array&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'database'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;br /&gt;Para verificar se a conexão à base de dados está a funcionar basta correr o seu browser e abrir o url da sua aplicação. Se não foi informado de algum erro, então está tudo a funcionar.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Nota:&lt;/span&gt; A escolha de utilização de carregamento automático ou não classes está dependente do tipo de projecto. Se for uma classe utilizada por todos os controladores recomenda-se o carregamento automático de modo a poupar algum esforço. Se essa classe apenas for utilizada por algumas funcionalidades então recomendo que se faça o carregamento apenas quando necessárias para evitar sobrecarregar os controladores com material desnecessário.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ler registos da base de dados&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A exibição de dados é certamente a tarefa mais comum em aplicações web. Para demonstrar como realizar este tipo de tarefas  vamos criar duas actividades num controlador &lt;span style="font-family:arial;"&gt;User&lt;/span&gt; em &lt;span style="font-family:arial;"&gt;controllers/user.php&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;user/all&lt;/li&gt;&lt;li&gt;user/show/$id&lt;/li&gt;&lt;/ul&gt;Para testar este exemplo recomendo que introduzam alguns dados na tabela users.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;/b&gt; User &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;extends&lt;/span&gt;&lt;/b&gt; Controller&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;{&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;__construct&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;()&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  {&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;   parent&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;::&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Controller&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;();&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;    $this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;load&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;helper&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'url'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  }&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;all&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;()&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  {&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    //selecciona todos os registos de users&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;    $data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'list'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]=&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;get&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'users'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    //envia a lista de dados para a view&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;    $this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;load&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;view&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'user/all'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  }&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;show&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;()&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  {&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    //vai buscar o id ao url, 3º elemento&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    //se não for escrito retorna 0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;    $username&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;uri&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;segment&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);font-size:130%;" &gt;3&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;,&lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);font-size:130%;" &gt;0&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;    if&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$username&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;==&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);font-size:130%;" &gt;0&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;)&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;    {&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;     //se o id não foi fornecido redireciona&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;     &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;redirect&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'user/all'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;    }&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;    else&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;    {&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;     $result&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;get_where&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;     'users'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;,&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;     array&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'username'&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$username&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;));&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;     //selecciona a única linha do resultado&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;     $data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'user'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$result&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;row&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;();&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;     $this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;load&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;view&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'user/show'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;    }&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  }&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;}&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;E agora as duas &lt;span style="font-family:arial;"&gt;user/all&lt;/span&gt; e &lt;span style="font-family:arial;"&gt;user/show&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;font-family:arial;" &gt;user/all:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;h1&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;Lista de utilizadores&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;h1&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;table&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;tr&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;th&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;Username&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;th&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;th&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;Email&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;th&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;th&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;th&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;tr&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$list&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;result&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;()&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;as&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$user&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;):&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;?&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;tr&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;td&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;echo&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$user&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;username &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;?&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;td&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;td&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;echo&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$user&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;email &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;?&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;td&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;td&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;echo&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;anchor&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'user/show/'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$user&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;username&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);?&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;td&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;tr&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;endforeach&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;?&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;table&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;font-family:arial;" &gt;user/show:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;p&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;b&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Username&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;:&amp;lt;/&lt;/span&gt;&lt;span style="font-size:100%;"&gt;b&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;echo&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;$user&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;username &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;?&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:100%;"&gt;p&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;p&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;b&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;E&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;-&lt;/span&gt;&lt;span style="font-size:100%;"&gt;mail&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;:&amp;lt;/&lt;/span&gt;&lt;span style="font-size:100%;"&gt;b&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;echo&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:100%;" &gt;$user&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;email &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;?&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:100%;"&gt;p&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:100%;" &gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Os metodos mais importantes para este exempo são:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;$this-&gt;db-&gt;get('tabela'):&lt;/span&gt; Devolve todos os dados da tabela (SELECT * FROM tabela)&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;$this-&gt;db-&gt;get_where('tabela', critérios):&lt;/span&gt; selecciona todos os registo que correspondam a um critério.&lt;/li&gt;&lt;/ul&gt;Os registos devolvidos são armazenados numa estrutura em memória da qual se pode extrair cada um deles como instância de um objecto Active Record, como neste exemplo, ou alternativamente num array associativo.&lt;br /&gt;Neste exemplo foram usados dois métodos: result() e row(). O método result, usado na view user/all gera uma lista de objectos row, cada um deles representa um registo. O método row extrai directamente uma linha, o que é muito útil para casos como este em que a consulta à base de dados devolve uma única linha, caso devolva mais que uma linha o método row devolverá apenas a primeira linha.&lt;br /&gt;&lt;br /&gt;Neste exemplo utilizamos o helper url, este fornece, entre outras, a função anchor que nos permite criar hyperlinks de forma dinâmica para outras funcionalidades da nossa aplicação. No exemlo acima podemos ver que esta é utilizada para criar ligações para a página show de cada registo.&lt;br /&gt;&lt;br /&gt;Outra função a destacar que utilizamos é a função uri-&gt;segment que extrai elementos da nossa url, neste caso o username. O segundo parâmetro é opcional e indica o valor por omissão caso se invoque esa funcionalidade sem fornecer o username.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Modelos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como foi explicado no primeiro tutorial, no padrão MVC o Model é responsável pela abstracção do acesso a dados. O que se passa no CodeIgniter é que o padrão Active Record já faz isso de uma forma mais geral. Pelo que é possível criar um projecto sem ter que implementar classes modelo, mas para casos mais especificos como consultas mais complexas é recomendado implementar essas funções numa classe Model.&lt;br /&gt;&lt;br /&gt;Podemos reestruturar o exemplo anterior tendo em conta os seguintes aspectos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Estamos a pedir à tabela todos os campos de um registo quando apenas utilizamos dois deles&lt;/li&gt;&lt;li&gt;Podemos criar métodos para obter os dados prontos a ser exibidos, encurtando o tamanho dos nossos controladores&lt;/li&gt;&lt;/ul&gt;Para isso vamos criar uma classe user_model.php no directório models:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;/b&gt; User_model &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;extends&lt;/span&gt;&lt;/b&gt; Model&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;{&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;getDisplayableByUsername&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$username&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;)&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  {&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    //indica os campos&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'username, email'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$result&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;get_where&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'users'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;,&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;array&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'username'&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$username&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;));&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$result&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;row&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;();&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  }&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;getAllDisplayable&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;()&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  {&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'username, email'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$result&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;db&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;get&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'users'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$result&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;result&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;();&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  }&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Neste exemplo criamos duas funções que retornam os resultados apenas com os dados que desejamos exibir. O método &lt;span style="font-family:arial;"&gt;select&lt;/span&gt; da classe &lt;span style="font-family:arial;"&gt;db&lt;/span&gt; encarrega-se de definir os campos a retornar pela próxima consulta à base de dados.&lt;br /&gt;Agora falta-nos alterar o controlador para utilizar o model.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;/b&gt; User &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;extends&lt;/span&gt;&lt;/b&gt; Controller&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;__construct&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;parent&lt;span style="color: rgb(153, 0, 0);"&gt;::&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Controller&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;load&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;helper&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'url'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;load&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;model&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'user_model'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;all&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//selecciona todos os registos de users&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//a ser exibidos&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'list'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;user_model&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;getAllDisplayable&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;load&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;view&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'user/all'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;show&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//vai buscar o id ao url, 3º elemento&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;//se não for escrito retorna 0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$username&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;uri&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;segment&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;3&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$username&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;==&lt;/span&gt; &lt;span style="color: rgb(153, 51, 153);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;     &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;redirect&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'user/all'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;     &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'user'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;=&lt;/span&gt;&lt;br /&gt; &lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;user_model&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;GetDisplayableByUsername&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$username&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;     &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;load&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;view&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'user/show'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;tt&gt;&lt;span&gt;&lt;i&gt;&lt;span&gt;&lt;tt&gt;&lt;span style="font-size:130%;"&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;    &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-size:130%;"&gt;&lt;tt&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Para completar, como o método &lt;span style="font-family:arial;"&gt;GetAllDisplayable&lt;/span&gt; já retorna uma lista result devemos ir ao código da view &lt;span style="font-family:arial;"&gt;user/all&lt;/span&gt; e remover a chamada ao método &lt;span style="font-family:arial;"&gt;result()&lt;/span&gt; no ciclo &lt;span style="font-family:arial;"&gt;foreach&lt;/span&gt; para que tudo funcione devidamente.&lt;br /&gt;&lt;br /&gt;Este capítulo fica por aqui, no próximo serão abordados os temas de adição e edição de registos, assim como a validação dos dados introduzidos pelos utilizadores.&lt;br /&gt;Até à próxima.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8093072554885564114-9159698847054095682?l=programadoranonimo.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ProgramadorAnonimo?a=WuJpfpPu"&gt;&lt;img src="http://feeds.feedburner.com/~f/ProgramadorAnonimo?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ProgramadorAnonimo?a=1bVYuR0J"&gt;&lt;img src="http://feeds.feedburner.com/~f/ProgramadorAnonimo?i=1bVYuR0J" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ProgramadorAnonimo/~3/wUMAXkFlC6w/tutorial-mvc-3-acesso-dados.html</link><author>noreply@blogger.com (Rui)</author><thr:total>6</thr:total><feedburner:origLink>http://programadoranonimo.blogspot.com/2008/10/tutorial-mvc-3-acesso-dados.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8093072554885564114.post-4447350110958706960</guid><pubDate>Mon, 13 Oct 2008 16:19:00 +0000</pubDate><atom:updated>2008-10-17T15:24:44.491-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tutorial MVC-CodeIgniter</category><category domain="http://www.blogger.com/atom/ns#">tutoriais</category><category domain="http://www.blogger.com/atom/ns#">CodeIgniter</category><title>Tutorial MVC - 2 CodeIgniter, Primeiros Passos</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3yGRuVPGzlZEgjh4tqGc_jd4pps/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3yGRuVPGzlZEgjh4tqGc_jd4pps/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3yGRuVPGzlZEgjh4tqGc_jd4pps/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3yGRuVPGzlZEgjh4tqGc_jd4pps/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;Primeiros passos&lt;/span&gt;&lt;br /&gt;Para utilizar esta &lt;span style="font-style: italic;"&gt;framework&lt;/span&gt; basta qualquer servidor HTTP com suporte a PHP. É extremamente provável que a aplicação que deseja desenvolver necessite de uma base de dados, estão disponíveis os motores livres PostgreSQL, MySQL e SQLite juntamente com outros proprietários.&lt;br /&gt;&lt;br /&gt;O primeiro passo é a instalação da &lt;span style="font-style: italic;"&gt;framework&lt;/span&gt;. Nada mais simples.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fazer o &lt;span style="font-style: italic;"&gt;download&lt;/span&gt; da &lt;span style="font-style: italic;"&gt;framework&lt;/span&gt; &lt;a href="http://codeigniter.com/download.php"&gt;aqui&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Descomprimir o ficheiro.&lt;/li&gt;&lt;li&gt;E copiar o conteúdo o conteúdo do directório CodeIgniter_x.x.xx para o seu directório web.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Nota:&lt;/span&gt; Evite desenvolver a partir do seu servidor de alojamento. Se desejar trabalhar num ambiente semelhante a um ambiente real, será boa ideia recorrer a máquinas virtuais.&lt;br /&gt;&lt;br /&gt;Depois no &lt;span style="font-style: italic;"&gt;web browser&lt;/span&gt; abrir: http://localhost/index.php, se tudo correu bem então está pronto a começar a trabalhar.&lt;br /&gt;&lt;br /&gt;Como ambiente de desenvolvimento recomendo a IDE Eclipse com o plugin PHP Edit (ou mesmo o PDT). É uma ferramenta bastante robusta, mas de fácil utilização e a de completação automática de código funciona bem com esta framework.&lt;br /&gt;&lt;br /&gt;Podem fazer &lt;span style="font-style: italic;"&gt;download&lt;/span&gt; a partir do &lt;a href="http://www.eclipse.org/"&gt;site oficial&lt;/a&gt; e instalar o plugin PHP posteriormente, ou fazer o &lt;span style="font-style: italic;"&gt;download &lt;/span&gt;personalizado com as funcionalidades que desejar no site &lt;a href="http://www.yoxos.com/ondemand/"&gt;yoxos&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Estrutura de directórios&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A framework é constituída por um conjunto de directórios por onde estão espalhados os diversos componentes que a compõem.  Ao instalar verá que existe um directório de documentação na raiz, poderá mantê-lo ou apagá-lo, poderá mantê-lo durante o desenvolvimento da aplicação, mas deverá apagá-lo quando disponibilizar a aplicação online, a não ser que queira disponibilizar essa documentação online.&lt;br /&gt;Existe também um ficheiro &lt;span style="font-style: italic;"&gt;index.php&lt;/span&gt;, este tem obrigatoriamente que existir pois todos os pedidos à aplicação arrancam a partir dele.&lt;br /&gt;Por fim temos o directório &lt;span style="font-style: italic;"&gt;system&lt;/span&gt; onde existem os seguintes directórios:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;application:&lt;/span&gt;  este será o directório onde fará o desenvolvimento da sua aplicação. Em condições normais será o único a sofrer alterações durante o desenvolvimento.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;cache:&lt;/span&gt; a cache do sistema, onde são criados ficheiros temporários que permitem o aumento da performance da aplicação.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;codeigniter:&lt;/span&gt; o "motor" da framework.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;database: &lt;/span&gt;controladores de base de dados.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;fonts:&lt;/span&gt; tipos de letra.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;helpers:&lt;/span&gt; colecções de funções de auxilio ao desenvolvimento que, por exemplo, poderão ajudar a criar elementos de uma página de uma forma mais simples.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;language:&lt;/span&gt; ficheiros com termos usados pela framework numa determinada língua.  &lt;a href="http://programadoranonimo.blogspot.com/2008/10/pacote-de-portugs-standard-para.html"&gt;Instalação do Português padrão.&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;library:&lt;/span&gt; biblioteca com as classes de referência que podem ser utilizadas no desenvolvimento da aplicação.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;logs:&lt;/span&gt; logs de sistema&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;plugins: &lt;/span&gt;similar aos helpers, só que em vez de uma colecção de funções os plugins apenas disponibilizam uma função.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;scaffolding:&lt;/span&gt; motor de scaffolding. Permite a gerar automaticamente páginas de visualização, criação, edição e eliminação de dados a partir de tabelas da base de dados. Esta ferramenta apenas deve ser utilizada durante o desenvolvimento pois não oferece qualquer garantia de segurança. Este modelo de scaffolding deixou de ser oficialmente suportado e será substituido, pelo que não deverá ser abordado para já nesta série de tutoriais.&lt;/li&gt;&lt;/ul&gt;Dentro da pasta application temos um conjunto de directórios orientado para o desenvolvimento da aplicação. Os directórios &lt;span style="font-style: italic;"&gt;helpers, languages &lt;/span&gt;e&lt;span style="font-style: italic;"&gt; libraries &lt;/span&gt;são equivalentes aos que encontramos na directoria &lt;span style="font-style: italic;"&gt;system&lt;/span&gt;, mas neste caso destinam-se a componentes criados especificamente para o seu projecto. Os restantes directórios são os seguintes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;config: &lt;/span&gt;ficheiros de configuração.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;controllers:&lt;/span&gt; local onde criará os seus &lt;span style="font-style: italic;"&gt;controllers&lt;/span&gt;.&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;errors:&lt;/span&gt; páginas de erro personalizadas, como por exemplo o famoso 404-Not Found&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;hooks:&lt;/span&gt; extensões ao CodeIgniter, onde poderá criar funções ou classes que serão executadas em determinados momentos do fluxo de processamento da aplicação.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;models:&lt;/span&gt; local onde criará os seus &lt;span style="font-style: italic;"&gt;models&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;views:&lt;/span&gt; local onde criará as suas &lt;span style="font-style: italic;"&gt;views&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Olá mundo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para variar vamos começar com a criação de um programa Olá Mundo.&lt;br /&gt;&lt;br /&gt;A maneira mais simples de o fazer é a utilizar apenas um controlador, vá à pasta &lt;span style="font-style: italic;"&gt;controllers  &lt;/span&gt;e crie um ficheiro chamado &lt;span style="color: rgb(0, 0, 102);"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;primeiro.php&lt;/span&gt; e edite-o. Nele escreva o seguinte código:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;/tt&gt;&lt;blockquote&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&lt;tt&gt;&amp;lt;?php&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;/b&gt; Primeiro &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;extends&lt;/span&gt;&lt;/b&gt; Controller&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;  //em PHP4: function Primeiro()&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;__construct&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;()&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;  {&lt;br /&gt;&lt;/span&gt;     parent&lt;span style="color: rgb(153, 0, 0);"&gt;::&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Controller&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;index&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;     echo&lt;/span&gt;&lt;/b&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'Olá Mundo'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Se digitar no seu &lt;span style="font-style: italic;"&gt;web &lt;/span&gt;browser o endereço &lt;span style="font-family:courier new;"&gt;http://localhost/index.php/primeiro&lt;/span&gt; obterá uma página com o texto Olá Mundo.&lt;br /&gt;&lt;br /&gt;O exemplo começa pela declaração de uma classe que herda as características de classe do CodeIgniter &lt;span style="font-style: italic;"&gt;Controller&lt;/span&gt;, todos os &lt;span style="font-style: italic;"&gt;controllers&lt;/span&gt; são subclasses de &lt;span style="font-style: italic;"&gt;Controller, &lt;/span&gt;o nome da classe e do ficheiro são iguais, a única diferença é que o nome da classe deve começar sempre com maiúscula. Depois temos duas funções: a função &lt;span style="font-family:courier new;"&gt;Primeiro()&lt;/span&gt; é o construtor da classe, que neste caso apenas chama o construtor da sua superclasse, este pode ser usado para carregar qualquer tipo de componente do sistema; a segunda função é uma actividade do controlador&lt;span style="font-style: italic;"&gt;&lt;/span&gt;, normalmente todos os controladores têm uma função index que é chamada sempre que esse controlador é invocado sem que seja invocada qualquer função.&lt;br /&gt;&lt;br /&gt;Vamos acrescentar mais uma função ao nosso controlador:&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;/b&gt; Primeiro &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;extends&lt;/span&gt;&lt;/b&gt; Controller&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;{&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;  (...)&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;opiniao&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;()&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  {&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;    echo&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'Estou a gostar muito desta ferramenta'&lt;/span&gt;&lt;span style="font-size:130%;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;  }&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;}&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;?&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;Esta função é similar à anterior, apenas serve para demonstrar o funcionamento dos endereços. Neste caso, para invocar esta actividade do controlador deverá digitar o endereço: &lt;span style="font-family:courier new;"&gt;http://localhost/index.php/primeiro/opiniao&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A estrutura padrão dos endereços é:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...index.php/Nome do Controlador/Actividade/Informação Complementar&lt;/span&gt;&lt;br /&gt;Caso não seja especificada nenhuma actividade será sempre executada a função &lt;span style="font-family:courier new;"&gt;index&lt;/span&gt;, como no primeiro exemplo, pelo que deverá existir sempre um &lt;span style="font-family:courier new;"&gt;index&lt;/span&gt; em cada controlador.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Views&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As views são ficheiros PHP que contêm código HTML e chamadas PHP responsáveis pela apresentação dos dados. No exemplo anterior eram os controladores que apresentavam qualquer conteúdo na página, o que não é prático nem segue a norma MVC, pelo que vamos fazer algumas alterações.&lt;br /&gt;&lt;br /&gt;Primeiro vamos acrescentar uma nova view, no directório views crie o ficheiro mensagem.php com o seguinte conteúdo:&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;html&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;head&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;title&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;echo&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$title&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;?&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;title&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;head&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;body&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;h1&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;echo&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$message&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;?&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;h1&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;body&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;html&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Esta &lt;span style="font-style: italic;"&gt;view&lt;/span&gt; será invocada por ambos os controladores e como podemos observar serão passadas duas variáveis: &lt;span style="font-family:courier new;"&gt;title&lt;/span&gt; que definirá o titulo a aparecer na janela do &lt;span style="font-style: italic;"&gt;browser&lt;/span&gt; e &lt;span style="font-family:courier new;"&gt;message&lt;/span&gt; que terá a mensagem que aparecerá na página web.&lt;br /&gt;Para utilizar a view vamos alterar ambas as acções do controlador.&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;tt&gt;&amp;lt;?php&lt;/tt&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;tt&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;/b&gt; Primeiro &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;extends&lt;/span&gt;&lt;/b&gt; Controller&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: rgb(154, 25, 0);"&gt;  //em PHP4: function Primeiro()&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;__construct&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;()&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt; {&lt;/span&gt;&lt;br /&gt;    parent&lt;span style="color: rgb(153, 0, 0);"&gt;::&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Controller&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;index&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    $data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'title'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;]=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'Primeiro Exemplo'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    $data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'message'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;]=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'Olá Mundo!'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    $this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;load&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;view&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'mensagem'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;  function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;opiniao&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    $data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'title'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;]=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'A minha opinião'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    $data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'message'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;]=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'Estou a gostar muito desta ferramenta'&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;tt&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;    $this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;load&lt;span style="color: rgb(153, 0, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;view&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'mensagem'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Agora o funcionamento ficou ligeiramente alterado. Para passar dados a uma view é necessário criar um vector associativo em que o índice terá correspondência a uma variável com o mesmo nome na &lt;span style="font-style: italic;"&gt;view.&lt;/span&gt; A última linha de cada actividade é uma chamada à &lt;span style="font-style: italic;"&gt;view&lt;/span&gt; onde o primeiro parâmetro corresponde ao nome do ficheiro da &lt;span style="font-style: italic;"&gt;view&lt;/span&gt; (a extensão PHP pode ser omitida), e o segundo corresponde à estrutura com os dados a ser passados. Não há qualquer obrigação de passar dados para uma view, pelo que nestes casos deverá apenas invocar a &lt;span style="font-style: italic;"&gt;view&lt;/span&gt; apenas com o primeiro parâmetro.&lt;br /&gt;&lt;br /&gt;Para uma &lt;span style="font-style: italic;"&gt;view&lt;/span&gt; podem ser passados dados de qualquer tipo, sejam eles numéricos, texto, objectos ou outras estruturas de dados. O próximo exemplo demonstra como passar um vector para a view e como este normalmente é tratado.&lt;br /&gt;Crie uma nova view chamada topics.php com o seguinte conteúdo:&lt;/span&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;tt&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;html&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;head&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;title&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;Uma lista de tópicos&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;title&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;head&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;body&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;ul&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$topics&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;as&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$topic&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;):&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;?&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;li&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;echo&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$topic&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;?&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;li&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;?php&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;endforeach&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;?&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;ul&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;body&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:130%;"&gt;html&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Aqui a única diferença é que é usado um ciclo foreach para escrever cada um dos elementos na página.&lt;br /&gt;&lt;br /&gt;Para pôr esta view a funcionar necessitamos de criar uma actividade no nosso controlador que o invoque, por isso vamos adicionar a função topics():&lt;tt&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;tt&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;/span&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;topics&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;()&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;{&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;  $data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'topics'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;]&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;=&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;b&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;array&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'Model'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'View'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'Controller'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;  $this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;load&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;view&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'topics'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$data&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/tt&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;Nada mais simples.&lt;br /&gt;&lt;br /&gt;No directório &lt;span style="font-style: italic;"&gt;views&lt;/span&gt; é possível criar subdirectórios para as organizar. Para invocar essas &lt;span style="font-style: italic;"&gt;views&lt;/span&gt; deverá incluir o nome do directório na sua chamada:&lt;tt&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 153, 0);font-size:130%;" &gt;$this&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;load&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;-&amp;gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;view&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;'directory/topics'&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;);&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="font-family:Georgia,serif;"&gt;E &lt;/span&gt;&lt;/span&gt;assim terminamos este capítulo, no próximo serão abordados o uso de bases de dados e os modelos.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8093072554885564114-4447350110958706960?l=programadoranonimo.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ProgramadorAnonimo?a=aHbrMDC0"&gt;&lt;img src="http://feeds.feedburner.com/~f/ProgramadorAnonimo?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ProgramadorAnonimo?a=2isYzJN0"&gt;&lt;img src="http://feeds.feedburner.com/~f/ProgramadorAnonimo?i=2isYzJN0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ProgramadorAnonimo/~3/csGL0b4bFxg/tutorial-mvc-2-codeigniter-primeiros.html</link><author>noreply@blogger.com (Rui)</author><thr:total>2</thr:total><feedburner:origLink>http://programadoranonimo.blogspot.com/2008/10/tutorial-mvc-2-codeigniter-primeiros.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8093072554885564114.post-6986795181287191511</guid><pubDate>Mon, 13 Oct 2008 12:46:00 +0000</pubDate><atom:updated>2008-10-13T06:31:29.366-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CodeIgniter</category><title>Pacote de Portugês standard para CodeIgniter</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rZ81s6EkTlX1uxGZ6IuPcOkG52k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rZ81s6EkTlX1uxGZ6IuPcOkG52k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rZ81s6EkTlX1uxGZ6IuPcOkG52k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rZ81s6EkTlX1uxGZ6IuPcOkG52k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Criei um pacote de língua portuguesa standard para o CodeIgniter 1.6.3, a partir do pacote pt-BR criado por &lt;a href="http://rapidshare.com/files/100611516/ci_pt-br_1.6.1.zip.html"&gt;Matheus Bombonato&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Os pacotes de línguas são constituidos por diversos termos e mensagens utilizados nas aplicações desenvolvidas com o CodeIgniter como por exemplo: mensagens de erro, nomes dos meses, dias da semana, etc...&lt;br /&gt;&lt;br /&gt;Para o instalar faça o &lt;span style="font-style: italic;"&gt;download&lt;/span&gt; e extraia-o para o directório &lt;span style="font-style: italic;"&gt;wwwroot/system/application/languages.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://codeigniter.com/wiki/65cd617a760992fce592e8e6190a0f7c/"&gt;Download pt-PT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Depois edite o ficheiro &lt;span style="font-style: italic;"&gt;wwwroot/system/application/config/config.php&lt;/span&gt;&lt;span&gt; e substitua a seguinte linha:&lt;br /&gt;&lt;blockquote&gt;$config['language']    = "english";&lt;/blockquote&gt;Por esta:&lt;br /&gt;&lt;blockquote&gt;$config['language']    = "pt-pt";&lt;/blockquote&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8093072554885564114-6986795181287191511?l=programadoranonimo.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ProgramadorAnonimo?a=kh70UXj8"&gt;&lt;img src="http://feeds.feedburner.com/~f/ProgramadorAnonimo?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ProgramadorAnonimo?a=vOMK35Q6"&gt;&lt;img src="http://feeds.feedburner.com/~f/ProgramadorAnonimo?i=vOMK35Q6" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ProgramadorAnonimo/~3/MdHDBIbhQ7A/pacote-de-portugs-standard-para.html</link><author>noreply@blogger.com (Rui)</author><thr:total>0</thr:total><feedburner:origLink>http://programadoranonimo.blogspot.com/2008/10/pacote-de-portugs-standard-para.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8093072554885564114.post-4689518806710272948</guid><pubDate>Fri, 10 Oct 2008 00:49:00 +0000</pubDate><atom:updated>2008-10-09T19:16:50.089-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tutorial MVC-CodeIgniter</category><category domain="http://www.blogger.com/atom/ns#">tutoriais</category><title>Tutorial MVC - 1 Introdução</title><description>&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/POYbdg0mi6Tetf5JM3fzprMk_Mc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/POYbdg0mi6Tetf5JM3fzprMk_Mc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/POYbdg0mi6Tetf5JM3fzprMk_Mc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/POYbdg0mi6Tetf5JM3fzprMk_Mc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Este tutorial tem como objectivo abordar o desenvolvimento de aplicações web seguindo uma arquitectura MVC. Será criada uma série de tutorias com uma sequência idêntica à do desenvolvimento de um projecto. Não será focada qualquer questão relativa ao webdesign a não ser que seja estritamente necessário. A ferramenta utilizada neste tutorial será a framework &lt;a href="http://codeigniter.com/"&gt;codeigniter&lt;/a&gt; por razões que serão descritas à frente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;O que é o MVC?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O MVC, Model View Controller, é um padrão de desenvolvimento de aplicações, normalmente, mas não forçosamente, web. A implementação de aplicações usando este padrão são feitas com recurso a frameworks, apesar de não ser obrigatória a utilização de uma para seguir o padrão.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Camadas e respectivas funções&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Model:&lt;/span&gt; Nesta camada são definidas as regras de acesso e manipulação dos dados, que normalmente são armazenados em bases de dados ou ficheiros, mas nada indica que sirva só para alojamento persistente dos dados. Pode ser usado para dados em memória volátil, p.e.: memória RAM, apesar não se verificar tal utilização com muita frequência. Todas as regras relacionadas com tratamento, obtenção e validação dos dados devem ser implementados nesta camada.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;View: &lt;/span&gt;Esta camada é responsável por gerar a forma como a resposta será apresentada, página web, formulário, relatório, etc...&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Controller: &lt;/span&gt;É a camada responsável por responder aos pedidos por parte do utilizador. Sempre que um utilizador faz um pedido ao servidor esta camada é a primeira a ser executada.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Cadeia de Funcionamento&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta é a cadeia normal de funcionamento deste padrão, em que todas as camadas são usadas, o que nem sempre acontece:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;O utilizador efectua um pedido ao servidor&lt;/li&gt;&lt;li&gt;O &lt;span style="font-style: italic;"&gt;controller&lt;/span&gt; processa o pedido do utilizador.&lt;/li&gt;&lt;li&gt;O &lt;span style="font-style: italic;"&gt;controller&lt;/span&gt; efectua uma chamada ao &lt;span style="font-style: italic;"&gt;model&lt;/span&gt;, para obter ou manipular dados.&lt;/li&gt;&lt;li&gt;O &lt;span style="font-style: italic;"&gt;model&lt;/span&gt; devolve os dados pedidos que serão passados ao &lt;span style="font-style: italic;"&gt;view.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;A view&lt;/span&gt; gera a apresentação dos dados, p.e.: uma página HTML.&lt;/li&gt;&lt;/ol&gt;Existe a possibilidade, bastante frequente, de um pedido não precisar de invocar o &lt;span style="font-style: italic;"&gt;model&lt;/span&gt;. Basta querer gerar conteúdo que não necessite de qualquer tipo de dados. Neste caso o &lt;span style="font-style: italic;"&gt;controller&lt;/span&gt; chamará directamente ao &lt;span style="font-style: italic;"&gt;view&lt;/span&gt;. Existe também a possibilidade de não ser gerada uma &lt;span style="font-style: italic;"&gt;view&lt;/span&gt;, p.e.: o pedido ser uma actualização de dados. Apesar de não ser necessário é recomendado fazê-lo, as regras de interacção obrigam a que se notifique o utilizador do sucesso de uma operação, ou seja, a utilização de uma &lt;span style="font-style: italic;"&gt;view&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Frameworks Existentes:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Existem diversas frameworks que cobrem inúmeras linguagens,algumas só para web e outras mais genéricas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;PHP:  &lt;/span&gt;CodeIgniter, CakePHP, Symfony, Zend Framework,...&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Ruby:&lt;/span&gt; Ruby on Rails, ...&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Python: &lt;/span&gt;Django, Zope, TuboGears,...&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Java:&lt;/span&gt; J2EE, Spring Framework, ...&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Mono/.NET:&lt;/span&gt; Monorail, ...&lt;/li&gt;&lt;/ul&gt;Nota: Estas são as frameworks mais populares tendo em conta que são Software Livre, existem outras proprietárias, que obviamente não recomendo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Porquê o CodeIgniter?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;A resposta curta: porque simplesmente estou a utilizá-la de momento.&lt;br /&gt;A resposta comprida: os critérios para o tutorial foram os mesmos que para o meu projecto. A questão da linguagem caiu obviamente para o php, quer pela sua popularidade em aplicações web, quer pelo facto de ser bastante fácil obter serviços de alojamento que o suportem. Quanto à framework já utilizei o Symfony e já brinquei com o CakePHP e estou agora a utilizar o CodeIgniter. A escolha desta frameowork recaiu sobre os seguintes critérios: é simples e com um desempenho bastante bom e a sua abordagem é bastante mais directa que o CakePHP e o Symfony. Esta última é mais complexa, apesar de não ser de todo uma desvantagem. Escolhi o CodeIgniter por ter a "melhor relação custo/qualidade".&lt;br /&gt;&lt;br /&gt;No próximo tutorial metemos mão à obra. Até breve.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8093072554885564114-4689518806710272948?l=programadoranonimo.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ProgramadorAnonimo?a=QQLynEnR"&gt;&lt;img src="http://feeds.feedburner.com/~f/ProgramadorAnonimo?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ProgramadorAnonimo?a=9hYfaHTL"&gt;&lt;img src="http://feeds.feedburner.com/~f/ProgramadorAnonimo?i=9hYfaHTL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/ProgramadorAnonimo/~3/btFJ9ABWIaI/tutorial-mvc-1-introduo.html</link><author>noreply@blogger.com (Rui)</author><thr:total>0</thr:total><feedburner:origLink>http://programadoranonimo.blogspot.com/2008/10/tutorial-mvc-1-introduo.html</feedburner:origLink></item></channel></rss>

