<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Technócil &#187; Destaques</title>
	<atom:link href="http://technocil.com/category/destaques/feed/" rel="self" type="application/rss+xml" />
	<link>http://technocil.com</link>
	<description></description>
	<lastBuildDate>Tue, 20 Apr 2010 22:15:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Trabalhando com Datas em PHP &amp; MySQL</title>
		<link>http://technocil.com/2009/04/07/trabalhando-com-datas-em-php-mysql/</link>
		<comments>http://technocil.com/2009/04/07/trabalhando-com-datas-em-php-mysql/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 12:46:13 +0000</pubDate>
		<dc:creator>João Vagner</dc:creator>
				<category><![CDATA[Desenvolvimento web]]></category>
		<category><![CDATA[Destaques]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[datas]]></category>
		<category><![CDATA[pho]]></category>

		<guid isPermaLink="false">http://technocil.com/?p=261</guid>
		<description><![CDATA[Bom dia,
Datas, hora, minutos, meses, anos, informações que nos deslocam às nossas tarefas diárias, ou que nos deixam desesperados porque o tempo é pouco para tal coisa ou compromisso, pois é, data esta dentro do tempo, que nem sempre esta à nosso favor. Deixa-mos a filosofia de lado, blá nunca fui bom filosófo, quer dizer, [...]]]></description>
			<content:encoded><![CDATA[<p>Bom dia,</p>
<p>Datas, hora, minutos, meses, anos, informações que nos deslocam às nossas tarefas diárias, ou que nos deixam desesperados porque o tempo é pouco para tal coisa ou compromisso, pois é, data esta dentro do tempo, que nem sempre esta à nosso favor. Deixa-mos a filosofia de lado, blá nunca fui bom filosófo, quer dizer, jamais fui um, então comecemos logo à entender um pouco datas.</p>
<h2>Formatos de datas no Mundão!</h2>
<p>O php, a linguagem de inicio que vou usar nesse post, tem a função <strong><a href="http://br2.php.net/manual/pt_BR/function.strftime.php">strftime()</a>, </strong>ela faz a formatação de uma hora/data com as configurações locais dos paises, é importante frisar que em servidores windows, é preciso usar a função <strong><a href="http://br2.php.net/manual/pt_BR/function.setlocale.php">setlocale()</a></strong> para definir a linguagem da localidade que você vai usar, e ler no <strong>MSDN</strong> as suportadas, porque claro, o <strong><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_country_strings.asp">Windows</a></strong> complica mais do que ajuda!</p>
<p><em>Exemplo de datas com fuso horario de outros paises</em></p>
<p><em>Alemanha</em></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">//Seta o local, de_DE = alemanhã (German)</span>
<span style="color: #990000;">setlocale</span><span style="color: #009900;">&#40;</span>LC_TIME<span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;deu&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #990000;">strftime</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; estamos na  German (Alemão) %A.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p><em>Portugues Brasil</em></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">//Seta o local, &quot;portuguese-brazil&quot; ou &quot;ptb&quot; = Português Brasil</span>
<span style="color: #990000;">setlocale</span><span style="color: #009900;">&#40;</span>LC_TIME<span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;portuguese-brazil&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #990000;">strftime</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; estamos no Brasil  (Português) %A.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<h2>Formas de String:</h2>
<blockquote><p>%a &#8211; dia da semana abreviado de acordo com a localidade<br />
%A &#8211; nome da semana completo de acordo com a localidade</p></blockquote>
<p>Mais sobre as formas de string em <a href="http://br2.php.net/manual/pt_BR/function.strftime.php">PHP.Net</a> ( Manual).</p>
<p>Bom, agora que a parte de deixar configurado à data de acordo com sua localidade ou com a necessidade mesmo do desenvolvedor, por exemplo se você estiver trabalhando em um sistema que poderá ser usado em outros paìses (nossa, elevei o pessoal a programadores mundiais!), isso pode poupar-lhe de muita dor de cabeça, gritos, socos, murros, monitores, gabinetes, e HD&#8217;s!</p>
<h2>Datas em formato Timestamp</h2>
<blockquote><p>An extension of the DATE datatype that can store date and time data (including fractional seconds). The timestamp type takes 11 bytes of storage.</p></blockquote>
<p>Inglês péssimo né? é? então eu vou lhe dar uma linguada básicanisso e verbalizar essa budêga:</p>
<blockquote><p><cite>Uma extensão do datatype (tipo de data) da DATA que pode armazenar dados da data e da hora ( com segundos fracionários incluídos).  O tipo do timestamp faz exame de 11 bytes de  armazenamento..</cite></p></blockquote>
<p>Nossa, meu inglês é uma bosta também, mas o português tambem é fraco, mas é isso. é uma extenção de data para armazenamento de data hora e informações facionarias como segundos, blá e blá, se você quiser uma data exata mesmo, no real sentido, isso é sua solução!</p>
<h2>Timestamp em MySQL e outros tipos</h2>
<p>O Nosso Manual MySQL nos diz, que <strong><a href="http://dev.mysql.com/doc/refman/4.1/pt/datetime.html">DATETIMES</a></strong> e <strong><a href="http://dev.mysql.com/doc/refman/4.1/pt/datetime.html">TIMESTAMP</a></strong> são relacionadas, calma, elas não tem relações sexuais, vão ter datazinhas gritando, chorando e chamando você de titio não! nossa, mente poluída a minha não?! Elas são apenas parecidas, ou tem a mesma função, até hoje nunca descobri, ou tenho certeza disso! hahahaha!</p>
<p>Os formatos de DATE do MySQL se reservam apenas à Ano, dia e Mês: <em>YYYY-DD-MM</em>, não temos a opção de segundos fracionários, então neca de comparação exata usando segundos com esse tipo de campo.</p>
<p>Agora em Timestamp como diz a descrição da extenção, temos opção fracionária, que ficará no formato de: YYYY-DD-MM HH:MM:SS, po, mas ta feio pacas isso não? Os Brasileiros não leem datas nesse formato americano, então o MySQL permite usar o padrão de data Brasileiro ? que é DD-MM-YYYY, cara, sei não, se tiver desconheço, e não recomendo! já vou explicar os motivos.</p>
<p>Imagine essa  situação:</p>
<p>Você tem 2 datas, que precisam ser comparadas se uma é maior que outra , as datas são essas: <em>23/06/1989</em> e <em>23/08/1800</em>, e em comparações de datas você não pode usar barras, traços, essas viadagens todas pra ficar bonitinha! Seria assim seu pensamento:</p>
<p>23061989 > 23081800  vai retornar false, hahah se lasco cara!</p>
<p>Bom, olhando você ja sabe que a data mais antiga é maior que a mais nova, no nosso formato Brasileiro, mas isso esta errado, sendo que a primeira data é a maior, sendo à mais perto de nosso ano atual, não é? mas os numeros não mentem, porque nosso formato é incorreto para comparações de data, mas no formato americano é mais fácil de se comparar:</p>
<p>18002308 > 19892308 vai retornar true.</p>
<p>Mas você ficou tristinho, pois a data no formato americano fica estranho pros brasileiros, calma, tudo tem uma solução, você pode formatar a data em timestamp com uma função, ela fica em um formato agradavel de ler exemplo: <strong><em>23 de outubro de 2004 as 13:01:21</em></strong> . mas caso os dados venham do banco de dados, é necessário usar UNIX_TIMESTAMP antes no seu select, por exemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># Seleciona o campo data, usando a função UNIX_TIMESTAMP, dando renome a ela, de NovaData, campo esse da tabela TabelaLinda</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> UNIX_TIMESTAMP<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">DATA</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> NovaData <span style="color: #993333; font-weight: bold;">FROM</span> TabelaLinda;</pre></div></div>

<p>Se você chamar a função UNIX_TIMESTAMP sem nenhum argumento, exemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># Obtem a data de hoje usando os segundos, desde de 1969!</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> UNIX_TIMESTAMP<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Isso iria retorna um tipo timestamp do Unix, são segundos desde &#8216;1969-01-01 00:00:00&#8242; GMT, mais ou menos assim: 882226357</p>
<p>Bom, ai você tem um monte de numeros de segundos, o que você vai fazer com eles? colocar no prato e comer? Jogar na lata do lixo porque não serve pra nada? Pegar uma metralhadora e atirar no monitor? Ou usa a função para formatar?, ahhh garoto esperto, usa a função!</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">function</span> montaData<span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #000088;">$v_mes</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">&quot;Janeiro&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Fevereiro&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Março&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Abril&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Maio&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Junho&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Julho&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Agosto&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Setembro&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Outubro&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Novembro&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;Dezembro&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #000088;">$v_data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span><span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Y m d H i s&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #b1b100;">return</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">{$v_data[2]}</span> de {<span style="color: #006699; font-weight: bold;">$v_mes</span>[(int)<span style="color: #006699; font-weight: bold;">$v_data[1]</span>]} de <span style="color: #006699; font-weight: bold;">{$v_data[0]}</span> as <span style="color: #006699; font-weight: bold;">{$v_data[3]}</span>:<span style="color: #006699; font-weight: bold;">{$v_data[4]}</span>:<span style="color: #006699; font-weight: bold;">{$v_data[5]}</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Pronto! Basta aplicar:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">echo</span> montaData<span style="color: #009900;">&#40;</span><span style="color: #000088;">$consulta</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'NovaData'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// 23 de outubro de 2005, as 13:13:13</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Agora quando você define no seu campo tipo Timestamp? como deve inserir o formato das datas no banco? Você usa o padrão americano, temos outra função pra isso, pra em vez de se matar escrevendo date() e suas propriedades, só chama a função PadraoData().</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">function</span> padraoData<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$exibe</span> <span style="color: #339933;">=</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Y m d H i s'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$exibe</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Se você mandar imprimir date(&#8216;Y m d H i s&#8217;); vai ver que vai sair: YYYY MM DD H I S, não as letras, mas a data mesmo! que é o padrão americano, em timestamp! Em comparações isso fica mais perfeito ainda, não foge nem os segundinhos!</p>
<p>20041512030520  >  20031810122030 retorna  true<br />
&#8211;<br />
20031810122030 > 20041512030520   retorna  false</p>
<h2>Índices para Pesquisa</h2>
<ul> </p>
<li>Linguagem PHP  &#8211; <a href="http://www.php.net">http://www.php.net</a></li>
<li>Banco de dados Mysql &#8211; <a href="http://www.mysql.com">http://www.mysql.com</a></li>
</ul>
<p> </p>
<p>Abraços ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2009/04/07/trabalhando-com-datas-em-php-mysql/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Bloqueio de rota administrativa do CakePHP</title>
		<link>http://technocil.com/2009/03/12/bloqueio-de-rota-administrativa-do-cakephp/</link>
		<comments>http://technocil.com/2009/03/12/bloqueio-de-rota-administrativa-do-cakephp/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 23:34:56 +0000</pubDate>
		<dc:creator>João Vagner</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[Desenvolvimento web]]></category>

		<guid isPermaLink="false">http://technocil.com/?p=210</guid>
		<description><![CDATA[Olá Pessoal,
Quem utiliza o Fremwork CakePHP sabe que é uma mão na roda o route admin. Nos poupa um bocado de trabalho criar as funções da administração do site. Isso graças ao &#8220;Bake&#8221; Porém a rota não pode ficar totalmente acessivel a qualquer um, certo? 
O Jonathan Snook  escreveu um artigo em relação a [...]]]></description>
			<content:encoded><![CDATA[<p>Olá Pessoal,</p>
<p>Quem utiliza o Fremwork CakePHP sabe que é uma mão na roda o route admin. Nos poupa um bocado de trabalho criar as funções da administração do site. Isso graças ao &#8220;Bake&#8221; Porém a rota não pode ficar totalmente acessivel a qualquer um, certo? </p>
<p>O <em>Jonathan Snook </em> escreveu um artigo em relação a isso, porém em alguns testes por aqui nenhum realmente funcionou utilizando .htaccess para proteção dessa rota com password.</p>
<p><a href="http://snook.ca/archives/servers/password_protect_admin/">Password Protecting Admin Functions in CakePHP</a>.</p>
<p>O Conceito da proteção no artigo do <em>Jonathan Snook </em> é simples, E pode ser gerado com qualquer um que possua acesso ao SSH do site. Não é necessário acesso root para esses tipos de ações no servidor.<br />
Seu servidor não te da acesso ao SSH? Está na hora de mudar para a <a href="http://www.iw2servers.com.br"><strong>IW²</strong></a></p>
<p>O primeiro passo dessa proteção se dá ao inserir seguinte conteúdo no seu <strong>.htaccess</strong> :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">AuthUserFile <span style="color: #339933;">/</span>diretorio<span style="color: #339933;">/</span>passwd<span style="color: #339933;">/</span>protecao
AuthName <span style="color: #0000ff;">&quot;Administracao CAKE&quot;</span>
AuthType Basic
<span style="color: #b1b100;">Require</span> valid<span style="color: #339933;">-</span>user</pre></td></tr></table></div>

<p>Com acesso ao ssh utilize o seguinte comando dentro da pasta &#8220;www&#8221;.</p>
<blockquote><p>htpasswd -c /diretorio/passwd/protecao username</p></blockquote>
<p>.<br />
Isso gera um arquivo com a senha criptografada! Caso queira barar o arquivo gerado para verificar fiquem à vontade!</p>
<p>Bons testes, aqui nunca funcionou!</p>
<h3>Meu jeitinho</h3>
<p>A maneira no qual eu utilizo é a verificação simples de variavel, ou seja, apenas um usuário dentro do código no qual após o POST, verifica os dados, e grava uma sessão, se os mesmos forem iguais.</p>
<p>Primeiro passo é abrir o seu <strong>/app/config/routes.php</strong>, e crie uma rota chamada <strong>admin</strong>, usando o controller de páginas estáticas. Veja:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">Router<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/admin/'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'controller'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'pages'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'action'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'display'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'admin'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Agora crie um arquivo chamado <strong>admin.ctp</strong> dentro da pasta /app/views/pages/ com um formulário básico para login e senha:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>  
<span style="color: #666666; font-style: italic;">//Define o layout padrão para a página</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">layout</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'admin'</span><span style="color: #339933;">;</span> 
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&lt;h1&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> __<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Administração'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/h1&gt;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>   
<span style="color: #666666; font-style: italic;">// Caso ocorra algum erro, é exibido em sua div correta!</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$error</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;div class='error'&gt;&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$error</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;/div&gt;&quot;</span><span style="color: #339933;">;</span>   
<span style="color: #009900;">&#125;</span>   
<span style="color: #000000; font-weight: bold;">?&gt;</span>   
<span style="color: #000000; font-weight: bold;">&lt;?php</span> 
<span style="color: #666666; font-style: italic;">/*
criamos um formulário com o vetor User, indicando a rota /admin/login, onde teremos nossa verificação de usuário e senha para registro da sessão da administração, e acesso ao restante dos actions _admin_
*/</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$form</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">create</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'User'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'url'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'/admin/login/'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>   
&lt;fieldset&gt;
    &lt;legend&gt;Digite os dados&lt;/legend&gt;   
        <span style="color: #000000; font-weight: bold;">&lt;?php</span>  <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$form</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">input</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'username'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'label'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'Login'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
        <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$form</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">input</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'password'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'label'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'Senha'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'id'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'Senha'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>   
  <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$form</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">end</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Logar!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>   
   &lt;/fieldset&gt;
&lt;/form&gt;</pre></td></tr></table></div>

<p>O próximo passo é criar uma nova rota no <strong> /app/config/routes.php</strong>, rota no qual foi definida na URL do nosso formulário, onde será submetida os dados para verificação.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">Router<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/admin/login/'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'controller'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'users'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'action'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'admLogin'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Claro, obviamente eu já possuo um controller chamado users, caso não tenha, pode cria-lo, utilizando o código abaixo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> UsersController <span style="color: #000000; font-weight: bold;">extends</span> AppController <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Users'</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$helpers</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Html'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Form'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/*
Claro, que aqui irão outras actions suas ;)
*/</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> admLogin<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
	    <span style="color: #666666; font-style: italic;">//verifica se o post possui alguma informação para registrar o nosso array com informações</span>
	    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
                <span style="color: #000088;">$dbuser</span>	<span style="color: #339933;">=</span>       <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'username'</span><span style="color: #339933;">==</span><span style="color: #0000ff;">'Administrador'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'password'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'Sua_senha_aqui'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	           <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'User'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'username'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$dbuser</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'username'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> 
                         <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'User'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$dbuser</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>  <span style="color: #009900;">&#123;</span>   
                                 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Write</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'admin'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$dbuser</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
                                 <span style="color: #666666; font-style: italic;">// registra a sessão &quot;admin&quot; para futuras verificações</span>
                                 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFlash</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Logado com sucesso'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
                                 <span style="color: #666666; font-style: italic;">//Notifica o sucesso ao logar!</span>
                                 <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">redirect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/admin/users/index'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
                                 <span style="color: #666666; font-style: italic;">// redireciona para a action index do controller users.</span>
	        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>   
	              <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFlash</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Erro! Dados inválidos'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                          <span style="color: #666666; font-style: italic;">// notifica o erro    </span>
	        <span style="color: #009900;">&#125;</span>   
	    <span style="color: #009900;">&#125;</span>   
	<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Note que por enquanto o nosso controller users possui apenas um action. Fica a seu critério a criação do resto do conteúdo ;) </p>
<p>Agora iremos criar a função para verificação da sessão:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
	<span style="color: #000000; font-weight: bold;">function</span> checkAdminSession<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
               <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">check</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'admin'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
               <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFlash</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Você não tem acesso a essa área'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
               <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">redirect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/admin/login/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
    <span style="color: #009900;">&#125;</span>   
<span style="color: #009900;">&#125;</span>   
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>A minha recomendação é que coloque essa função dentro do arquivo <strong>/app/app_controller.php</strong> no qual o cake carrega automáticamente. Esse arquivo serve para colocar as funções que vai utilizar em todos os controllers, sem a necessidade de ficar repetindo os mesmos.</p>
<p>Agora vem a parte mais interessante, vamos inserir o beforeFilter(); também dentro do <strong>/app/app_controller.php</strong>, para verificação do parametro /admin/ na url, e execução da verificação da sessão. Veja:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> beforeFilter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">params</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'admin'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
           <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">checkAdminSession</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
    <span style="color: #009900;">&#125;</span>   
 <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>O que a função faz é:</strong> Se existe algum parametro na url &#8220;admin&#8221;, executa a função checkAdminSession e veja se existe a sessão &#8220;admin&#8221;. Se não existir a sessão, a checkAdminSession redireciona para login. </p>
<p>Pronto, e assim você tem uma certa segurança em relação a rota /admin/ não estar sendo visualizada por tudo e por todos! </p>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2009/03/12/bloqueio-de-rota-administrativa-do-cakephp/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>I Encontro &#124; PHPSP</title>
		<link>http://technocil.com/2009/02/06/i-encontro-phpsp/</link>
		<comments>http://technocil.com/2009/02/06/i-encontro-phpsp/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 13:28:18 +0000</pubDate>
		<dc:creator>João Vagner</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[phpsp]]></category>

		<guid isPermaLink="false">http://technocil.com/?p=211</guid>
		<description><![CDATA[É com muito prazer que a IW² e a coordenação do grupo PHPSP anunciam o primeiro encontro do PHP-SP. O intuito do encontro é ser simples, objetivo e funcional: para que o networking e a troca de conhecimento possa ser ainda mais efetivos e positivos.
Esse primeiro encontro do grupo tem o objetivo e foco totalmente [...]]]></description>
			<content:encoded><![CDATA[<p>É com muito prazer que a IW² e a coordenação do grupo PHPSP anunciam o primeiro encontro do PHP-SP. O intuito do encontro é ser simples, objetivo e funcional: para que o networking e a troca de conhecimento possa ser ainda mais efetivos e positivos.</p>
<p>Esse primeiro encontro do grupo tem o objetivo e foco totalmente voltado para a tecnologia Zend Framework,  decidido através de votação com direito a duas palestras totalmente direcionadas ao assunto.</p>
<p>Uma “pequena” surpresa: Reunimos (por enquanto) 4 ZCEs, simulado da php|architect para o exame de certificação. O simulado é bem próximo do exame de certificação real da Zend, e onde os ZCEs farão o simulado inteiro ao vivo: comentando questão por questão, citando as pegadinhas e os conhecimentos necessários para passar na certificação.</p>
<p>Quer tirar sua certificação Zend ? Essa palestra é para você!<br />
Quer aprofundar seus conhecimentos sobre PHP ? É para você também!</p>
<p>Nosso número para participação do evento é bem limitado e só poderão entrar as pessoas que confirmaram a presença! Mas lembre-se, não esqueça de levar 1kg de alimento não perecível para ajudarmos instituições de caridades escolhidas por votação em nossa lista.</p>
<h2>Programação</h2>
<ul>
<li>10:00h ~ 13:45h &#8211; Simulado da Certificação Zend</li>
<li>13:45h ~ 15:00h &#8211; Almoço</li>
<li>15:15h ~ 17:00h &#8211; Palestra Zend Framework</li>
</ul>
<h2>Local:</h2>
<p>Burti Mooca ( Rua Dias Leme 130 &#8211; Moóca &#8211; São Paulo )</p>
<h2>Valor:</h2>
<p>1Kg de alimento não-perecível (ainda estamos definindo uma instituição a ser  ajudada; se você quiser dar uma segestão, mande um  comentário).</p>
<h2>Ao vivo!</h2>
<div id="desconto" class="textos" style="display: none;">
<h2>Use seu desconto</h2>
<p>É com muito prazer que a IW² e a coordenação do grupo PHPSP anunciam o primeiro encontro do PHP-SP. E por isso a IW²,  		como parceira da reInovação e tecnologia, patrocina o evento oferecendo através de sorteios: 10 (dez) contas para hospedar  		o seu site durante um ano gratuitamente.</p>
<p>E para os azarados de plantão: utilizem o desconto de 20% em todos os serviços da IW²: Hospedagem, Revendas, Dedicados, VPS, etc.</p>
<div style="width: 380px; background-color: #ffffff; font-size: 40px; font-family: Georgia; color: #333333; text-align: center; line-height: 80px;"><em>php-sp_desconto</em></div>
<p>* o cupom não é valido para domínios, e só será funcional no site da iw2 após o evento!</p></div>
<div id="home" class="textos" style="display: none;">
<h2>I Encontro | PHPSP</h2>
<p>É com muito prazer que a IW² e a coordenação do grupo PHPSP anunciam o primeiro encontro do PHP-SP.  		O intuito do encontro é ser simples, objetivo e funcional: para que o networking e a troca de  		conhecimento possa ser ainda mais efetivos e positivos.</p>
<p>Esse primeiro encontro tem o objetivo e foco totalmente voltado para a tecnologia Zend Framework,  		decidido através de votação com direito a duas palestras totalmente direcionadas ao assunto.</p>
<p>Uma “pequena” surpresa: Reunimos (por enquanto) 4 ZCEs, simulado da php|architect para o exame de certificação.  		O simulado é bem próximo do exame de certificação real da Zend, e onde os ZCEs farão o simulado inteiro ao  		vivo: comentando questão por questão, citando as pegadinhas e os conhecimentos necessários para passar na certificação.</p>
<p>Quer tirar sua certificação Zend ? Essa palestra é para você!<br />
Quer aprofundar seus conhecimentos sobre PHP ? É para você também!</p>
<p>Nosso número para participação do evento é bem limitado e só poderão entrar as pessoas que  		confirmaram a presença! Mas lembre-se, não esqueça de levar 1kg de alimento não perecível para ajudarmos  		instituições de caridades escolhidas por votação em nossa lista.</p>
<p>Até lá!!!</p>
<p><em>Equipe PHPSP e Iw² &#8211; reInovando SEMPRE!!!</em></p>
<h2>Ao vivo!</h2>
<p>Você vai poder acompanhar a transmissão ao vivo do evento!</p>
<p><object width="400" height="320" data="http://www.ustream.tv/flash/live/1/499196" type="application/x-shockwave-flash"><param name="id" value="utv668653" /><param name="flashvars" value="viewcount=true&amp;autoplay=false&amp;brand=embed" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/live/1/499196" /><param name="name" value="utv_n_220846" /></object></div>
<p>Você vai poder acompanhar a transmissão ao vivo do evento ou ler posteriormente o resumo das palestras e fazer download dos arquivos aqui no 15seg.com</p>
<p align="center"><object width="400" height="320" data="http://www.ustream.tv/flash/live/1/499196" type="application/x-shockwave-flash"><param name="id" value="utv668653" /><param name="flashvars" value="viewcount=true&amp;autoplay=false&amp;brand=embed" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/live/1/499196" /><param name="name" value="utv_n_220846" /></object>
</p>
<p align="center">
<h2>Preparativos</h2>
<p>Conseguimos algumas fotos dos preparativos&#8230;</p>
<table border="0">
<tr>
<td><a href="http://flickr.com/photos/joaodesigner/3256150604/"><img src="http://farm4.static.flickr.com/3470/3256150604_e51979fa32_m.jpg" alt="Material para o encontro" /></a></td>
<td><a href="http://flickr.com/photos/joaodesigner/3256083606/"><img src="http://farm4.static.flickr.com/3265/3256083606_d9e75c4e71_m.jpg" alt="Material para o encontro" /></a></td>
</tr>
<tr>
<td><a href="http://flickr.com/photos/joaodesigner/3256085452/"><img src="http://farm4.static.flickr.com/3491/3256085452_c183491e3f_m.jpg" alt="Material para o encontro" /></a></td>
<td><a href="http://flickr.com/photos/joaodesigner/3255259077/"><img src="http://farm4.static.flickr.com/3434/3255259077_249d3377bf_m.jpg" alt="Material para o encontro" /></a></td>
</tr>
<tr>
<td><a href="http://flickr.com/photos/joaodesigner/3256141430/"><img src="http://farm4.static.flickr.com/3374/3256141430_545185e657_m.jpg" alt="Material para o encontro" /></a></td>
<td><a href="http://flickr.com/photos/joaodesigner/3256144092/"><img src="http://farm4.static.flickr.com/3521/3255316367_34d082db47_m.jpg" alt="Material para o encontro" /></a></td>
</tr>
<tr>
<td><a href="http://flickr.com/photos/joaodesigner/3255318315/"><img src="http://farm4.static.flickr.com/3413/3255318315_782c460be1_m.jpg" alt="Material para o encontro" /></a></td>
<td><a href="http://flickr.com/photos/joaodesigner/3256150604/"><img src="http://farm4.static.flickr.com/3470/3256150604_e51979fa32_m.jpg" alt="Material para o encontro" /></a></td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2009/02/06/i-encontro-phpsp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Leitura de XML &#8211; Parte 2 SimpleXML</title>
		<link>http://technocil.com/2008/12/24/leitura-de-xml-parte-2-simplexml/</link>
		<comments>http://technocil.com/2008/12/24/leitura-de-xml-parte-2-simplexml/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 13:00:14 +0000</pubDate>
		<dc:creator>João Vagner</dc:creator>
				<category><![CDATA[Desenvolvimento web]]></category>
		<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[simplexml]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://technocil.com/2008/12/24/leitura-de-xml-parte-2-simplexml/</guid>
		<description><![CDATA[Olá Pessoal,
Primeiramente, post de dia 24 de Dezembro, desejos a todos um Feliz Natal, que estejam todos ai junto a amigos e familiares curtindo uma data especial.
Bom, demorei um pouco, mas chegou, a segunta parte de Leitura de XML usando SimpleXML, dessa vez vou usar alguns modelos, ao invez de trabalhar com o nosso Feed [...]]]></description>
			<content:encoded><![CDATA[<p>Olá Pessoal,</p>
<p>Primeiramente, post de dia 24 de Dezembro, desejos a todos um Feliz Natal, que estejam todos ai junto a amigos e familiares curtindo uma data especial.</p>
<p>Bom, demorei um pouco, mas chegou, a segunta parte de Leitura de XML usando SimpleXML, dessa vez vou usar alguns modelos, ao invez de trabalhar com o nosso Feed de RSS, vamos trabalhar com valores de cambio e pesquisa de CEP. Tudo simples e em poucas linhas.</p>
<p>Primeiramente precisamos de algum XML que seja atualizado, com os valores que temos que trabalhar. Para isso existe esse endereço: <a href="http://www.republicavirtual.com.br/cotacao/exemplos.php">http://www.republicavirtual.com.br/cotacao/exemplos.php</a></p>
<p>Não posso garantir 100% de uptime do link, pois não sei se algo vai mudar ok? Mas iremos trabalhar em cima dos retornos desse xml, ok?</p>
<h3>Simple XML</h3>
<p>O objetivo é fornecer acesso aos documentos XML usando propriedades de objetos e iterators, não é uma extensão complicada (são poucos métodos) mas é bastante flexível. </p>
<h3>Exemplo Básico</h3>
<p><strong>Importando o XML da URL: </strong><br />
</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">simplexml_load_file</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://cotacao.republicavirtual.com.br/web_cotacao.php?formato=xml'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p></p>
<h3>Iniciando o trabalho</h3>
<p>Aqui vamos pegar o valor do dolar comercial para compras:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// importando o arquivo</span>
<span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">simplexml_load_file</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://cotacao.republicavirtual.com.br/web_cotacao.php?formato=xml'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// pegando a tag dolar_commercial_compra</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$file</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">dolar_comercial_compra</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>As tags que podemos trabalhar podem ser encontrada nesse XML</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;webservicecotacao<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dolar_comercial_compra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2,1260<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dolar_comercial_compra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dolar_comercial_venda<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2,1280<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dolar_comercial_venda<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dolar_paralelo_compra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2,2200<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dolar_paralelo_compra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dolar_paralelo_venda<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2,3000<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dolar_paralelo_venda<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;euro_dolar_compra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1,2410<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/euro_dolar_compra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;euro_dolar_venda<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1,2410<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/euro_dolar_venda<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;euro_real_compra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2,6384<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/euro_real_compra<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;euro_real_venda<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2,6408<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/euro_real_venda<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/webservicecotacao<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>
 Viram como é simples trabalhar com o SimpleXML? Agora vamos trabalhar para achar endereços de CEP ;) O XML que iremos trabalhar emcima é desse modelo:</p>
<h2>Trabalhando com CEP</h3>
<p>Código: </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;iso-8859-1&quot;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;webservicecep<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;resultado<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/resultado<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;resultado_txt<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>sucesso - cep completo<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/resultado_txt<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uf<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>SP<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/uf<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cidade<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>São Paulo<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cidade<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;bairro<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Santana<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/bairro<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tipo_logradouro<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Rua<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tipo_logradouro<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;logradouro<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Duarte de Azevedo<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/logradouro<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/webservicecep<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>A URL que iremos importar as consultas é: http://cep.republicavirtual.com.br/web_cep.php?cep=02036021&amp;formato=xml  </p>
<h3> Vamos ao Código:</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">simplexml_load_file</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://cep.republicavirtual.com.br/web_cep.php?cep=02036021&amp;formato=xml'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;UF: &quot;</span> <span style="color: #339933;">.</span><span style="color: #000088;">$file</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">uf</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;br /&gt;Cidade: &quot;</span> <span style="color: #339933;">.</span><span style="color: #000088;">$file</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cidade</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;br /&gt;Bairro: &quot;</span> <span style="color: #339933;">.</span><span style="color: #000088;">$file</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">bairro</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;br /&gt;Tipo de Logradouro: &quot;</span> <span style="color: #339933;">.</span><span style="color: #000088;">$file</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">tipo_logradouro</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;br /&gt;Endereço: &quot;</span> <span style="color: #339933;">.</span><span style="color: #000088;">$file</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">logradouro</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Não recomendo que essa aplicação rode atravez da url de pesquisa, a base de dados pode ser baixada nesse endereço: <a href="http://www.republicavirtual.com.br/cep/download/cep.sql.bz2">Download</a></p>
<p>É isso, viram como é simples integrar uma pesquisa de CEP pra completar formulários de cadastros e tudo mais? Agora é com vocês ;) </p>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2008/12/24/leitura-de-xml-parte-2-simplexml/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OOP no PHP: Reaproveitamento, Sobrescrevendo métodos</title>
		<link>http://technocil.com/2008/12/17/oop-no-php-reaproveitamento-sobrescrevendo-metodos/</link>
		<comments>http://technocil.com/2008/12/17/oop-no-php-reaproveitamento-sobrescrevendo-metodos/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 22:09:43 +0000</pubDate>
		<dc:creator>Tobias</dc:creator>
				<category><![CDATA[Desenvolvimento web]]></category>
		<category><![CDATA[Destaques]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://technocil.com/?p=163</guid>
		<description><![CDATA[E ae blz?
Chegamos numa das partes interessantes da nossa série de posts, é onde começo a falar das gambiarras técnicas usadas por nós programadores para salvar horas de trabalho no desenvolvimento.
Para ilustrar o post de hoje vou usar um caso que aconteceu comigo a algum tempo. Na empresa onde trabalho, fizemos um sistema publicador de [...]]]></description>
			<content:encoded><![CDATA[<p>E ae blz?</p>
<p>Chegamos numa das partes interessantes da nossa série de posts, é onde começo a falar das <strike style="text-decoration:line-through;">gambiarras</strike> técnicas usadas por nós programadores para salvar horas de trabalho no desenvolvimento.</p>
<p>Para ilustrar o post de hoje vou usar um caso que aconteceu comigo a algum tempo. Na empresa onde trabalho, fizemos um sistema publicador de sites, um CMS próprio desenvolvido aqui, e que um belo dia recebi um pedido para incluir nele uma espécie de lixeira.</p>
<p>Bom para implementar essa feature a solução sugerida foi criar uma coluna em cada tabela com o nome de trash e que teria valor default 0 e quando um item fosse deletado esse valor seria alterado para 1.</p>
<p>Tendo isso em mente comecei a implementação, alterar o banco foi moleza, agora eu precisava implementar essa condição no sistema. Foi quando me deparei com a seguinte situação, teria que alterar cada uma das chamadas do método <acronym title="Método responsável pelas consultas no banco."><em>findAll()</em></acronym> em todo o sistema, pensei,&#8230; pensei,&#8230; e quando já não via mais solução pra isso um amigo sugeriu &#8220;<em>pow, sobrescreve findAll() que tu evita esse trabalhão</em>&#8220;, e assim foi feito :).</p>
<p>Agora que vocês já sabem o problema vou mostrar a solução que eu usei nessa situação.</p>
<p>Eu tinha em em mãos as classes Model, AppModel e uma classe pra cada um dos models específicos (sim, usamos <a href="http://www.cakephp.org">CakePHP</a>).</p>
<p>A classe Model é a base de toda interação com o banco, é uma classe do core do framework extendida pela classe AppModel.</p>
<p>A AppModel é uma classe feita exatamente para esse fim, ela inicialmente é vazio e só extende a classe Model do framework e é extendida pelos models da aplicação, ou seja, é usada por todos os models do sistema e ainda herda o método que eu preciso sobrescrever, tudo que eu precisava.</p>
<p>O método findAll original dentro da classe Model é tem essa estrutura de parâmetros: </p>
<pre lang="php" line="1" colla="+">
<?php
class Model {
	...
	function findAll($conditions = null, $fields = null, $order = null, $limit = null, $page = 1, $recursive = null) {
		...
	}
	...
}
?>
</pre>
<p>A método sobrescrito na AppModel ficou assim:</p>
<pre lang="php" line="1" colla="+">
<?php
class AppModel extends Model {
	...
	function findAll($conditions = array(), $fields = null, $order = null, $limit = null, $page = 1, $recursive = null) {
		$new_conditions = array();
		if (!is_array($conditions))
			$new_conditions[] = $conditions;
		else
			$new_conditions = $conditions;

		if (!$this->findInTrash)
			$new_conditions += array($this->name.'.trash' => '0');

		return parent::findAll($new_conditions, $fields, $order, $limit, $page, $recursive);
	}
	...
}
?>
</pre>
<p>Antes de mais nada vou avisar o óbvio, só coloquei aqui os códigos necessários para explicar o post as classes são bem maiores que isso ;).</p>
<p>Notem também que eu não mudei os parametros usados no método mas poderia faze-lo se fosse necessário, esse método recebe todos os paramêtros possíveis no <em>findAll</em> original, altera as condições necessárias e chama o método findAll da classe pai usando o <em>parent::</em>.</p>
<p>Nesse caso em particular eu só precisava sobrescrever o método para adicionar uma condição específica, mas dependendo do caso talvez você precise que um mesmo método seja chamado de formas diferentes ou com uma quantidade de parâmetros diferentes, o que também poderia ser feito, mas isso já é assunto para um próximo post.</p>
<p>Dúvidas? sugestões? puxões de orelha? comentários tão ai pra isso.</p>
<p>Um abraço e até o próximo post.</p>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2008/12/17/oop-no-php-reaproveitamento-sobrescrevendo-metodos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OOP no PHP: Heranças e Interfaces, extendendo e implementando classes</title>
		<link>http://technocil.com/2008/12/15/oop-no-php-herancas-e-interfaces-extendendo-e-implementando-classes/</link>
		<comments>http://technocil.com/2008/12/15/oop-no-php-herancas-e-interfaces-extendendo-e-implementando-classes/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 15:00:39 +0000</pubDate>
		<dc:creator>Tobias</dc:creator>
				<category><![CDATA[Desenvolvimento web]]></category>
		<category><![CDATA[Destaques]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[extends]]></category>
		<category><![CDATA[herança]]></category>
		<category><![CDATA[implements]]></category>
		<category><![CDATA[interfaces]]></category>

		<guid isPermaLink="false">http://technocil.com/?p=153</guid>
		<description><![CDATA[E ae blz?
Bom gente depois de um alguns dias atrasado devido a problemas pessoais aqui vai o segundo post da série OOP no PHP, nossos assuntos agora são Heranças e Interfaces, e aproveitando o assunto eu preparei uma classe de acesso ao banco de dados que ilustra perfeitamente o nosso assunto de hoje e também [...]]]></description>
			<content:encoded><![CDATA[<p>E ae blz?</p>
<p>Bom gente depois de um alguns dias atrasado devido a problemas pessoais aqui vai o segundo post da série OOP no PHP, nossos assuntos agora são Heranças e Interfaces, e aproveitando o assunto eu preparei uma classe de acesso ao banco de dados que ilustra perfeitamente o nosso assunto de hoje e também usa as definições do post anterior.</p>
<p>Vamos começar com a teoria:</p>
<p><strong><em>extends</em></strong> &#8211; Essa palavra chave indica que uma classe extende outra classe, ou seja, herda todos os métodos e atributos da classe pai.</p>
<p>Exemplos simples:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Pai <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> pai<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">echo</span> “Função da classe pai”<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Filha <span style="color: #000000; font-weight: bold;">extends</span> Pai <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #000088;">$filha</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> chamaPai<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pai</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> responde<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Sou uma classe filha'</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>No exemplo acima estão disponívels na classe filha todos os métodos/atributos públicos e protegidos (quando existerem) da classe pai.</p>
<p><strong><em>implements</em></strong> – Essa aqui é um pouco diferente, ela define que uma determinada classe implemente uma interface, que nada mais é uma que uma definição de nomes e parametros de cada método da classe, porém, a real utilidade das interfaces é mais conceitual no mundo OOP e na maioria das vezes é deixada de lado.</p>
<p>vamos a um exemplo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">interface</span> iFilha <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> chamaPai<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> responde<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Pai <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> pai<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">echo</span> “Função da classe pai”<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Filha <span style="color: #000000; font-weight: bold;">extends</span> Pai implements iFilha <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #000088;">$filha</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> chamaPai<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pai</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> responde<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Sou uma classe filha'</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Algumas considerações interessantes sobre interfaces:</p>
<ul>
<li>Somente métodos públicos aparecem nas interfaces;</li>
<li>Uma classe pode implementar mais de uma interface;</li>
<li>Uma classe não pode implementar duas interfaces com métodos de nomes iguais;</li>
<li>Interfaces podem ser herdadas assim como classes, basta usar extends.</li>
</ul>
<p>Bom acho que deu pra entender como funcionam essas coisas, então vamos pra um exemplo de uso nessa classe de acesso ao banco que eu fiz pra ajudar o nosso entendimento.</p>
<p>config.php</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Config <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">const</span> DB_HOST 	<span style="color: #339933;">=</span> <span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">const</span> DB_USER 	<span style="color: #339933;">=</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">const</span> DB_PASS 	<span style="color: #339933;">=</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">const</span> DB_SCHEMA <span style="color: #339933;">=</span> <span style="color: #0000ff;">'technocil'</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">const</span> DB_ENCODING <span style="color: #339933;">=</span> <span style="color: #0000ff;">'UTF8'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>dbo_mysql.php</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #b1b100;">require</span> <span style="color: #0000ff;">'config.php'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">interface</span> iDBOMysql <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> connect<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> insert<span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #339933;">,</span><span style="color: #000088;">$fields</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> update<span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #339933;">,</span><span style="color: #000088;">$fields</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> delete<span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #339933;">,</span><span style="color: #000088;">$conditions</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> select<span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #339933;">,</span><span style="color: #000088;">$fields</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'*'</span><span style="color: #339933;">,</span><span style="color: #000088;">$conditions</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$order</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$limit</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> DBOMysql <span style="color: #000000; font-weight: bold;">extends</span> Config implements iDBOMysql <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$connection</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * Construtor chama os métodos necessários quando a classe é instanciada
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * Conecta com o banco de dados utilizando os dados das constantes de configuração
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> connect<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">connection</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span>parent<span style="color: #339933;">::</span><span style="color: #004000;">DB_HOST</span><span style="color: #339933;">,</span>parent<span style="color: #339933;">::</span><span style="color: #004000;">DB_USER</span><span style="color: #339933;">,</span>parent<span style="color: #339933;">::</span><span style="color: #004000;">DB_PASS</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span>parent<span style="color: #339933;">::</span><span style="color: #004000;">DB_SCHEMA</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">connection</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setEnconding</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> setEnconding<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SET NAMES '</span><span style="color: #0000ff;">' . parent::DB_ENCODING.'</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> query<span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">connection</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * Executa uma query de inserção no banco de dados
	 *
	 * @param string $table nome da tabela
	 * @param array $fields array com os campos e valores a serem inseridos
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> insert<span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #339933;">,</span><span style="color: #000088;">$fields</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #000088;">$columns</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$values</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		
		<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$fields</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$column</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$columns</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$column</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$values</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000088;">$sql</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">'INSERT INTO '</span><span style="color: #339933;">.</span><span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$sql</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'('</span><span style="color: #339933;">.</span><span style="color: #990000;">join</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">','</span><span style="color: #339933;">,</span><span style="color: #000088;">$columns</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">') '</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$sql</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'VALUES ('</span><span style="color: #0000ff;">'.join(&quot;'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'&quot;,$values).'</span><span style="color: #0000ff;">')'</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * Executa uma query de atualização no banco de dados
	 *
	 * @param string $table nome da tabela
	 * @param array $fields array com os campos e valores a serem inseridos
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> update<span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #339933;">,</span><span style="color: #000088;">$fields</span><span style="color: #339933;">,</span><span style="color: #000088;">$conditions</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #000088;">$columns</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$values</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		
		<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$fields</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$column</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$itens</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$column</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'='</span><span style="color: #0000ff;">'.mysql_real_escape_string($value).'</span><span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000088;">$sql</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">'UPDATE '</span><span style="color: #339933;">.</span><span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$sql</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'SET '</span><span style="color: #339933;">.</span><span style="color: #990000;">join</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">','</span><span style="color: #339933;">,</span><span style="color: #000088;">$itens</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$conditions</span> <span style="color: #339933;">!=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000088;">$sql</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'WHERE '</span><span style="color: #339933;">.</span><span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$conditions</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * Executa uma query para excluir registros do banco
	 *
	 * @param string $table nome da table
	 * @param string $conditions condições de exclusão (opcional)
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> delete<span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #339933;">,</span><span style="color: #000088;">$conditions</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #000088;">$sql</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">'DELETE FROM '</span><span style="color: #339933;">.</span><span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$conditions</span> <span style="color: #339933;">!=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000088;">$sql</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'WHERE '</span><span style="color: #339933;">.</span><span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$conditions</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * Executa uma query para selecionar registros no banco de dados
	 *
	 * @param string $table 
	 * @param array $fields 
	 * @param string $conditions 
	 * @param string $order
	 * @param string $limit
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> select<span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #339933;">,</span><span style="color: #000088;">$fields</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'*'</span><span style="color: #339933;">,</span><span style="color: #000088;">$conditions</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$order</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span><span style="color: #000088;">$limit</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #000088;">$sql</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">'SELECT '</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$sql</span> <span style="color: #339933;">.=</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fields</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #990000;">join</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">','</span><span style="color: #339933;">,</span><span style="color: #000088;">$fields</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #000088;">$fields</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$sql</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">' FROM '</span><span style="color: #339933;">.</span><span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$conditions</span> <span style="color: #339933;">!=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000088;">$sql</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'WHERE '</span><span style="color: #339933;">.</span><span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$conditions</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$order</span> <span style="color: #339933;">!=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000088;">$sql</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'ORDER BY '</span><span style="color: #339933;">.</span><span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$order</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$limit</span> <span style="color: #339933;">!=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000088;">$sql</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">mysql_real_escape_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$limit</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$results</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$fetch</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$loop</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_assoc</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$results</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$fetch</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$loop</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$fetch</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Só uma rápida explicação:<br />
A classe Config é uma classe que contem as constantes de configuração de acesso ao banco, a classe DBOMysql é a classe que implementa a interface iDBOMysql e extend a classe Config, vocês podem notar também o uso de public em private nos atributos, essa classe mostra o uso <em>extends</em> e <em>implements</em>, só gostaria de lembrar que como a classe os métodos private da classe não aparecem na interface, e que nesse caso a interface não é algo essencial.</p>
<p>Bom gente por enquanto é isso, quero me desculpar pelo atraso do post, a última semana foi meio corrida e o fim de semana foi de comemoração por que terminei a faculdade.</p>
<p>Abraços e até a próxima, onde nossos assuntos vão ficar cada vez mais interessantes.</p>
]]></content:encoded>
			<wfw:commentRss>http://technocil.com/2008/12/15/oop-no-php-herancas-e-interfaces-extendendo-e-implementando-classes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
