<?xml version="1.0" encoding="iso-8859-1" ?>
                <rss version="2.0">
                <channel>
         	    <title>Revista PHP ...primeira revista de open source em Portugal</title>
                <description>Uma classe simples que permite criar feeds RSS</description>
                <link>http://www.revista-php.net</link>
                <language>pt</language><item> 
	 <title>Integração Javascript PHP -  aspectos gerais</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=10</link> 
	 <description><![CDATA[Uma das vantagens sublimes do JavaScript é a sua forma simples de permitir aceder e manipular o conteúdo html duma página, dando-lhe maior dinamismo.
O Javascript foi criado pela Netscape (a empresa do famoso browser Netscape Navigator), em 1995, para responder a algumas necessidades daquela altura, como atribuir uma maior interacção com o navegador (browser), fazer validações necessárias em formulários, de forma a criar maor dinamismo no serviço prestado pelo navegador.
Apesar da sua sintaxe ser idêntica à do Java, nada tem a ver com ele, nem em conceito, nem na forma de utilização. Existe ainda muita gente que confunde estes dois conceitos, mas o certo é que Java nada tem a ver com JavaScript.
Entre uma vasto leque de características, o Javascript não é uma linguagem compilada, mas sim interpretada, embebida na própria página ou carregado em ficheiros do tipo *.js , noutras localizações.
Oferece tapagem dinâmica, o que quer dizer, que não necessidade de definir o tipo das variáveis.
Tem um suporte excelente às expressões regulares.
O JavaScript é sem dúvida o responsável, por alguns avanços e pela grande variedade de conteudos dinâmicos oferecidos na Internet,
 tal como a conhecemos. A interacção com o CSS - folhas de estilo(em inglês Cascating Style Sheets) ; originou o HTML dinâmico (DHTML),
que revolucionou o conceito de conteúdo dinâmico na Web.
A Adobe reconheceu-lhe o mérito, nomeadamente na forma simples com que se manipulavam ambientes em árvore (como é o caso do próprio HTML); e criou
um novo padrão conhecido como ActionScript; com acesso a um leque mais vasto de recursos, abrindo assim novos domínios.
Uma das obras de notoriedade na utilização do Javascript é o Mozilla, tecnologia oferecida por ex-funcionários da Netscape ,e patrocinada pela
AOL. O projecto Mozzila rapidamente evoluiu e adoptou o GUI (em português interface gráfica de utilizador), possível através do  XUL, que nasceu no seio do mesmo projecto Mozilla, o qual falaremos de forma mais detalhada num outro artigo.
Neste artigo irei demostrar alguns exemplos simples da programação em JavaScript.
O primeiro conceito a reter são tags de marcação JavaScript segundo o padrão W3C (o consórcio que define as regras da Web), que se declaram da seguinte forma
<fieldset>
&lt;script type=\"text/javascript\"&gt;
<br>

/* aqui declaramos o código Javascript */
<br>
&lt;/script&gt;
</fieldset>
<p></p>
O seu código javascript deve ser colocado entre as tags 
&lt;head> &lt;/head&gt;
Vamos agora aprender como definir, e utilizar e chamar funções javascript
]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Enviar email utilizando PHP</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=12</link> 
	 <description><![CDATA[Uma das funcionalidades interessantes no PHP é capacidade da linguagem permitir enviar facilmente emails, usando uma simples função e alguns parâmetros. A funcção <font color="navy"><b>mail()</b></font> , é muito usada para enviar email no PHP, directamente a partir do código. A sua utilização requer apenas algumas configurações simples  no ficheiro php.ini do PHP, e  informar correctamente os parâmetros passados na função. 
<br>Imaginemos que queremos enviar um email a webmaster@revistaphp.net
O primeiro passo seria informar  esse email no
php.ini.
Seguidamente veja-se a estrutura da função php:<br><br>
<fieldset><legend><font color="orange"><b>Definição da função mail() no PHP</b></font></legend>
<b>bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])</b>
</fieldset><br><br>
<font color="navy"><b>Explicação do parâmetros </b></font><br>
<b>to</b> O destinatário do email a enviar
<br>Exemplo PHP<br>
$to = "guto.onidesk_at_gmail.com"; // substituir _at__ por @ <br>
<b>subject</b> o assunto da mensagem<br>Exemplo PHP<br>
$assunto ="Email com PHP";<br>
<b>message</b> a mensagem do email <br>Exemplo PHP<br>
$msg ="Esta é a sua mensagem";<br>

<b>headers</b> O cabeçalho da mensagem<br>Exemplo PHP<br><br>

$headers = "From: o-seu-email@dominio.com\r\n";<br>
<font color="navy"><b>Nota </b></font><br>
Os headers (cabeçalhos), podem conter informações variadas , como o tipo de dados, encriptação, se a mensagem contém ou não anexos ...etc. <br>
Segue-se um exemplo simples mas bastante elucidativo do método explicado para envio de email com PHP<br>]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Obter o tempo de processamento dum SCRIPT PHP</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=14</link> 
	 <description><![CDATA[Saber o tempo de processamento duma página ou conjunto de código com alguma complexidade, pode ser extremamente útil.<br>
Em muitos sites este, conceito é apresentado como uma parte mais estética  do que funcional.
Para cálculo do tempo e segundos utiliza-se o conjunto de funções  time() e microtime() .
<br> Para obter o tempo inicial instanciamos a classe no topo da página , invocando o método Start_Time() . No final do script ou da página invovamos o método End_Time() para obter o tempo  nessa área. Fazemos a diferença e , eis que temos o tempo total que o script demorou a a ser interpretado.<br>
A classe seguinte permite aplicar facilmente , esta funcionalidade, dando às páginas dum site , um aspecto mais profissional.
<br> Pode ver o resultado deste script ao fundo da página !]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Enviar emails em massa de base de dados MySQL</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=15</link> 
	 <description><![CDATA[Este artigo visa apenas ensinar o leitor/programador a tirar partido do PHP + Mysql , ensinando os conceitos superficiais de como enviar emails em massa . Hoje em dia a forma vulgar e  simples de trazer visitantes ao nosso site, é a utilização de um sistema de Newsletter, na qual o gestor do site , faz uma colectânea de tudo o que se vai passando no site, a qual é enviada aos subscritores.<br>
<font color="red" size="3"><b>5 dicas sobre o envio de Newsletters</b></font><br>
<font color="navy" size="2"><b>Não envie newsletters não solicitadas</b></font><br>. Poderá estar a assinar a sentença de morte do seu site, pois muitos utilizadores reportam aquele email como spam , e assim esse utilizador nunca mais irá ler uma única newsletter. 
<br>
<font color="navy" size="2"><b>Elabore uma newsletter curta, atractiva e com sentido </b></font><br>
Muitos webmasters criam newsletter confusas e com muito texto. O objectivo da newsletter não é obrigar o utilizador a ler um compêndio , mas sim a de um <i> hot spot </i> , de forma a captar a atenção do leitor levando a que se interesse por aceder aos conteúdos alvos do seu site.
<br><font color="navy" size="2"><b>Tenha cuidado com os envios</b></font><br>
Muitos utilizadores não gostam de ser chateados por um assunto muitas vezes seguidas. Uma newsletter do mesmo assunto deve ser enviada apenas uma única vez, e não deve enviá-la mais do que uma vez ao dia.
<br><font color="navy" size="2"><b>Atenção aos conteúdos</b></font><br>
Evite linguagem complexa e muito profissional.
Desta forma a probabilidade dos seus email terem maior nº de leitores aumenta, podendo assim angariar mais visitantes assíduos ao seu site. Seja coerente e profissional , mas não utilize uma escrita que requer ter ao lado o dicionário mais elaborado da Porto Editora.
<br><br>
<br><font color="navy" size="2"><b>Cuidado com os headers</b></font><br>
O código seguinte é apenas um um pilar muito rasante daquilo que poderia  ser um sistema de newsletter. No entanto este código peca pelo seguinte. Ao tentar enviar 20 ou 30 mensagens em simultâneo com a função <b>mail()</b> do PHP, ocorrerá um erro por timeout, e as suas mensagens não serão enviadas. <br>
No entanto a Revista PHP , tem à disposição uma versão para envio de newsletters na qual esse problema não se coloca , podendo enviar uma série ilimitada  de emails sem que ocorra o dito erro por timeout.<br>
O código a seguir utiliza duas funções distintas, na construção do email; uma para criar a mensagem e outra para enviar o email propriamente dito.
Repare que a construção dos headers deve ser o mais simples possível. Utilizando o servidor smtp do gmail, deve retirar o quebra linha  " \r" , do cabeçalho , uma vez que a utilização deste provoca erro , evitando que algumas das mensagens cheguem ao destino.
<br>

A imagem seguinte atesta o funcionamento do código abaixo.Veja-se as mensagens recebidas na caixa do Gmail
<br>
<img src="codigo.artigos/mail.gif" border="0">]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>O poder do SEO (Search Engine Optimization)</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=16</link> 
	 <description><![CDATA[O SEO é arte do markting no mundo da Internet.
Envolve um vasto conjunto de técnicas de forma a aumentar a visibilidade de um site na Internet.
Muitas dessas técnicas estão já bastante divulgadas , como é o caso dos meta tags embebido no
cabeçalho das páginas HTML, ou o caso do ficheiro robots,que é uma espécie de farol para os crawlers,
embora esteja progressivamente a ser substituido por outra ferramenta , 
da qual falaremos mais à frente.
Existem no entanto outras formas não tão conhecidas que são gratuítas, e funcionam razoávelmente bem.
<br>
<font color="red" size="3"><b> Dicas para promoção do seu site</b></font>
<br>
<font color="navy" size="2"><b>Crie links do seu site que possam ter utilidade na indexação.</b></b></font>
<br>
Por exemplo a página artigos.php ,pode ser amplamente indexada se renomearmos a página
para artigos_vasta_gama_melhor_preco.php
O Google indexa links, logo a probabilidade de indexação aumentaria.
Mas esta não é de todo a forma mais correcta. Poderia criar a página recorrendo a tags , que é
uma boa forma de aumentar a indexação.
<br>
<b>Exemplo</b>
artigos.php?pagina=placas_graficas&preco=200&garantia=2
<br>
Agora se um utilidor pesquisar no Google "placas gráficas baixo preço", a sua página será concerteza indexada,
com a razão 3:1 face somente à página artigos.php
<br>

<font color="navy" size="2"><b>Crie nomes e marcas originais</b></font>
<br>

As marcas ou nomes originais, têm menor número de resultados, e assim a probalidade de um motor de busca as indexar 
nas primeiras páginas é maior.
<br>

<font color="navy" size="2"><b>Crie um blog sobre o seu site</b></font>
<br>
Um blog é uma versão mais leve e menos cansativa de se reter informação. No entanto se um 
utilizador se interssar manifestamente por um assunto ele acederá ao seu site concerteza.
<br>
<font color="navy" size="2"><b>Promova as visitas ao seu site</b></font>
<br>
Uma técnica bastante utilizada para isto , é feita mediante o envio de newsletter informativas.
Crie uma newsletter simples <a href="http://www.revista-php.net/artigos.php?pagina=15">leia este artigo</a>,
 para reter algumas dicas sobre newsletters.
<br>

<font color="navy" size="2"><b>Crie produtos inovadores</b></font>
<br>
Se trabalha no mundo da Internet, este passo é uma meta bastante à sua altura.
Produtos inovadores, como artigos visionários, software intelegível ou código fontes com utilidade,
são execelentes promotores de visitas ao seu site.
<br>

<font color="navy" size="2"><b> Disponibilize um forum no seu site</b></font>
<br>
A maioria dos utilizadores gosta de colocar questões, e outros tantos gostam de responder-lhe.
No entanto quem fica a ganhar é voçê, pois a visibilidade será tanto maior quanto mais visitantes tiver.

<br>
<font color="navy" size="2"><b>Disponibilize uma secção de downloads</b></font>
<br>
Os downloads são as áreas mais procuradas pelos utilizadores.
Aplicações demo, código fonte,  pdf etc, todos eles são promotores desde que indique neles um link de volta ao seu site.

<br>
<font color="navy" size="2"><b>Implemente um sistema de sindicânçia RSS ou outro</b></font>

<br> Os sistemas  sindicância RSS agregam todas as novidades , sempre que algo novo é adicionado a um site e exista uma configuração nesse sentido. Assim um utilizador que está subscrito ao seu sistema de sindicânçia não necessita de vir ao site para comprovar se existe algo novo. O sistema trata avisá-lo de forma automática. O Google Reader e myYahoo  são algumas das ferramentas apropriadas a receber esses alertas, mas existem muitos outros.
<br>


<br>
<font color="navy" size="2"><b>Paticipe em programas de afiliação com outros sites</b></font>
<br>
Uma das boas práticas na Web é recorrer a parcerias gratuitas. A troca de links  , banners ou logos é uma boa forma de trazer novos visitantes ao seu site.
<br>
<font color="navy" size="2"><b>Rentabilize as suas capacidades</b></font>
<br>
Se é programador ou tem jeito para a escrita, aproveite esses dotes e escreva ou crie conteúdos. São eles o motor que move a Internet. Além disso os utilizadores gostam  de ler  e navegar  conteúdos novos.]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Janelas com PHP-GTK</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=22</link> 
	 <description><![CDATA[Ao longo desta semana iremos inicializar uma série de artigos relativos à criação de aplicações gráficas com PHP-GTK , actualmente na sua versão 2. <br>Declaro que sou um manifesto aficonado desta nova funcionalidade do PHP. Conheço bem linguagens como JAVA e C++, mas a minha  afinidade com PHP em ambientes Web , permitiu-me aprender com facilidade esta forma peculiar de criar aplicações com ambiente gráfico.
Essencialmente o PHP-GTK é uma extensão que foi adicionado ao PHP em forma de livraria ou extensão por Andrei Zmievski, um programador do Usbequistão, que até cerca do ano 2001 ninguém ouvira praticamente falar.
<br>
Com esta criação Andrei foi capultado para o mundo das estrelas nesta área e foi convidado a integrar a gigante Yahoo , para quem trabalha na actualidade.<br>
Embora não tivesse inventado nada , ele permitiu ao PHP a capacidade de criar aplicativos com GUI (<b><i>do inglês Graphical User Interface</b></i>), ou seja, aplicações a correr do lado do cliente em ambiente gráfico.
<br>
O GTK foi criado para o Gimp, sob licença GPL,e desta forma , possiblitou a muitos programadores reaproveitar os conjunto de livrarias e importá-las para outras lingugens de programação, como o caso do Python e muitas outras. A ideia de Andrei partiu do Python onde essa funcionalidade já estava acessível. Vendo essa tarefa como um desafio decediu meter mãos à obra e criá-la ele mesmo.
<br>Actualmente o número de aficionados em PHP-GTK , está a crescer por todo o mundo, e tem boa representativiade no Brasil , França , Alemanha . <br>Em Portugal embora as tecnologias Open Source sejam uma paixão de jovens aficionados , onde eu próprio me encaixo, as instituições de ensino superior, menosprezam ainda muito integrá-las no conjunto de cadeiras a lecionar (salvo raras excepções e de forma muito superficial a cadeira de Sistemas Operativos lecionada no curso de Engª Informática).<br>
Neste ambito ainda reinam muito tecnologias pagas , vai-se lá saber porquê ?
<br>Mas polémicas à parte , o PHP-GTK permite-nos criar uma aplicação completa, e em tempo recorde, se considerarmos que existem ferramentas RAD , que auxiliam a cosntrução dum componente bastante moroso de desenvolver -  a interface.
Para esta tarefa poder-se-á recorrer ao uso da Glade, uma ferramenta bastante útil, que guarda a inreface , num ficheiro xml , sendo só necessário carregá-la e ligar cada componente (widget) , posteriormente.<br>
Neste artigo vou ensinar como criar uma simples janela , utilizando duas formas distintas de programar .
A primeira só é aconselhável se a interface da nossa aplicação , não vai mais além do que uma ou duas janelas, e contendo poucos widgets.
<br>Caso contrário deve-se recorrer ao uso da ferramenta Glade disponível  <a href="http://www.idrometa.it/php-gtk/glade3-3.4.1-win32-1.zip"> aquí</a>. <br>
Segue o primeiro exemplo comentado , que exemplifica como criar uma janela .]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Requesitar dados dinâmicos numa variável por url</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=23</link> 
	 <description><![CDATA[Existe uma técnica muito interessante na construção e  organização de dados dinâmicos, para posterir apresentação nas páginas dum determinado web site.
Embora possa parecer uma prática não muito segura , existem no entanto formas de contrapor as intenções maliciosas de determinados utilizadores. <br>Mas antes vamos descrever  a forma com a técnica é implementada.
Na construção de qualquer mecanismo ou técnica devemos sempre repensar as suas implicações e/ou limitações implícitas. Este mecanismo não dispensa essa linha de pensamento.<br>
O mecanismo consiste em fazer a alteração no estado duma variável de forma dinâmica , no acto da solicitação dum determinado registo na base de dados.Imagine-se que temos uma página designada '.php', e que pretendemos colocar nessa única página , por exemplo 100 artigos distintos.
Para responder a este desafio existe existe diferentes técnicas, umas mais dignas de intelegência do que outras.  A técnica mais usada e mais aconcelhável nestes casos seria utilizando <b>Ajax</b> , no entanto podemos recorrer à prática que vou expor de seguida.
<br> A estratégia passa por obter um campo da base de dados que esteja relacionado com o artigo a dado momento. Esse campo poderá ser por exemplo o id, que é um campo unico para cada artigo.<br>
Vamos então criar um modelo de base de dados a utilizar no nosso exemplo.
<br>
<center>
CREATE TABLE `artigos` (
`id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`titulo` VARCHAR( 40 ) NOT NULL ,
`corpo` VARCHAR( 200 ) NOT NULL
) ENGINE = MYISAM ; 
</center>

<br>Agora que criámos a base de dados vamos inserir alguns dados nela.
<br>

<p><span style="color: rgb(0, 0, 0);"> <span style="color: rgb(0, 0, 187);">&lt;?php 
  <br>
  $sql&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(221, 0, 0);">'INSERT&nbsp;INTO&nbsp;`artigos`&nbsp;(`id`,&nbsp;`titulo`,&nbsp;`corpo`)&nbsp;<br>
  VALUES&nbsp;(NULL,&nbsp;\'php&nbsp;6\',&nbsp;\'PHP&nbsp;6 promote&nbsp;grandes&nbsp;novidades&nbsp;\'),</span></span></p>
<br>
<span style="color: rgb(0, 0, 0);"><span style="color: rgb(221, 0, 0);">&nbsp;(NULL,&nbsp;\'Master&nbsp;Newsletter\',&nbsp;\'Revista&nbsp;PHP&nbsp;cria&nbsp;software 
unico\');'</span><span style="color: rgb(0, 119, 0);">; <br>
  </span><span style="color: rgb(0, 0, 187);">?&gt;</span> </span>
<br><br>
O código abaixo exemplifica na prática toda a construção do sistema descrito.
<br>]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Transportar sessão activa entre páginas</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=21</link> 
	 <description><![CDATA[O uso de sessões é de grande utilizade, e constituí uma norma de segurança , que permite mostrar os conteúdos dum site de acordo com o nivel de autorização do utilizador . O PHP comporta um conjunto de funções nativas que permitem fazer a gestão das sessões determinado sistema. <BR>A algoritmia básica nestes casos rege-se da forma seguinte:<br> Se um utilizador consta registado no sistema , trata-se de inicar uma sessão <b> session_start() </b>, após constar isso. Tratam-se se registar as variáveis de sessão com as quais vamos trabalahar ao longo do sistema. No PHP a variável reservada <b>$_SESSION[]</b> encarrega-se disso. Como parâmetro informa-mos aquilo que queremos registar .<br> Imagine-se que queremos registar numa sessão o campo email que consta na base de dados , teriamos então algo do género:<br> $_SESSION["email"] = $linha["email"]. <br>A variável armazena um array refrente aos campos na base de dados, utilizada em com a funcção <b>mysql_fetch_array()</b><br> Para transportarmos as variáveis de sessão , não existe segredo algum.<br>A regra é inicar a sessão com session_start() , novamente e chamar as variaveis de sessão com $_SESSION.<BR> Veja o código abaixo e conforme de que forma este processo é implementado.]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Gerar chaves aleatórias multi-caracater</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=24</link> 
	 <description><![CDATA[Um destes dias tive a necessidade de gerar chaves aleatórias para permitir que os utilizadores do meu site <a href='www.revista-php.net'>Revista PHP</a> fizessem uma activação correcta da sua conta , de forma a diferenciar contas válidas , de mero SPAM ou testes de utilzadores. Assim decidi criar uma função muito genérica recorrendo às funçõe nativa do PHP utilizando listas previsamente carregadas com valores.
Segue-se a função para todos os interessados
<br>]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Criar menus e submenus no PHP-GTK2</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=25</link> 
	 <description><![CDATA[Embora em aplicações de grande porte não se justifique estar a criar os widgets do PHP-GTK de forma manual, pois podemos recorrer à ferramenta RAD própria para isso - o Glade .<br>

Contudo convém que saibamos como a hierarquia de cada objecto está disposta, e isto ajuda-nos também na hora 
de ligar cada objecto às funções a serem chamadas (funções de "callback")<br><br>

Neste artigo iremos construir um sistema de Menus muito simples, mas o suficiente para 
entendemos como essa construção é realizada. <br>

Repare no código abaixo que a nossa primeira preocupação é construir um constainer,
de forma a colocar e posicionar o menu principal. <br>
A sequência de instancias aos objectos que permitem construir
um menu e alguns submenus pode ser sintetizada assim: <br><br>

<ol>
<li>GtkMenuBar</li>
<li>GtkMenu</li>
<li>GtkMenuItem</li>
</ol>
<br>
Deve ter em conta que este exemplo é muito simples, e que recorri ao uso do
GtkFixed , para usar como container (o objecto que segura e posiciona os outros objectos).
No entando em aplicações com mais componentes (WIDGETS), deve recorrer-se ao uso 
de objectos como GtkHBox ou GtkVBox.
<br>
<br>
Não se limite a copiar e utilizar o código abaixo. Refaça cada linha e para praticar por exemplo, adicione mais itens à sua barra de menus e mais submenus.
<br>
Noutro artigo ensinarei como construir menus dinâmicos, que torna a nossa aplicação mais hábil e 
mais simples de desenvolver. <br>
]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Listar ficheiros e pastas num directório no PHP</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=26</link> 
	 <description><![CDATA[Torna-se por vezes de grande utilizade listar o conteúdo de um directório, 
separando tudo aquilo que são ficheiro daquilo que pastas.<br><br>
Este artigo tem três objectivos, o de aprender a listar conteúdos em directórios, bem 
como apreender a separar pastas de directório.<br>
 Esta funcionalidade é muito usada em sistemas de pesquisa que necessitam de "varrer" ficheiros e directórios.
Nesta script são usados dois arrays para guardar os resultados, armazenado fiheiros
numa lista , e pastas noutra lista. 
Utilzam-se apenas funções nativas do PHP, pelo que o código é bem simples de perceber.
Recomenda-se que leia a documentação de cada uma em <a href="http://www.php.net" target="_blank">php.net</a><br>
Segue-se o código comentado para melhor compreenção das funcionalidades implícitas.]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Reconhecer extensões num directório</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=27</link> 
	 <description><![CDATA[Aproveitando o artigo arterior , ocorreu-me algo interessante.<br>
A possibilidade de distinguir os tipos de  ficheiros num directórios e contabilizá-los.<br>
Nesta fase o script permite-nos obter o numero de ficheiros encontrados, de forma 
totalmente configurávél, basta alterar o valor da variável <b>$TYPE</b>, e colocar o nome da
extenção do ficheiro que deseja contabilizar.
Por exemplo se desejassemos contabilizar o número de livrarias existentes bastaria 
alterar o valor da variável para <b>$TYPE="DLL"</b><br>
Faça o teste voçê mesmo e veja como este scipt pode ser bastante útil.]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Evitar introdução de comentários multiplos</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=28</link> 
	 <description><![CDATA[Com se devem ter apercebido , a zona de comentários , estava até agora desactivada.
Isto porque já estava farto de fazer a gestão de mensagens válidas e mero SPAM. O certo é que ainda tenho um grande desafio pela frente para ultrapassar este dilema , no entanto , duas fases estão ultrapassadas. <br> O script que faz a gestão   dos comentários por formulário ainda em versão beta, já evita cross-scripting e prevê que um utilizador apenas comente um artigo apenas uma vez. 
Visto que esta secção não é nenhum blog faz todo o sentido que assim seja, nesta fase.
Posteriormente quando implementar outro nível de segurança, habilitarei  comentários multiplos, contudo prevenindo que seja enviada a mesma mensagem .<br>
Aproveito este momento para explicar como impedir que um utilizador submeta mais do que um comentário.<br>
O método de evitar isso consiste em guardar o IP do utilizador no momento da inserção.<br>
No momento em que o utilizador tenta fazer nova introdução os dados ele compara SE O EMAIL OU O IP JÁ FORAM INDICADOS. Sendo verdade, ele fica impedido de introduzir novo comentário e recebe uma mensagem  que o alerta da situação<br>
Segue o código fonte esperando que este possa ser útil a alguém]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>O sucesso do PHP</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=29</link> 
	 <description><![CDATA[Embora não tencione fazer deste site um blog , achei este artigo é tão interessante que decidi dar-lhe uma área de destaque.
Não é porque o conteúdo do artigo seja , novidade para mim , e penso que não o será para qualquer um de voçês. Decidi mencioná-lo porque quem faz as afirmações contidas neste artigo é o pioneiro criador do famoso browser Mozilla,<b>Marc Andreessen</b>. Segundo as afirmações deste senhor<h4>  a programação de aplicativos Web  usando o PHP  terá mais sucesso do que teve o Java </h4>, (com o JSP).<br>Segundo a minha opinião não vai ser , mas já é - embora tenha que reconhecer que a questão dos applets seja um campo onde os Java Server Pages têm avanço favorável.<br>
Mas ao que parece não teremos de esperar muito, pois segundo Marc Andreessen, ele próprio mencionou que a sua empresa encabeça um projecto que visa aproximar e integrar solidamente  o Java com o PHP. Quanto a mim daquí só virão boas novidades, e ninguém se admire que daquí a uns tempos , se o PHP permitir a integrar os applets em páginas Web.<br>Certo é que a confiança prestada ao PHP, pelos senhores do Java é certa, e Mike Milinkovich, director executivo do Eclipse, confirma-o - "PHP e Java completam-se"<br>
Para quem queira ler o artigo original segue o <a href="http://www.news.com/Andreessen-PHP-succeeding-where-Java-isnt/2100-1012_3-5903187.html"> <b> link </b> </a>]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Abstração no PHP com ADOdb</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=32</link> 
	 <description><![CDATA[ADOdb (do ingês Database Abstraction Library) é uma funcionalidade cujo objectivo fundamental tornar a tarefa de migração para outras bases de dados existentes, uma brincadeira de crianças, e ao longo deste artigo iremos perceber porquê.<br>
Isso no entanto pode revelar-se numa enorme dor de cabeça, se não tivermos em conta a importância da utilização duma camada de abstracção.<br>
A ADBOdb está presente para duas linguagens de programação distintas - PHP e Python.<br>
Esta camada permite dotar a aplicação de total liberdade para trabalhar com a base de dados que se deseja, o que confere às aplicações menos restrições no uso em outros sistemas onde o suporte a um tipo específico não existe. 
Contudo o uso desta camada é apenas recomendada para aplicações portáveis a outros<br>
Sistemas operativos ou em grandes aplicações.<br>
A versão actual no PHP dá suporte a um número muito vasto de base de dados, muitas delas implementadas de forma colaborativa.
Muitos programadores rapidamente se aperceberam das vantagens do seu uso, e actualmente softwares bastantes como o PostNuke, Mambo, ACID ...entre muitos outros; utilizam-na na abstracção das suas bases de dados.<br>
Seguem-se algumas das características pelas quais o ADOdb no PHP , se destacou tanto, junto da comunidade de criadores e software:
<br>
<ol>
 <li> É uma camada de abstracção rápida e simples de utilizar</li>
<li> suporte à portabilidade</li>  
<li>fácil de aprender a nível de programação</li>
<li> tecnologia madura e robusta , com uma enorme comunidade de utilizadores</li>
<li> é uma tecnologia livre de usar e compilar</li>
<br><br>
Posta a apresentação, vamos passar à prática.<br>
 Mas antes , entenda-se porque é importante usar uma camada de abstracção.
Imaginemos que escrevemos a nossa aplicação e que a gestão de dados por entre milhares de linhas de código que utilizámos foi o ODBC, em Windows. Agora, passado uns tempos, alguém que usa um sistema UNIX , deseja utilizar a aplicação, mas o sistema operativo não lhe dá suporte ao ODBC e deseja utilizar MySQL, seja qual for a razão.
Pois é, o problema está identificado! Agora é necessário no meio  de milhares de linhas de código alterar tudo , de forma a usar-se apenas MySQL. Eis o principal factor porque se deve utilizar uma camada de abstracção em aplicações consideráveis.
<br>
Vamos então começar por fazer o download em 
<a href="http://adodb.sourceforge.net/">ADOdb</a>
onde poderá ler mais informação sobre este assunto.
<br>
No download tenha atenção à versão do PHP que utiliza, pois são disponibilizadas versões para PHP5 ou ambas (PHP4 e PHP5).<br>
A distribuição é bastante pequena (cerca de 600Kb). Após fazer o download, descompacte (na pasta adodb5 por exemplo) do seu servidor local, de forma a podermos fazer os testes que vou apresentar ao longo deste artigo.
<br>
Agora sempre que quisermos utilizar a camada de abstracção utilizaremos o seguinte código php.
<br><br>

<code><font color="#000000"> <font color="#0000bb">&lt;?php <br /></font><font color="#ff8000">//inclus&atilde;o&nbsp;da&nbsp;camada&nbsp;de&nbsp;abstrac&ccedil;&atilde;o <br /> <br /></font><font color="#007700">require_once(</font><font color="#dd0000">"adodb5/adodb.inc.php"</font><font color="#007700">); <br /></font><font color="#ff8000">//credenciais&nbsp;ao&nbsp;servidor <br /></font><font color="#0000bb">$host&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">"localhost"</font><font color="#007700">; <br /></font><font color="#0000bb">$user&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">"root"</font><font color="#007700">; <br /></font><font color="#0000bb">$pass&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">""</font><font color="#007700">; <br /></font><font color="#0000bb">$table&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">"membros"</font><font color="#007700">; <br /></font><font color="#0000bb">$db&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">"revistaphp_net"</font><font color="#007700">; <br /></font><font color="#0000bb">$conn&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">"mysql"</font><font color="#007700">;&nbsp;&nbsp;</font><font color="#ff8000">//&nbsp;driver&nbsp;de&nbsp;dados&nbsp;selecionado <br /> <br /></font><font color="#0000bb">$DBmySQL&nbsp;</font><font color="#007700">=&amp;&nbsp;</font><font color="#0000bb">NewADOConnection</font><font color="#007700">(</font><font color="#0000bb">$conn</font><font color="#007700">); <br /></font><font color="#0000bb">$DBmySQL</font><font color="#007700">-&gt;</font><font color="#0000bb">Connect</font><font color="#007700">(</font><font color="#0000bb">$host</font><font color="#007700">,</font><font color="#0000bb">$user</font><font color="#007700">,</font><font color="#0000bb">$pass</font><font color="#007700">,</font><font color="#0000bb">$db</font><font color="#007700">); <br /></font><font color="#0000bb">$DBmySQL</font><font color="#007700">-&gt;</font><font color="#0000bb">debug</font><font color="#007700">=</font><font color="#0000bb">true</font><font color="#007700">;</font><font color="#ff8000">//activa&nbsp;do&nbsp;debug&nbsp; <br /> <br />//&nbsp;vammos&nbsp;criar&nbsp;uma&nbsp;tabela&nbsp;temporaria <br /></font><font color="#0000bb">$sqlT&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">"CREATE&nbsp;TEMPORARY&nbsp;TABLE&nbsp;`$table`&nbsp;( <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`id`&nbsp;int(10)&nbsp;unsigned&nbsp;NOT&nbsp;NULL&nbsp;auto_increment, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`nome`&nbsp;varchar(100)&nbsp;NOT&nbsp;NULL&nbsp;default&nbsp;'', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`email`&nbsp;varchar(100)&nbsp;NOT&nbsp;NULL&nbsp;default&nbsp;'', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRIMARY&nbsp;KEY&nbsp;&nbsp;(`id`))&nbsp;ENGINE=MyISAM;"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp; <br /></font><font color="#0000bb">$DBmySQL</font><font color="#007700">-&gt;</font><font color="#0000bb">Execute</font><font color="#007700">(</font><font color="#0000bb">$sqlT</font><font color="#007700">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /> <br /> <br />&nbsp;&nbsp;</font><font color="#ff8000">//agora&nbsp;&eacute;&nbsp;f&aacute;cil&nbsp;entender&nbsp;a&nbsp;seguinte&nbsp;cla&uacute;sla&nbsp;de&nbsp;inser&ccedil;&atilde;o&nbsp;dos&nbsp;dados <br /></font><font color="#0000bb">$sql&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">"INSERT&nbsp;INTO&nbsp;{$table}&nbsp;(nome,&nbsp;email)&nbsp;VALUES('Revista&nbsp;PHP',&nbsp;'revistaphp@gmail.com')"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$DBmySQL</font><font color="#007700">-&gt;</font><font color="#0000bb">Execute</font><font color="#007700">(</font><font color="#0000bb">$sql</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br /> <br /></font><font color="#ff8000">//executa&nbsp;a&nbsp;cla&uacute;sula&nbsp;SQL <br /></font><font color="#0000bb">$rs1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">$DBmySQL</font><font color="#007700">-&gt;</font><font color="#0000bb">Execute</font><font color="#007700">(</font><font color="#dd0000">"SELECT&nbsp;*&nbsp;FROM&nbsp;{$table}"</font><font color="#007700">); <br />&nbsp;&nbsp; <br />&nbsp;&nbsp;if(!</font><font color="#0000bb">$rs1</font><font color="#007700">){&nbsp;&nbsp;</font><font color="#ff8000">//obt&eacute;m&nbsp;eventuais&nbsp;erros <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$DBmySQL</font><font color="#007700">-&gt;</font><font color="#0000bb">ErrorMsg</font><font color="#007700">(); <br />&nbsp;&nbsp;&nbsp;&nbsp;exit; <br />&nbsp;&nbsp;&nbsp;} <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#ff8000">//obtendo&nbsp;os&nbsp;resultados <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$Thtml&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">"&lt;table&nbsp;bgcolor=\"#999999\"&nbsp;border=\"1\"&gt;\n"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!</font><font color="#0000bb">$rs1</font><font color="#007700">-&gt;</font><font color="#0000bb">EOF</font><font color="#007700">)&nbsp;{ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$Thtml&nbsp;</font><font color="#007700">.=</font><font color="#dd0000">"&lt;tr&gt;\n"</font><font color="#007700">;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$Thtml&nbsp;</font><font color="#007700">.=</font><font color="#dd0000">"&lt;td&gt;&nbsp;Nome:&nbsp;&lt;/td&gt;&lt;td&gt;"&nbsp;</font><font color="#007700">.</font><font color="#0000bb">$rs1</font><font color="#007700">-&gt;</font><font color="#0000bb">fields</font><font color="#007700">[</font><font color="#0000bb">1</font><font color="#007700">].</font><font color="#dd0000">"&lt;/td&gt;\n"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$Thtml&nbsp;</font><font color="#007700">.=&nbsp;</font><font color="#dd0000">"&lt;/tr&gt;\n&lt;tr&gt;\n"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$Thtml&nbsp;</font><font color="#007700">.=</font><font color="#dd0000">"&lt;td&gt;&nbsp;Email:&nbsp;&lt;/td&gt;&lt;td&gt;"</font><font color="#007700">.</font><font color="#0000bb">$rs1</font><font color="#007700">-&gt;</font><font color="#0000bb">fields</font><font color="#007700">[</font><font color="#0000bb">2</font><font color="#007700">].</font><font color="#dd0000">"&lt;/td&gt;\n"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$Thtml&nbsp;</font><font color="#007700">.=&nbsp;</font><font color="#dd0000">"&lt;/tr&gt;\n"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#ff8000">//obt&eacute;m&nbsp;a&nbsp;pr&oacute;xima&nbsp;linha <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$rs1</font><font color="#007700">-&gt;&nbsp;</font><font color="#0000bb">MoveNext</font><font color="#007700">();&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$Thtml&nbsp;</font><font color="#007700">.=</font><font color="#dd0000">"&lt;/table&gt;\n"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&nbsp;</font><font color="#0000bb">$Thtml</font><font color="#007700">;&nbsp; <br /> <br /></font><font color="#0000bb">?&gt;</font> </font> </code> 
 <br><br>]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>.NET PLATFORM - LINQ no PHP</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=33</link> 
	 <description><![CDATA[O LINQ (do inglês Language Integrated Query), é um componente que surgiu para o C# 3.5 e Visual Basic, onde vem com linguagem de sintaxe nativa. O objectivo deste componente é de permitir criar uma variedade de consultas (tecnicamente queries), em tipos de dados completamente diferentes, sejam a partir de arrays, no XML, no SQL Server ..., e muitos outros. Este componente faz parte integrante da plataforma. NET, e o projecto tem honras de apresentação na comunidade Microsoft (http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx) Encontrando este projecto por acaso decidi pesquisar acerca da sua existência no PHP e deparei-me com um projecto muito fresquinho (iniciado em Janeiro 2008), por Maarten Balliauw . Esta é sem dúvida a melhor altura para acompanhar este tipo de projectos, pois assim compreendemos tudo de raiz. Decidi então vasculhar um pouco mais, e baixei o primeiro release <a href="http://www.codeplex.com/PHPLinq"> aquí </a> , e logo no momento dos testes fiquei convencido, embora já tivesse estudado um processo similar ,no site da IBM , com queries em dados XML. 
<br><br>
No LINQ , a sintaxe utilizada nas consultas (queries) , é muito parecida ao SQL. E ao que parece a afirmação de Maarten é mesmo verdade “se começarmos a usar esta forma de aceder aos dados, não vamos querer mudar mais” - o que na minha opinião é perigoso e já vão saber porquê. Baseado nos exemplos que este autor apresenta decidi criar alguns scripts por minha autoria e fazer os meus testes. O conceito é muito simples.<br>
Primeiro vamos criar listas onde a informação é armazenada. No primeiro exemplo vamos usar uma lista simples.<br><br>
<code><font color="#000000"> <font color="#0000bb">&lt;?php&nbsp; <br /> <br /></font><font color="#ff8000">//&nbsp;algumas&nbsp;cidades&nbsp;portuguesas&nbsp; <br /></font><font color="#0000bb">$cidades&nbsp;</font><font color="#007700">=&nbsp;array(</font><font color="#dd0000">"Guarda"</font><font color="#007700">,</font><font color="#dd0000">"Viseu"</font><font color="#007700">,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#dd0000">"Covilh&atilde;"</font><font color="#007700">,</font><font color="#dd0000">"Castelo&nbsp;Branco"</font><font color="#007700">,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#dd0000">"Meda"</font><font color="#007700">,</font><font color="#dd0000">"Braga"</font><font color="#007700">);&nbsp; <br /> <br /></font><font color="#ff8000">/*************************************************&nbsp; <br />&nbsp;Imagine-se&nbsp;que&nbsp;desejamos&nbsp;obter&nbsp;a&nbsp;cidades&nbsp;cujo&nbsp;&nbsp; <br />&nbsp;tamaho&nbsp;de&nbsp;caracteres&nbsp;e&nbsp;inferior&nbsp;ou&nbsp;igual&nbsp;&nbsp;a&nbsp;4&nbsp; <br />&nbsp;Rapidamente&nbsp;identificamos&nbsp;que&nbsp;&eacute;&nbsp;Meda&nbsp; <br />&nbsp;Em&nbsp;PHP&nbsp;stardard&nbsp;teriamos&nbsp; <br />&nbsp;*************************************************/&nbsp; <br /></font><font color="#007700">foreach(</font><font color="#0000bb">$cidades&nbsp;</font><font color="#007700">as&nbsp;</font><font color="#0000bb">$cidade</font><font color="#007700">){&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</font><font color="#0000bb">strlen</font><font color="#007700">(</font><font color="#0000bb">$cidade</font><font color="#007700">)&lt;=</font><font color="#0000bb">4</font><font color="#007700">){&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</font><font color="#0000bb">$cidade</font><font color="#007700">.</font><font color="#dd0000">"&lt;br&nbsp;/&gt;"</font><font color="#007700">;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /></font><font color="#ff8000">/****************************************************&nbsp; <br />&nbsp;Imaginemos&nbsp;agora&nbsp;que&nbsp;desejamos&nbsp;verificar&nbsp;se&nbsp;existe&nbsp;um&nbsp;&nbsp; <br />&nbsp;elemento&nbsp;repetido&nbsp;no&nbsp;array&nbsp;(a&nbsp;olho&nbsp;vemos&nbsp;que&nbsp;n&atilde;o)&nbsp;,&nbsp; <br />&nbsp;mas&nbsp;em&nbsp;listas&nbsp;carregadas&nbsp;de&nbsp;forma&nbsp;din&acirc;mica&nbsp;no&nbsp;sistema&nbsp;&nbsp; <br />&nbsp;esse&nbsp;conceito&nbsp;de&nbsp;visualiza&ccedil;&atilde;o&nbsp;n&atilde;o&nbsp;se&nbsp;aplica),&nbsp;ent&atilde;o&nbsp; <br />&nbsp;vamos&nbsp;adicinar&nbsp;um&nbsp;elemento&nbsp;j&aacute;&nbsp;existente&nbsp; <br />&nbsp;*****************************************************/&nbsp; <br /> <br />&nbsp;</font><font color="#0000bb">array_push</font><font color="#007700">(</font><font color="#0000bb">$cidades</font><font color="#007700">,</font><font color="#dd0000">"Guarda"</font><font color="#007700">);&nbsp; <br /> <br />foreach&nbsp;(</font><font color="#0000bb">$cidades&nbsp;</font><font color="#007700">as&nbsp;</font><font color="#0000bb">$cidade</font><font color="#007700">){&nbsp; <br />&nbsp;&nbsp;if(</font><font color="#0000bb">$cidade</font><font color="#007700">==</font><font color="#dd0000">"Guarda"</font><font color="#007700">){&nbsp; <br />&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$search</font><font color="#007700">[]&nbsp;=&nbsp;</font><font color="#0000bb">$cidade</font><font color="#007700">;&nbsp; <br />&nbsp;&nbsp;&nbsp;}&nbsp; <br />}&nbsp; <br /> <br />echo&nbsp;</font><font color="#dd0000">"Existem&nbsp;"&nbsp;</font><font color="#007700">.</font><font color="#0000bb">sizeof</font><font color="#007700">(</font><font color="#0000bb">$search</font><font color="#007700">).&nbsp; <br /></font><font color="#dd0000">"&nbsp;cidades&nbsp;com&nbsp;o&nbsp;mesmo&nbsp;nome&nbsp;no&nbsp;array"</font><font color="#007700">;&nbsp; <br /> <br /> <br /></font><font color="#ff8000">/*****************************************&nbsp; <br />&nbsp;...&nbsp;se&nbsp;quisesse&nbsp;obter&nbsp;as&nbsp;cidades&nbsp;de&nbsp;forma&nbsp; <br />&nbsp;&nbsp;distinta&nbsp;(sem&nbsp;repeti&ccedil;&atilde;o)&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;******************************************/&nbsp; <br />&nbsp;</font><font color="#007700">echo&nbsp;</font><font color="#dd0000">"&lt;pre&gt;"</font><font color="#007700">;&nbsp; <br />&nbsp;</font><font color="#0000bb">print_r</font><font color="#007700">(</font><font color="#0000bb">array_unique</font><font color="#007700">(</font><font color="#0000bb">$cidades</font><font color="#007700">));&nbsp; <br />&nbsp;echo&nbsp;</font><font color="#dd0000">"&lt;pre&nbsp;/&gt;"</font><font color="#007700">;&nbsp; <br /> <br /></font><font color="#ff8000">/*******************************************&nbsp; <br />&nbsp;Toda&nbsp;esta&nbsp;forma&nbsp;de&nbsp;lidar&nbsp;com&nbsp;arrays&nbsp;podia&nbsp;&nbsp; <br />&nbsp;dar&nbsp;lugar&nbsp;a&nbsp;uma&nbsp;nova&nbsp;fun&ccedil;&atilde;o&nbsp; <br />*******************************************/&nbsp; <br /> <br />&nbsp;</font><font color="#007700">function&nbsp;</font><font color="#0000bb">OperaArray</font><font color="#007700">(</font><font color="#0000bb">$arr</font><font color="#007700">,</font><font color="#0000bb">$str</font><font color="#007700">=</font><font color="#0000bb">NULL</font><font color="#007700">,</font><font color="#0000bb">$op</font><font color="#007700">){&nbsp;&nbsp; <br /> <br />&nbsp;&nbsp;&nbsp;switch(</font><font color="#0000bb">$op</font><font color="#007700">){&nbsp; <br />&nbsp;&nbsp;&nbsp;case&nbsp;</font><font color="#dd0000">'unico'</font><font color="#007700">:&nbsp; <br />&nbsp;&nbsp;&nbsp;return&nbsp;</font><font color="#0000bb">array_unique</font><font color="#007700">(</font><font color="#0000bb">$arr</font><font color="#007700">);&nbsp; <br />&nbsp;&nbsp;&nbsp;break;&nbsp; <br />&nbsp;&nbsp;&nbsp;case&nbsp;</font><font color="#dd0000">'rep'</font><font color="#007700">:&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</font><font color="#0000bb">$arr&nbsp;</font><font color="#007700">as&nbsp;</font><font color="#0000bb">$s</font><font color="#007700">){&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</font><font color="#0000bb">$s</font><font color="#007700">==</font><font color="#0000bb">$str</font><font color="#007700">){&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$narr</font><font color="#007700">[]&nbsp;=&nbsp;</font><font color="#0000bb">$s</font><font color="#007700">;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</font><font color="#0000bb">$narr</font><font color="#007700">;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</font><font color="#dd0000">'eval'</font><font color="#007700">:&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach(</font><font color="#0000bb">$arr&nbsp;</font><font color="#007700">as&nbsp;</font><font color="#0000bb">$s</font><font color="#007700">){&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</font><font color="#0000bb">strlen</font><font color="#007700">(</font><font color="#0000bb">$s</font><font color="#007700">)&nbsp;&lt;=&nbsp;</font><font color="#0000bb">$str</font><font color="#007700">){&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</font><font color="#0000bb">$s</font><font color="#007700">.</font><font color="#dd0000">"&lt;br&nbsp;/&gt;"</font><font color="#007700">;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;default:&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</font><font color="#0000bb">false</font><font color="#007700">;&nbsp; <br />&nbsp;&nbsp;&nbsp;}&nbsp; <br />&nbsp;}&nbsp; <br />&nbsp;</font><font color="#ff8000">//&nbsp;exemplo&nbsp;de&nbsp;uso&nbsp; <br /></font><font color="#0000bb">print_r</font><font color="#007700">(&nbsp;</font><font color="#0000bb">OperaArray</font><font color="#007700">(</font><font color="#0000bb">$cidades</font><font color="#007700">,</font><font color="#dd0000">''</font><font color="#007700">,</font><font color="#dd0000">'unico'</font><font color="#007700">));&nbsp; <br /> <br /> <br /></font><font color="#0000bb">?&gt;</font>&nbsp; <br /></font> </code> 
<br><br>
Posto isto vamos utilizar alguns exemplos no LINQ no PHP , usando um array unidimensional
<br><br>

<code><font color="#000000"> <font color="#0000bb">&lt;?php&nbsp; <br /></font><font color="#ff8000">/*******************************************&nbsp; <br />&nbsp;Onidesk&nbsp;Labs&nbsp;::LINQ&nbsp;4&nbsp;PHP&nbsp;tests&nbsp; <br />&nbsp;******************************************/&nbsp; <br /> <br /></font><font color="#007700">require(</font><font color="#dd0000">"PHPLinq.php"</font><font color="#007700">);&nbsp; <br /></font><font color="#0000bb">$cidades&nbsp;</font><font color="#007700">=&nbsp;array();&nbsp; <br /></font><font color="#0000bb">$cidades</font><font color="#007700">[]&nbsp;=&nbsp;</font><font color="#dd0000">"Guarda"</font><font color="#007700">;&nbsp; <br /></font><font color="#0000bb">$cidades</font><font color="#007700">[]&nbsp;=&nbsp;</font><font color="#dd0000">"Meda"</font><font color="#007700">;&nbsp; <br /></font><font color="#0000bb">$cidades</font><font color="#007700">[]&nbsp;=&nbsp;</font><font color="#dd0000">"Castelo&nbsp;Branco"</font><font color="#007700">;&nbsp; <br /></font><font color="#0000bb">$cidades</font><font color="#007700">[]&nbsp;=&nbsp;</font><font color="#dd0000">"Viseu"</font><font color="#007700">;&nbsp; <br /> <br /> <br /> <br /></font><font color="#0000bb">$result&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">from</font><font color="#007700">(</font><font color="#dd0000">'$cidade'</font><font color="#007700">)-&gt;</font><font color="#0000bb">in</font><font color="#007700">(</font><font color="#0000bb">$cidades</font><font color="#007700">)&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">where</font><font color="#007700">(</font><font color="#dd0000">'$cidade&nbsp;=&gt;&nbsp;substr($cidade,0,1)=="M"'</font><font color="#007700">)&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">select</font><font color="#007700">(</font><font color="#dd0000">'$cidade'</font><font color="#007700">);&nbsp;&nbsp; <br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#ff8000">#print_r($result);&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />/**********************************************&nbsp; <br />O&nbsp;mesmo&nbsp;objectivo&nbsp;com&nbsp;&nbsp;foreach&nbsp;no&nbsp;PHP&nbsp;&nbsp; <br />&nbsp;*********************************************/&nbsp; <br />&nbsp;</font><font color="#007700">foreach(</font><font color="#0000bb">$cidades&nbsp;</font><font color="#007700">as&nbsp;</font><font color="#0000bb">$cidade</font><font color="#007700">){&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;if(</font><font color="#0000bb">substr</font><font color="#007700">(</font><font color="#0000bb">$cidade</font><font color="#007700">,-</font><font color="#0000bb">6</font><font color="#007700">,</font><font color="#0000bb">1</font><font color="#007700">)==</font><font color="#dd0000">"M"</font><font color="#007700">){&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</font><font color="#0000bb">$cidade</font><font color="#007700">.</font><font color="#dd0000">"&lt;br&nbsp;/&gt;"</font><font color="#007700">;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /> <br /></font><font color="#0000bb">?&gt;</font>&nbsp; <br /></font> </code> 
<br><br>
<strong>Resultado</strong>
Array
(
    [0] => Meda
)
<br><br>

<br><br>
O PHPLinq, permite facilmente aceder a objectos instanciados e armazenados num array. 
<br><br>
<code><font color="#000000"> <font color="#0000bb">&lt;?php <br />&nbsp;</font><font color="#007700">require(</font><font color="#dd0000">"PHPLinq.php"</font><font color="#007700">); <br /> <br />&nbsp;</font><font color="#0000bb">$Cidades&nbsp;</font><font color="#007700">=&nbsp;array(&nbsp; <br />&nbsp;new&nbsp;</font><font color="#0000bb">Cidade</font><font color="#007700">(</font><font color="#dd0000">'Guarda'</font><font color="#007700">,</font><font color="#dd0000">'44&nbsp;264'</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'38.694085'</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'-9.162598'</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'Portugal'</font><font color="#007700">), <br />&nbsp;new&nbsp;</font><font color="#0000bb">Cidade</font><font color="#007700">(</font><font color="#dd0000">'Meda'</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'6&nbsp;239'</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'40.950863'</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'-7.261963'</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'Portugal'</font><font color="#007700">), <br />&nbsp;new&nbsp;</font><font color="#0000bb">Cidade&nbsp;</font><font color="#007700">(</font><font color="#dd0000">'Castelo&nbsp;Branco'</font><font color="#007700">,</font><font color="#dd0000">'54&nbsp;574'</font><font color="#007700">,</font><font color="#dd0000">'39.829632'</font><font color="#007700">,</font><font color="#dd0000">'-7.531128'</font><font color="#007700">,</font><font color="#dd0000">'Portugal'</font><font color="#007700">), <br />&nbsp;new&nbsp;</font><font color="#0000bb">Cidade&nbsp;</font><font color="#007700">(</font><font color="#dd0000">'Viseu'</font><font color="#007700">,</font><font color="#dd0000">'98&nbsp;167'</font><font color="#007700">,</font><font color="#dd0000">'40.653555'</font><font color="#007700">,</font><font color="#dd0000">'-7.921143'</font><font color="#007700">,</font><font color="#dd0000">'Portugal'</font><font color="#007700">)); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$cidade&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">""</font><font color="#007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;</font><font color="#0000bb">$result&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">from</font><font color="#007700">(</font><font color="#dd0000">'$cidade'</font><font color="#007700">)-&gt;</font><font color="#0000bb">in</font><font color="#007700">(</font><font color="#0000bb">$Cidades</font><font color="#007700">) <br />&nbsp;&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">where</font><font color="#007700">(</font><font color="#dd0000">'$cidade&nbsp;=&gt;&nbsp;substr($cidade-&gt;cidade,0,1)&nbsp;==&nbsp;"G"'</font><font color="#007700">) <br />&nbsp;&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">orderBy</font><font color="#007700">(</font><font color="#dd0000">'$cidade&nbsp;=&gt;&nbsp;$cidade-&gt;cidade'</font><font color="#007700">) <br />&nbsp;&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">thenByDescending</font><font color="#007700">(</font><font color="#dd0000">'$cidade&nbsp;=&gt;&nbsp;$cidade-&gt;cidade'</font><font color="#007700">) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">select</font><font color="#007700">(</font><font color="#dd0000">'$cidade'</font><font color="#007700">); <br /> <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;</font><font color="#ff8000">//imprimindo&nbsp;os&nbsp;resultados <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">echo&nbsp;</font><font color="#dd0000">"&lt;pre&gt;"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">print_r</font><font color="#007700">(</font><font color="#0000bb">$result</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</font><font color="#dd0000">"&lt;/pre&gt;"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /> <br /></font><font color="#0000bb">?&gt;</font> </font> </code> 
<br><br>
<strong>Resultado</strong>
<br>
<pre>Array
(
    [0] => Cidade Object
        (
            [cidade] => Guarda
            [habitantes] => 44 264
            [latitude] => 38.694085
            [longitude] => -9.162598
            [pais] => Portugal
        )

)
</pre>
<br><br>
<br><br>
<strong>Novas funcionalidades</strong>
<br><br>
Segundo o autor, na próxima versão do  PHPlinq  (ainda não lançada), esta contará com a funcionalidade de JOIN.<br>
Segue-se um exemplo , enviado gentilmente pelo autor , propositadamente para este artigo.No exemplo que segue demonstra-se com combinar empregados ($employee) com  departamentos ($departments)
<br><br> 
<code><font color="#000000"> <font color="#0000bb">&lt;?php <br />$result&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">from</font><font color="#007700">(</font><font color="#dd0000">'$cidade'</font><font color="#007700">)-&gt;</font><font color="#0000bb">in</font><font color="#007700">(</font><font color="#0000bb">$cidades</font><font color="#007700">) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">where</font><font color="#007700">(</font><font color="#dd0000">'$cidade&nbsp;=&gt;&nbsp;substr($cidade,-6,1)=="M"'</font><font color="#007700">) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">select</font><font color="#007700">(</font><font color="#dd0000">'$cidade'</font><font color="#007700">);&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">print_r</font><font color="#007700">(</font><font color="#0000bb">$result</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">$result&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">from</font><font color="#007700">(</font><font color="#dd0000">'$employee'</font><font color="#007700">)-&gt;</font><font color="#0000bb">in</font><font color="#007700">(</font><font color="#0000bb">$employees</font><font color="#007700">) <br />&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">join</font><font color="#007700">(</font><font color="#dd0000">'$department'</font><font color="#007700">)-&gt;</font><font color="#0000bb">in</font><font color="#007700">(</font><font color="#0000bb">$departments</font><font color="#007700">) <br />&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">on</font><font color="#007700">(</font><font color="#dd0000">'$employee,&nbsp;$department&nbsp;=&gt;&nbsp;$employee-&gt;DepartmentId&nbsp;==&nbsp;$department-&gt;Id'</font><font color="#007700">) <br />&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">join</font><font color="#007700">(</font><font color="#dd0000">'$manager'</font><font color="#007700">) <br />&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">in</font><font color="#007700">(</font><font color="#0000bb">$employees</font><font color="#007700">) <br />&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">on</font><font color="#007700">(</font><font color="#dd0000">'$employee,&nbsp;$manager&nbsp;=&gt;&nbsp;$employee-&gt;ManagerId&nbsp;&gt;&nbsp;0&nbsp; <br />&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;$employee-&gt;ManagerId&nbsp;==&nbsp;$manager-&gt;Id'</font><font color="#007700">) <br />&nbsp;&nbsp;&nbsp;-&gt;</font><font color="#0000bb">select</font><font color="#007700">(</font><font color="#dd0000">'$employee&nbsp;=&nbsp;null,&nbsp;$department&nbsp;=&nbsp;null,&nbsp;$manager&nbsp;=&nbsp;null&nbsp;=&gt;&nbsp;new&nbsp;{ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Name"&nbsp;=&gt;&nbsp;$employee-&gt;Name, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Email"&nbsp;=&gt;&nbsp;$employee-&gt;Email, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Department"&nbsp;=&gt;&nbsp;$department, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"Manager"&nbsp;=&gt;&nbsp;$manager <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}'</font><font color="#007700">); <br /></font><font color="#0000bb">?&gt; <br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font> </code> 
<br><br>
<strong>Observações finais</strong><br>
É certo que o LINQ é extremamente útil e facilita muito o tratamento de dados.
Em arrays simples, não fará muito sentido, pois para isso temos as funções nativas do PHP. Em arrays multidimensionais pode constituir uma tarefa interessante, assim como no acesso a Base de Dados como MySQL ou outras
Sem querer parecer céptico, penso que este não deve ser trocado pelas cláusulas disponíveis a partir do SQL que conhecemos, embora a facilidade que transparece na utilização do LINQ no PHP, o torne a apetecível.
Não só porque é uma tecnologia mais explorada e fiável, para a qual já existe orientada toda uma plataforma de desenvolvimento, mas também porque está acessível a partir de quase todas as linguagens. Além disso como o autor do LINQ para PHP reconhece, o LINQ pode torna-se viciante, e menosprezar a forma correcta (na minha maneira de ver), forma de acessar aos dados. Veja-se que obter os dados dum arrays desta forma exigirá muito mais do sistema, que sim simples foreach nativo.


]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Web Services no PHP - exemplo prático</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=34</link> 
	 <description><![CDATA[Os Web Services comportam um conjunto de normas, designadas por Standards (XML, SOAP, WSDL , UDDI …)<br>
No PHP é possível manipular esses standards, de forma a trocar informações entre as aplicações para que estas se entendam (protocolo), num formato que tem se ser reconhecido por ambas.<br>
Isto verifica-se sempre mesmo que as aplicações tenham sido desenvolvidas em sistemas díspares, como por exemplo Unix e Windows.<br>
De forma muito simplista um Web Service e pode ser visto como página Web (que integra o protocolo HTTP), acessível para qualquer lugar da Internet.<br>
Recebe a informação no formato XML, “interpreta” o pedido solicitado e responde utilizando o mesmo standard de resposta (XML)<br>
Os Web Services , não se intimidam pelo uso de firewalls ou servidores proxy, pois , funcionam mesmo na presença destes.<br>
Como são independentes da plataforma de desenvolvimento, passaram a constituir a forma generalizada das aplicações de comunicarem, cuja interacção não depende de intervenção humana.<br>
Estas características fazem com a integração das aplicações seja muito menos dispendiosa.
De forma sintética um Web Service caracteriza-se:
<ol>
<li>fornecer serviços mediante a Internet utilizando o protocolo HTTP</li>
<li> o formato usado na descrição é o WSDL</li>
- acedem ao servidor utilizando mensagens SOAP
<li> a veiculação da informação usa XML</li>
- o servidor é o repositório onde constam os dados
<li>o cliente é visto como a funcionalidade que interroga o servidor</li>
<li> A segmentação cliente – servidor complementa o serviço, no utilizador apenas interage com o cliente, visualizando os dados, já formatados.</li>
</ol>
<br>
Pese o facto de o PHP já contar com Web Services de forma nativa a partir da versão PHP5, este artigo não tenciona apresentar essa vertente.<br>
Para desenvolvimento de Web Services PHP,temos à disposição uma distribuição muito conhecida, o  NuSOAP , cuja primeira versão foi lançada em Maio de 2004.<br>
À data que escrevia este artigo o NuSOAP conta com a 0.7.1, datada de Julho 2007.
<br>
<img src="img/nusoap.jpg">
<br>
O NuSOAP conta apenas num conjunto de classes escritas em PHP e não tem qualquer dependência das extensões do PHP. Para fazer o download desta funcionalidade aceda <a href="http://sourceforge.net/projects/nusoap/"> aquí </a>
<br>
Além da distribuição que contém o NuSoap poderá fazer o download da documentação, que contém a hierarquia das classes, métodos e atributos e respectiva escolaridade. 
Após fazer o download do NuSOAP , descomprima para o seu directório, e por uma questão de organização organize o seu directório na seguinte estrutura
<br>
<strong>

www\NuSOAP<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                 /lib<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /samples </strong>

<br>
A pasta lib , contém o módulo  NuSOAP entre outras funcionalidade, e a pasta sample contém alguns exemplos que deve estudar de forma a aprender como utilizar e criar Web Services à posteriori.<br>
Agora que temos os requisitos necessários vamos criar exemplo dum Web Service básico. 
Isso implica que tenhamos de criar duas aplicações, uma a funcionar como cliente e a outra como servidor.
<br><br>
<code><font color="#000000"> <font color="#0000bb">&lt;?php <br /></font><font color="#ff8000">/************************************************ <br />&nbsp;Autor&nbsp;:&nbsp;Jos&eacute;&nbsp;Franco <br />&nbsp;Data&nbsp;&nbsp;:&nbsp;24&nbsp;Abril&nbsp;2008 <br />&nbsp;Distro:&nbsp;NuSOAP&nbsp;Case&nbsp;Study&nbsp;:&nbsp;servidor.php&nbsp; <br />&nbsp;************************************************/ <br /> <br />//&nbsp;carrega&nbsp;o&nbsp;m&oacute;dulo&nbsp;NuSOAP&nbsp;a&nbsp;partir&nbsp;da&nbsp;sua&nbsp;localiza&ccedil;&atilde;o <br /></font><font color="#007700">require_once(</font><font color="#0000bb">$_SERVER</font><font color="#007700">[</font><font color="#dd0000">'DOCUMENT_ROOT'</font><font color="#007700">].</font><font color="#dd0000">"./NuSoap/lib/nusoap.php"</font><font color="#007700">); <br /></font><font color="#ff8000">//inst&acirc;ncia&nbsp;um&nbsp;objecto&nbsp;tipo&nbsp;servidor <br /></font><font color="#0000bb">$Servidor&nbsp;</font><font color="#007700">=&nbsp;new&nbsp;</font><font color="#0000bb">soap_server</font><font color="#007700">; <br /></font><font color="#ff8000">//&nbsp;regista&nbsp;a&nbsp;fun&ccedil;&atilde;o&nbsp;de&nbsp;define&nbsp;o&nbsp;servi&ccedil;o <br /></font><font color="#0000bb">$Servidor</font><font color="#007700">-&gt;</font><font color="#0000bb">register</font><font color="#007700">(</font><font color="#dd0000">'MembroValido'</font><font color="#007700">); <br /> <br /> <br /></font><font color="#ff8000">/*&nbsp;fun&ccedil;&atilde;o&nbsp;que&nbsp;generaliza&nbsp;o&nbsp;servi&ccedil;o <br />&nbsp;&nbsp;&nbsp;Esta&nbsp;fun&ccedil;&atilde;o&nbsp;tem&nbsp;como&nbsp;par&acirc;metro&nbsp;uma&nbsp;string&nbsp; <br />&nbsp;&nbsp;&nbsp;que&nbsp;&eacute;&nbsp;o&nbsp;nome&nbsp;do&nbsp;membro&nbsp;que&nbsp;deseja&nbsp;aceder&nbsp; <br />&nbsp;&nbsp;&nbsp;ao&nbsp;servi&ccedil;o.&nbsp;Se&nbsp;o&nbsp;nome&nbsp;constar&nbsp;no&nbsp;vector&nbsp;de&nbsp;membros <br />&nbsp;&nbsp;&nbsp;(simula&nbsp;a&nbsp;Base&nbsp;de&nbsp;Dados),&nbsp;o&nbsp;servi&ccedil;o&nbsp;&eacute;&nbsp;efectuado <br />&nbsp;&nbsp;&nbsp;com&nbsp;sucesso.&nbsp;Doutra&nbsp;forma&nbsp;ocorre&nbsp;um&nbsp;erro&nbsp;especifico <br />&nbsp;&nbsp;&nbsp;enviado&nbsp;ao&nbsp;cleinte <br /> <br />*/ <br /></font><font color="#007700">function&nbsp;</font><font color="#0000bb">MembroValido</font><font color="#007700">(</font><font color="#0000bb">$nome</font><font color="#007700">){ <br /></font><font color="#0000bb">$membros&nbsp;</font><font color="#007700">=&nbsp;array(</font><font color="#dd0000">"Guto123"</font><font color="#007700">,</font><font color="#dd0000">"Pedro777"</font><font color="#007700">,</font><font color="#dd0000">"Berto003"</font><font color="#007700">); <br /></font><font color="#0000bb">$rs&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">array_search</font><font color="#007700">(</font><font color="#0000bb">$nome</font><font color="#007700">,</font><font color="#0000bb">$membros</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />if(</font><font color="#0000bb">$nome</font><font color="#007700">==</font><font color="#dd0000">""</font><font color="#007700">){ <br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;</font><font color="#0000bb">soap_fault</font><font color="#007700">(</font><font color="#dd0000">'Erro&nbsp;no&nbsp;cliente'</font><font color="#007700">,</font><font color="#dd0000">''</font><font color="#007700">,</font><font color="#dd0000">'Indique&nbsp;o&nbsp;nome&nbsp;do&nbsp;membro'</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;} <br />if(</font><font color="#0000bb">is_integer</font><font color="#007700">(</font><font color="#0000bb">$rs</font><font color="#007700">)&nbsp;AND&nbsp;</font><font color="#0000bb">$membros</font><font color="#007700">[</font><font color="#0000bb">$rs</font><font color="#007700">]==</font><font color="#0000bb">$nome</font><font color="#007700">){ <br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</font><font color="#0000bb">$membros</font><font color="#007700">[</font><font color="#0000bb">$rs</font><font color="#007700">]; <br />}if(!</font><font color="#0000bb">is_integer</font><font color="#007700">(</font><font color="#0000bb">$rs</font><font color="#007700">)){ <br />return&nbsp;new&nbsp;</font><font color="#0000bb">soap_fault</font><font color="#007700">(</font><font color="#dd0000">'Erro&nbsp;no&nbsp;cliente'</font><font color="#007700">,</font><font color="#dd0000">''</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'O&nbsp;membro&nbsp;informado&nbsp;n&atilde;o&nbsp;existe'</font><font color="#007700">); <br />}&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;else{ <br />&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;</font><font color="#0000bb">soap_fault</font><font color="#007700">(</font><font color="#dd0000">'Erro&nbsp;fatal&nbsp;no&nbsp;cliente'</font><font color="#007700">,</font><font color="#dd0000">''</font><font color="#007700">,&nbsp;</font><font color="#dd0000">'Erro&nbsp;desconhecido'</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;} <br />} <br /> <br /></font><font color="#ff8000">//&nbsp;processa&nbsp;a&nbsp;informa&ccedil;&atilde;o&nbsp;e&nbsp;invoca&nbsp;a&nbsp;fun&ccedil;&atilde;o&nbsp; <br /></font><font color="#0000bb">$Servidor</font><font color="#007700">-&gt;</font><font color="#0000bb">service</font><font color="#007700">(</font><font color="#0000bb">$HTTP_RAW_POST_DATA</font><font color="#007700">); <br /></font><font color="#0000bb">?&gt; <br /></font> </font> </code> 
<br><br>
Agora vamos criar o ficheiro que funcionará como cliente, programado as funcionalidades necessárias.
Neste exemplo de modo a facilitar a abordagem , criei a interface HTML , juntamente integrada no ficheiro que contém o Web Service do lado do cliente.<br><br>

<code><font color="#000000"> <font color="#0000bb">&lt;?php <br /></font><font color="#ff8000">/************************************************ <br />&nbsp;Autor&nbsp;:&nbsp;Jos&eacute;&nbsp;Franco <br />&nbsp;Data&nbsp;&nbsp;:&nbsp;24&nbsp;Abril&nbsp;2008 <br />&nbsp;Distro:&nbsp;NuSOAP&nbsp;Case&nbsp;Study&nbsp;:&nbsp;cliente.php&nbsp; <br />&nbsp;************************************************/ <br /> <br />//&nbsp;permite&nbsp;visdualizar&nbsp;erros&nbsp;ocorridos <br /></font><font color="#0000bb">error_reporting</font><font color="#007700">(</font><font color="#0000bb">E_ALL</font><font color="#007700">); <br /> <br /></font><font color="#ff8000">//&nbsp;carrega&nbsp;o&nbsp;m&oacute;dulo&nbsp;NuSOAP&nbsp;a&nbsp;partir&nbsp;da&nbsp;sua&nbsp;localiza&ccedil;&atilde;o <br /></font><font color="#007700">require_once(</font><font color="#0000bb">$_SERVER</font><font color="#007700">[</font><font color="#dd0000">'DOCUMENT_ROOT'</font><font color="#007700">].</font><font color="#dd0000">"./NuSoap/lib/nusoap.php"</font><font color="#007700">); <br /> <br /></font><font color="#ff8000">//&nbsp;ao&nbsp;requisitar&nbsp;o&nbsp;servi&ccedil;o <br /></font><font color="#007700">if(isset(</font><font color="#0000bb">$_POST</font><font color="#007700">[</font><font color="#dd0000">"enviar"</font><font color="#007700">])){ <br /> <br /></font><font color="#ff8000">//&nbsp;obt&eacute;m&nbsp;o&nbsp;nome&nbsp;enviado&nbsp;pelo&nbsp;formul&aacute;rio <br /></font><font color="#0000bb">$nome&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">$_REQUEST</font><font color="#007700">[</font><font color="#dd0000">"nome"</font><font color="#007700">]; <br /> <br /></font><font color="#ff8000">//&nbsp;define&nbsp;a&nbsp;localiza&ccedil;&atilde;o&nbsp;do&nbsp;servidor <br /></font><font color="#0000bb">$Service&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#dd0000">"http://localhost/servidor.php"</font><font color="#007700">; <br /> <br /> <br /></font><font color="#ff8000">//&nbsp;parametros&nbsp;a&nbsp;enviar&nbsp;ao&nbsp;servidor <br /></font><font color="#0000bb">$parametros&nbsp;</font><font color="#007700">=&nbsp;array(</font><font color="#dd0000">'nome'&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#0000bb">$nome</font><font color="#007700">); <br /></font><font color="#ff8000">//&nbsp;instancia&nbsp;ao&nbsp;objecto&nbsp;do&nbsp;tipo&nbsp;Cliente <br /></font><font color="#0000bb">$Cliente&nbsp;</font><font color="#007700">=&amp;&nbsp;new&nbsp;</font><font color="#0000bb">soapclient</font><font color="#007700">(</font><font color="#0000bb">$Service</font><font color="#007700">); <br /></font><font color="#ff8000">//&nbsp;activa&nbsp;uma&nbsp;liga&ccedil;&atilde;o&nbsp;persitente&nbsp;ao&nbsp;servidor <br /></font><font color="#0000bb">$Cliente</font><font color="#007700">-&gt;</font><font color="#0000bb">useHTTPPersistentConnection</font><font color="#007700">(); <br /></font><font color="#ff8000">//&nbsp;faz&nbsp;a&nbsp;requis&ccedil;&atilde;o&nbsp;do&nbsp;servi&ccedil;o&nbsp;,&nbsp;identificado <br />//&nbsp;pela&nbsp;fun&ccedil;&atilde;o&nbsp;de&nbsp;chamada&nbsp;e&nbsp;respectivos&nbsp;par&acirc;metros <br /></font><font color="#0000bb">$rs&nbsp;</font><font color="#007700">=&nbsp;&nbsp;</font><font color="#0000bb">$Cliente</font><font color="#007700">-&gt;</font><font color="#0000bb">call</font><font color="#007700">(</font><font color="#dd0000">'MembroValido'</font><font color="#007700">,</font><font color="#0000bb">$parametros</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;</font><font color="#ff8000">//&nbsp;ao&nbsp;ocrrer&nbsp;erro <br />&nbsp;&nbsp;</font><font color="#007700">if(</font><font color="#0000bb">$erro&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">$Cliente</font><font color="#007700">-&gt;</font><font color="#0000bb">getError</font><font color="#007700">()){ <br />&nbsp;&nbsp;</font><font color="#ff8000">#print_r($Cliente-&gt;request);&nbsp; <br />&nbsp;&nbsp;//&nbsp;obt&eacute;m&nbsp;a&nbsp;resposta&nbsp;enviada <br />&nbsp;&nbsp;&nbsp;</font><font color="#007700">echo&nbsp;</font><font color="#dd0000">"&lt;erro&gt;&nbsp;&lt;strong&gt;&lt;font&nbsp;color=\"red\"&gt;$erro&lt;/font&gt;&lt;/strong&gt;&lt;br&gt;"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;echo&nbsp;</font><font color="#dd0000">"&lt;xmp&gt;"</font><font color="#007700">.</font><font color="#0000bb">$Cliente</font><font color="#007700">-&gt;</font><font color="#0000bb">response</font><font color="#007700">.</font><font color="#dd0000">"&lt;/xmp&gt;"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;}else{ <br />&nbsp;&nbsp;&nbsp;</font><font color="#ff8000">//&nbsp;ok&nbsp;..&nbsp;resultado&nbsp;do&nbsp;servi&ccedil;o <br />&nbsp;&nbsp;&nbsp;</font><font color="#007700">echo&nbsp;</font><font color="#dd0000">"Benvindo&nbsp;ao&nbsp;sistema&nbsp;&lt;strong&gt;"</font><font color="#007700">.</font><font color="#0000bb">$rs</font><font color="#007700">.</font><font color="#dd0000">"&lt;/strong&gt;"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;} <br /></font><font color="#ff8000">//&nbsp;impede&nbsp;que&nbsp;o&nbsp;formul&aacute;rio&nbsp;seja&nbsp;visualizado <br /></font><font color="#007700">exit(); <br />} <br /> <br /></font><font color="#0000bb">?&gt; <br /></font> <br /> <br /><font color="#0000bb">&lt;?PHP <br />&nbsp;</font><font color="#ff8000">#&nbsp;Template&nbsp;de&nbsp;intera&ccedil;&atilde;o&nbsp;com&nbsp;o&nbsp;utilizador <br /></font><font color="#0000bb">?&gt; <br /></font>&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;Revista&nbsp;PHP&nbsp;::&nbsp;NuSoap&nbsp;case&nbsp;study&lt;/title&gt; <br />&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=iso-8859-1"&gt; <br />&lt;/head&gt; <br /> <br />&lt;body&gt; <br /><font color="#0000bb">&lt;?php&nbsp; <br /></font><font color="#ff8000">#&nbsp;PHP_SELF&nbsp;aponta&nbsp;para&nbsp;a&nbsp;p&aacute;gina&nbsp;actual&nbsp;ap&oacute;s&nbsp;clicar&nbsp;no&nbsp;bot&atilde;o <br /></font><font color="#0000bb">?&gt; <br /></font>&lt;form&nbsp;action="<font color="#0000bb">&lt;?php&nbsp;$_SERVER</font><font color="#007700">[</font><font color="#dd0000">'PHP_SELF'</font><font color="#007700">]</font><font color="#0000bb">?&gt;</font>"&nbsp;method="post"&gt; <br />&lt;label&nbsp;for="nome"&gt;Indique&nbsp;o&nbsp;nome&nbsp;de&nbsp;utilizador&lt;/label&gt;&lt;br&gt; <br />&lt;input&nbsp;type="text"&nbsp;name="nome"&nbsp;size="40"&gt;&lt;br&gt; <br />&lt;input&nbsp;type="submit"&nbsp;name="enviar"&nbsp;value="Login"&gt; <br />&lt;/form&gt; <br />&lt;/body&gt; <br />&lt;/html&gt;</font> </code> 
<br>
<h3>Resultado em caso de erro</h3>
<img src="img/soap_erro.jpg">

<h3>Sucesso no Web Service</h3>

Benvindo ao sistema <strong>Guto123</strong>]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Usando PRADO Framework para RAD em PHP5</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=35</link> 
	 <description><![CDATA[Neste artigo iremos apreender os objectivos a que se propõe a PRADO (PHP Rapid Application Development Object-oriented), como instalar e criar um pequeno exemplo, de forma a demonstrar a sua utilização.<br>
Mas antes de passarmos a essa parte vamos a uma breve apresentação.<br>
A PRADO é uma aplicação baseada em componentes e eventos (vulgarmente conhecida por Framework), para criar aplicativos Web a funcionar na plataforma PHP5, de forma a facilitar o processo de criação , aumentando a performance das aplicações recorrendo a técnicas de estrutura de dados avançadas.<br>
O objectivo desta Framework é a utilizar a programação orientada a objectos, assentando no RAD (Rapid Application Development), e no princípio MVC (modelagem, visão e controlo), numa arquitectura de camadas.<br>
Propõe-se a melhorar o desempenho das aplicações Web, nomeadamente em processos complexos, como no acesso a Base de Dados, operações sob ficheiros, e limitações impostas pela largura de banda.
Para aumentar este desempenho, a PRADO utiliza uma técnica comum neste tipo de Frameworks, que é o processo de caching , que guarda os templates e os reutiliza, caso estes sejam invocados em fases posteriores. Este processo é permitido pela activação do TTemplateManager, que permite além De outras funcionalidades, permitir carregar a página uma única vez.<br>
Uma das pretensões do criador da PRADO (Qiang Xue), é aproximar a criação de aplicações Web, aproximando o seu desenvolvimento do ASP.NET.<br>
Apesar da Framework ter sido criado com tecnologias e ferramentas pagas, como é o caso do Borland Delphi e ASP.NET, esta é distribuída de forma gratuita (sob licença BSD), em código aberto, numa distribuição com cerca de 17 Mb, que pode baixar  <a href="http://www.pradosoft.com/download/" target="_blank"> aquí </a> <br>
À data em que escrevia este artigo a PRADO está na versão v3.1.2 e conta entre muitas outras as seguintes funcionalidades<br>
Permite usar praticamente todo os conjunto de <br>Base de Dados 
<br>Web Services
<br>Transformações com XML
<br>Ajax
<br> Data Controls (TPanel, TDataGrid, TDataList …)<br>
Componentes para gestão de template (Form, Button,  Form, Validation  ...)<br>
Gestão automatizada de erros no código<br>
<br>
Um dos requisitos necessários é possuir a extensão SimpleXML, que vem de forma nativa juntamente com o PHP5.<br>
Após fazer o download, descomprima o conteúdo na raiz do seu servidor (www no caso do EasyPHP ou htdocs no caso do Apache)<br>
No meu caso optei por criar uma nova pasta “PRADO”, e descomprimi para lá toda a estrutura de directórios:<br>
<img src="img/prado_struc.jpg">
<br><br>
Este processo de instalação pode ser feito a partir da linha de comandos, por exemplo:
<br>
<strong>caminho/para/prado-cli.php –c olamundo </strong>no directório onde deseja criar o projecto olamundo.<br>

O módulo PRADO (o chamado PRADO core), necessário a ser carregado “prado.php”, encontra-se na pasta Framework.
Na pasta demos, existem alguns exemplos que convém editar e estudar.<br>
<br>
Surgem na PRADO dois novos conceitos para quem nunca trabalhou com Frameworks, as extensões *.spec  e *.tpl
O ficheiro com a extensão *.spec define as especificações da aplicação e o ficheiro com a extensão *.tpl (ou ainda *.page) contém o template (parte visual) da aplicação.
Nas aplicações criadas com PRADO, é obrigatório criar um ficheiro que conterá as especificações da aplicação, que conterá mencionado o caminho para o ficheiro da aplicação.
<br><br>
Isto pode parecer novo para quem programa apenas com PHP, mas quem desenvolve em ASP.NET, ser-lhe-á muito familiar.<br>
Junto com a distribuição existe uma pasta chamada demos e dentro dessa uma pasta helloworld, comece por analisar estrutura dessa aplicação.
Nos projectos que acompanham a distribuição reparará que é comum encontrar algumas pastas com o mesmo nome:<br>
<b>assets</b> – directório onde são guardadas os ficheiros privados para publicação. Este directório deve estar em modo de escrita para processos no servidor.<br>
<b>protected </b>– caminho por defeito onde é guardada a informação da aplicação. Este directório deve ser configurado de modo a ficar inacessível aos utilizadores finais<br>
<b>runtime </b>– pasta onde são guardados os dados de estado da aplicação, como estado, informação em cache… Este directório deve também possuir as permissões de escrita activas pelo servidor.<br>
<b>pages </b>– caminho para as páginas PRADO
<br><br>

Os ficheiros que definem o template da página, pode constituir mais uma novidades para programadores PHP, e aos quais os de ASP.NET já devem estar familiarizados.
Esre tipo de ficheiro utiliza um processo de rendering de alguns componentes, pelo que é muito mais rápido criar componentes HTML.
Veja por exemplo como criar um formulário standard
<br><br>
<code><font color="#000000"> &lt;form&nbsp;id="formulario"&nbsp;method="post"&nbsp;enctype="multipart/form-data"&gt;&lt;/form&gt;</font> </code>

<br><br>
<h3>Rendering :: primeiro contacto</h3>
Usando rendering em Prado , bastaria<br>
<code><font color="#000000"> &lt;com:TForm&nbsp;ID="formulario"&gt; <br />&lt;/com:TForm&gt;</font> </code>

<br>
Em que TForm é o Data Control que generaliza o formulário

<br>Vamos então proceder à criação dum projecto exemplo.
<br>Crie uma pasta "projecto" e dentro dela crie as pastas "assets" e "protected" , dentro desta crie as pastas "pages" e "runtime"
Agora observe o seguinte script , que será a página inicial, contudo ainda não está totalmente completo, pois ainda não definimos nada para a aplicação.
Guarde o código seguinte e salve como <b> index.php </b> na pasta projecto.
<br><br>

<code><font color="#000000"> <font color="#0000BB">&lt;?php <br /></font><font color="#FF8000">#caminho&nbsp;para&nbsp;a&nbsp;pasta&nbsp;do&nbsp;projecto <br /></font><font color="#0000BB">$CaminhoServidor&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">dirname</font><font color="#007700">(</font><font color="#0000BB">__FILE__</font><font color="#007700">); <br /> <br /></font><font color="#FF8000">#localização&nbsp;da&nbsp;framework&nbsp;Prado <br /></font><font color="#0000BB">$caminhoFramework&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">$CaminhoServidor</font><font color="#007700">.</font><font color="#DD0000">'/../../framework/prado.php'</font><font color="#007700">; <br /> <br /></font><font color="#FF8000">#&nbsp;directório&nbsp;que&nbsp;guarda&nbsp;as&nbsp;páginas&nbsp;privadas&nbsp;publicadas <br /></font><font color="#0000BB">$PagPublicadas&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">$CaminhoServidor</font><font color="#007700">.</font><font color="#DD0000">'/assets'</font><font color="#007700">; <br /> <br /> <br /></font><font color="#FF8000">#&nbsp;caminho&nbsp;onde&nbsp;são&nbsp;guardados&nbsp;os&nbsp;dados&nbsp;da&nbsp;aplicação&nbsp;e&nbsp; <br />#&nbsp;os&nbsp;ficheiros&nbsp;com&nbsp;código&nbsp;privado <br /></font><font color="#0000BB">$DadosAplicacao&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">$CaminhoServidor</font><font color="#007700">.</font><font color="#DD0000">'/protected/runtime'</font><font color="#007700">; <br /> <br /> <br /></font><font color="#FF8000">#fazendo&nbsp;validações&nbsp;à&nbsp;existência&nbsp;do&nbsp;ficheiro&nbsp;e&nbsp;permissões&nbsp;de&nbsp;escrita <br /> <br /></font><font color="#007700">if(!</font><font color="#0000BB">is_file</font><font color="#007700">(</font><font color="#0000BB">$caminhoFramework</font><font color="#007700">)){ <br />die(</font><font color="#DD0000">"A&nbsp;framework&nbsp;prado&nbsp;não&nbsp;foi&nbsp;encontrada&nbsp;em&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$caminhoFramework</font><font color="#007700">); <br />} <br /> <br />if(!</font><font color="#0000BB">is_dir</font><font color="#007700">(</font><font color="#0000BB">$PagPublicadas</font><font color="#007700">)){ <br />die(</font><font color="#DD0000">"Garanta&nbsp;as&nbsp;permissões&nbsp;de&nbsp;escrita&nbsp;para&nbsp;a&nbsp;pasta&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$PagPublicadas</font><font color="#007700">); <br />} <br /> <br />if(!</font><font color="#0000BB">is_writable</font><font color="#007700">(</font><font color="#0000BB">$DadosAplicacao</font><font color="#007700">)){ <br />die(</font><font color="#DD0000">"Garanta&nbsp;as&nbsp;permissões&nbsp;de&nbsp;escrita&nbsp;para&nbsp;a&nbsp;pasta&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$DadosAplicacao</font><font color="#007700">); <br />} <br /></font><font color="#FF8000">#carrega&nbsp;&nbsp;a&nbsp;framework <br /></font><font color="#007700">require_once(</font><font color="#0000BB">$caminhoFramework</font><font color="#007700">); <br /> <br /></font><font color="#FF8000">#instancia&nbsp;a&nbsp;aplicação <br /></font><font color="#0000BB">$Aplicacao</font><font color="#007700">=new&nbsp;</font><font color="#0000BB">TApplication</font><font color="#007700">; <br /></font><font color="#FF8000">#&nbsp;mostra&nbsp;o&nbsp;conteúdo&nbsp;da&nbsp;aplicação <br /></font><font color="#0000BB">$Aplicacao</font><font color="#007700">-&gt;</font><font color="#0000BB">run</font><font color="#007700">(); <br /> <br /></font><font color="#0000BB">?&gt;</font> </font> </code>

<br><br>
Para que possamos correr uma aplicação simples basta-nos definir o template da mesma e correr o script anterior.
É isso que vamos fazer a seguir .

<br><br>
O passo seguinte é criar a interface da aplicação, utilizando os seguintes Data Controls <br>
<b>TForm, TLabel, TTextBox, TButton</b>
<br>

<code><font color="#000000"> &lt;com:TForm&gt; <br />&lt;fieldset&gt; <br />&lt;legend&gt;Login&nbsp;no&nbsp;sistema&lt;/legend&gt; <br />&lt;div&nbsp;class="campo-utilizador"&gt; <br />&lt;com:TLabel&nbsp;ForControl="login"&nbsp;Text="Utilizador:"&nbsp;/&gt; <br />&lt;com:TTextBox&nbsp;ID="login"&nbsp;/&gt; <br />&lt;/div&gt; <br />&lt;div&nbsp;class="campo-password"&gt; <br />&lt;com:TLabel&nbsp;ForControl="password"&nbsp;Text="Password:"&nbsp;/&gt; <br />&lt;com:TTextBox&nbsp;ID="password"&nbsp;TextMode="Password"&nbsp;/&gt; <br />&lt;/div&gt; <br />&lt;div&nbsp;class="botao-login"&gt; <br />&lt;com:TButton&nbsp;Text="Login"&nbsp;OnClick="fazerLogin"&nbsp;/&gt; <br />&lt;/div&gt; <br />&lt;/fieldset&gt; <br />&lt;/com:TForm&gt;</font> </code>

<br>
Depois de criarmos a interface, guarda-se na pasta "pages" com e nomeia-se de <b>home.page</b>
Se correr o script index.php, reparará que essa interface já pode ser mostrada.
<br>
<h3>Fazer a ligação do botão</h3>

O que me deixou maravilhado nesta framework 
foi precisamente este facto tão simples  e prático de fazer a gestão de eventos.
A interface que define o formulário faz parte da  classe TPage assim para ligar o botão basta estender essa classe à classe HOME ,criando uma nova classe para fazer o tratamento dos dados que provêm do formulário.<br>Repare que o botão será ligado se na propriedade OnClick passar o nome da função onde os dados são tratados na nova classe.
<br>
Esta classe é guardada na pasta "pages", com o mesmo nome do ficheiro que define a interface neste caso Home.php
<br><br>

<code><font color="#000000"> <font color="#0000BB">&lt;?PHP <br /></font><font color="#FF8000">#&nbsp;permite&nbsp;aceder&nbsp;às&nbsp;propriedades&nbsp;dos&nbsp;Data&nbsp;Controls <br /></font><font color="#0000BB">Prado</font><font color="#007700">::</font><font color="#0000BB">using</font><font color="#007700">(</font><font color="#DD0000">'System.Web.UI.ActiveControls.*'</font><font color="#007700">); <br /> <br /></font><font color="#FF8000">#classe&nbsp;que&nbsp;permite&nbsp;tratar&nbsp;os&nbsp;dados&nbsp;do&nbsp;formulário <br /></font><font color="#007700">class&nbsp;</font><font color="#0000BB">Home&nbsp;</font><font color="#007700">extends&nbsp;</font><font color="#0000BB">TPage <br /></font><font color="#007700">{ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">#callback&nbsp;do&nbsp;botão&nbsp;login <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">public&nbsp;</font><font color="#007700">function&nbsp;</font><font color="#0000BB">fazerLogin</font><font color="#007700">(</font><font color="#0000BB">$sender</font><font color="#007700">,&nbsp;</font><font color="#0000BB">$param</font><font color="#007700">) <br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">#obtem&nbsp;os&nbsp;dados&nbsp;nos&nbsp;campos&nbsp;do&nbsp;formulário <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$login&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">$this</font><font color="#007700">-&gt;</font><font color="#0000BB">login</font><font color="#007700">-&gt;</font><font color="#0000BB">Text</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$pass&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">$this</font><font color="#007700">-&gt;</font><font color="#0000BB">password</font><font color="#007700">-&gt;</font><font color="#0000BB">Text</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">#&nbsp;mensagem&nbsp;output <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">echo&nbsp;</font><font color="#0000BB">htmlentities</font><font color="#007700">(</font><font color="#DD0000">"Olá&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$login</font><font color="#007700">.</font><font color="#DD0000">"&nbsp;,&nbsp;a&nbsp;sua&nbsp;password&nbsp;é&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$pass</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit; <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;} <br />} <br /></font><font color="#0000BB">?&gt;</font> </font> </code>
<br><br>
Noutra altura tratarei de ensinar como fazer a gestão dos dados numa Base de Dados e confrontar essas informações com os dados do formulário.




]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Compreenda como funciona o Ajax</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=37</link> 
	 <description><![CDATA[A definição de <strong>Ajax</strong> vem de Asynchronous Javascript + XML<br>
O principal componente, o XMLHttpRequest foi desenvolvido pela Microsoft 
para a versão do Internet Explorer 5 em 1997 , em forma de objecto ActiveX. <br>
Não é uma nova tecnologia, mas corresponde à integração de algumas tecnologias existentes:<br><br>
<ol>
<li>&nbsp;&nbsp;Javascript que compreende o XMLHttpRequest + Listener</li>
<li>&nbsp;&nbsp;DHTML e/ou DOM para actualização da interface (User Interface) com o utilizador </li>
<li>&nbsp;&nbsp;XML para formatar os dados enviados</li>
</ol>
<br><br>
A API XMLHttpRequest, compreende um conjunto de métodos responsáveis por vários métodos na construção de pedidos inerentes ao AJAX<br>
<h4>open ()</h4> – estabelece um novo pedido ao servidor<br> 
<h3>Parâmetros</h3>
open (tipo-pedido,url,async, utilizador , password)<br>
O tipo de pedido pode ser usado utilizando os métodos GET, POST …<br>
Por defeito async está activo (true)
<br>
<h4>send()</h4>  envia o pedido ao servidor<vr>
<h3>Parâmetros</h3>
send ( conteúdo-a-enviar)
conteúdo-a-enviar – corresponde à informação indicada através do método POST , ou nulo para GET (estes parâmetros são codificados na url) . Aqui pode entrar o Json posteriormente para fazer a descodificação dos dados.<br>
A  API comporta um conjunto de propriedades , que se utilizam para detectar o estado da informação a cada momento , visto que este tipo de funcionalidade é extremamente dinâmica.<br>
<h4>readyState</h4> – informa o estado actual do pedido . Devolve valores entre 0 (antes do método open())e 4 (completo , a resposta do servidor existe)
<br>
<h4>onreadestatechange</h4> – especiifca o método de chamada (callback)<br>
O método de callback é chamado sempre que estado pronto do http (correspondente ao pedido), varie.<br>

<h4>status</h4> : códigos de estado http (200 significa que correu tudo bem)
<br>
<h4>responseText</h4> – o servidor responde em formado de texto plano (Plain Text)<br>
<h4>responseXML </h4>– o servidor responde em formado XML (objecto)
<br><br>
Em seguida segue-se o esqueleto fundamental para possa utilizar o Ajax nas suas aplicações<br><br>
<code><font color="#000000"> <font color="#0000bb"><br /></font><font color="#007700">var&nbsp;</font><font color="#0000bb">pedido&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">null</font><font color="#007700">; <br /></font><font color="#0000bb">try&nbsp;</font><font color="#007700">{ <br /></font><font color="#ff8000">//&nbsp;habilita&nbsp;o&nbsp;javascript&nbsp;para&nbsp;pedidos&nbsp;HTTP&nbsp;assincronos <br />&nbsp;//tamb&eacute;m&nbsp;cobre&nbsp;vers&atilde;o&nbsp;Firefox,&nbsp;Opera&nbsp;,&nbsp;Safari <br />&nbsp;&nbsp;</font><font color="#0000bb">pedido&nbsp;</font><font color="#007700">=&nbsp;new&nbsp;</font><font color="#0000bb">XMLHttpRequest</font><font color="#007700">(); <br />}&nbsp;</font><font color="#0000bb">catch&nbsp;</font><font color="#007700">(</font><font color="#0000bb">trymicrosoft</font><font color="#007700">)&nbsp;{ <br />&nbsp;&nbsp;</font><font color="#0000bb">try&nbsp;</font><font color="#007700">{ <br />&nbsp;&nbsp;&nbsp;</font><font color="#ff8000">//&nbsp;vers&otilde;es&nbsp;novas&nbsp;do&nbsp;IE <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">pedido&nbsp;</font><font color="#007700">=&nbsp;new&nbsp;</font><font color="#0000bb">ActiveXObject</font><font color="#007700">(</font><font color="#dd0000">"Msxml2.XMLHTTP"</font><font color="#007700">); <br />&nbsp;&nbsp;}&nbsp;</font><font color="#0000bb">catch&nbsp;</font><font color="#007700">(</font><font color="#0000bb">othermicrosoft</font><font color="#007700">)&nbsp;{ <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">try&nbsp;</font><font color="#007700">{ <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#ff8000">//&nbsp;vers&otilde;es&nbsp;antigas&nbsp;do&nbsp;IE <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">pedido&nbsp;</font><font color="#007700">=&nbsp;new&nbsp;</font><font color="#0000bb">ActiveXObject</font><font color="#007700">(</font><font color="#dd0000">"Microsoft.XMLHTTP"</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><font color="#0000bb">catch&nbsp;</font><font color="#007700">(</font><font color="#0000bb">falha</font><font color="#007700">)&nbsp;{ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000bb">pedido&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000bb">null</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;} <br />&nbsp;&nbsp;} <br />} <br /> <br />if&nbsp;(</font><font color="#0000bb">pedido&nbsp;</font><font color="#007700">==&nbsp;</font><font color="#0000bb">null</font><font color="#007700">) <br />&nbsp;&nbsp;</font><font color="#0000bb">alert</font><font color="#007700">(</font><font color="#dd0000">"N&atilde;o&nbsp;foi&nbsp;poss&iacute;vel&nbsp;criar&nbsp;o&nbsp;objecto&nbsp;!"</font><font color="#007700">); <br /> <br /></font><font color="#0000bb"><br /></font> </font> </code> 
<br><br>
No código javascript que escrevermos , eis como temos acesso às propriedades:<br>
//verifica o estado de prontidão
<br>
if (pedido.readyState == 4) {
<br>
// faz alguma coisa
    <br>
//verifica o estado da requisição
<br>
if (pedido.status == 200) {
<br>
// faz alguma coisa ....]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Envio de ficheiros via FTP com PHP</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=38</link> 
	 <description><![CDATA[O FTP (do inglês File Transfer Portocol), que em português quer dizer Protocolo para Transferência de Ficheiros,  é baseado no protocolo TCP, mas surgiu antes do protocolo TCP/IP.<br>
É um protocolo independente do tipo de hardware ou do sistema operativo, e é utilizado para transferência de ficheiros, apenas sujado pelas restrições e propriedades de cada sistema ou aplicação.<br>
Tal como em outras operações que já vimos, como por exemplo os Web Services, a transferência de arquivos também envolve um cliente (o que solicita o pedido de transferência de dados), a par dum servidor (o que recebe o pedido para a transferência).
Neste artigo iremos verificar de forma prática a forma de seleccionar e processar o envio de ficheiros via FTP.<br><br>
Vulgarmente o FTP utiliza o porto 21 como canal de comunicação.
Se num dado servidor existirem restrições, é necessários que saibamos as credenciais de acesso, de forma a processar o serviço.
O acesso a servidores via FTP pode ser feito de duas formas distintas, ou através de interface (que é o objectivo deste artigo), ou por meio de linha de comandos, que constitui um processo mais complexo de realizar esta tarefa.<br>
Segue-se o código fonte que permite processar o envio de ficheiros via FTP, programado através de funções disponíveis no PHP , para esta tarefa.<br><br>


<code><font color="#000000"> <font color="#0000BB">&lt;?php <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">/************************************** <br />&nbsp;&nbsp;&nbsp;&nbsp;Autor&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;José&nbsp;Franco <br />&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;26&nbsp;Abril&nbsp;2008 <br />&nbsp;&nbsp;&nbsp;&nbsp;Lisenca&nbsp;&nbsp;:&nbsp;Creative&nbsp;Commons&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;Distro&nbsp;&nbsp;&nbsp;:&nbsp;FTP&nbsp;no&nbsp;PHP <br />&nbsp;&nbsp;&nbsp;&nbsp;***************************************/ <br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;definição&nbsp;do&nbsp;modo&nbsp;passivo <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">define</font><font color="#007700">(</font><font color="#DD0000">"PASV"</font><font color="#007700">,</font><font color="#0000BB">true</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;define&nbsp;o&nbsp;tempo&nbsp;de&nbsp;30&nbsp;seg&nbsp;para&nbsp;processameto&nbsp;da&nbsp;aplicação <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">set_time_limit</font><font color="#007700">(</font><font color="#0000BB">0</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$Utilizador&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#DD0000">"utilizador"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$Password&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#DD0000">"password"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$Servidor&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#DD0000">"ftp.o-seu-site.com"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$Caminho&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#DD0000">"/httpdocs"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$Porto&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">21</font><font color="#007700">; <br /> <br />if(isset(</font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">"upload"</font><font color="#007700">])): <br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;ligação&nbsp;ao&nbsp;endereço&nbsp;FTP <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$conn&nbsp;</font><font color="#007700">=&nbsp;@</font><font color="#0000BB">ftp_connect</font><font color="#007700">(</font><font color="#0000BB">$Servidor</font><font color="#007700">,</font><font color="#0000BB">$Porto</font><font color="#007700">)&nbsp;or&nbsp;die(</font><font color="#DD0000">"Erro&nbsp;de&nbsp;ligação&nbsp;ao&nbsp;servidor&nbsp;FTP&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$Servidor</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">ftp_pasv</font><font color="#007700">(</font><font color="#0000BB">$conn</font><font color="#007700">,</font><font color="#0000BB">true</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;processo&nbsp;de&nbsp;login <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">ftp_login</font><font color="#007700">(</font><font color="#0000BB">$conn</font><font color="#007700">,&nbsp;</font><font color="#0000BB">$Utilizador</font><font color="#007700">,&nbsp;</font><font color="#0000BB">$Password</font><font color="#007700">)&nbsp;or&nbsp;die&nbsp;(</font><font color="#DD0000">"Erro&nbsp;a&nbsp;processar&nbsp;&nbsp;o&nbsp;login&nbsp;no&nbsp;endereço&nbsp;FTP"</font><font color="#007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;caminho&nbsp;relativo&nbsp;para&nbsp;o&nbsp;ficheiro&nbsp;a&nbsp;ser&nbsp;envaido <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$ficheiro&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">dirname</font><font color="#007700">(</font><font color="#0000BB">$Caminho</font><font color="#007700">.</font><font color="#0000BB">$_FILES</font><font color="#007700">[</font><font color="#DD0000">'ftp_file'</font><font color="#007700">][</font><font color="#DD0000">'name'</font><font color="#007700">]); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;localização&nbsp;do&nbsp;upload&nbsp;&nbsp;local <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$tmpFich&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">$_FILES</font><font color="#007700">[</font><font color="#DD0000">'ftp_file'</font><font color="#007700">][</font><font color="#DD0000">'tmp_name'</font><font color="#007700">]; <br /> <br /></font><font color="#FF8000">//&nbsp;processa&nbsp;&nbsp;o&nbsp;upload&nbsp;via&nbsp;frp <br /></font><font color="#007700">if(@</font><font color="#0000BB">ftp_put</font><font color="#007700">(</font><font color="#0000BB">$conn</font><font color="#007700">,</font><font color="#0000BB">$ficheiro</font><font color="#007700">,</font><font color="#0000BB">$tmpFich</font><font color="#007700">,</font><font color="#0000BB">FTP_BINARY</font><font color="#007700">){ <br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</font><font color="#DD0000">"O&nbsp;ficheiro&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$_FILES</font><font color="#007700">[</font><font color="#DD0000">'ftp_file'</font><font color="#007700">][</font><font color="#DD0000">'name'</font><font color="#007700">].&nbsp;</font><font color="#DD0000">"&nbsp;foi&nbsp;enviado&nbsp;sem&nbsp;erros"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;}else{ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</font><font color="#DD0000">"Erro&nbsp;na&nbsp;tentativa&nbsp;de&nbsp;&nbsp;envio&nbsp;do&nbsp;ficheiro&nbsp;via&nbsp;FTP"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;fecha&nbsp;&nbsp;a&nbsp;ligação&nbsp;ao&nbsp;servidor <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">ftp_quit</font><font color="#007700">(</font><font color="#0000BB">$conn</font><font color="#007700">); <br /> <br /></font><font color="#0000BB">?&gt; <br />&lt;?php <br /></font><font color="#007700">else: <br /></font><font color="#0000BB">?&gt; <br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form&nbsp;action="<font color="#0000BB">&lt;?php&nbsp;$_SERVER</font><font color="#007700">[</font><font color="#DD0000">'PHP_SELF'</font><font color="#007700">];</font><font color="#0000BB">?&gt;</font>"&nbsp;method="post"&nbsp;enctype="multipart/form-data"&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type="file"&nbsp;name="ftp_file"&nbsp;size="40"&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;hr&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type="submit"&nbsp;name="upload"&nbsp;value="Enviar"&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/form&gt; <br /> <br /><font color="#0000BB">&lt;?php <br /></font><font color="#007700">endif; <br /></font><font color="#0000BB">?&gt;</font> </font> </code>
]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Formatar / mostrar a data em português</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=39</link> 
	 <description><![CDATA[Neste artigo irei demonstrar como, uma forma muito simples de converter datas no PHP , e escrevê-las totalmente em português.
Para isso vamos recorrer ao uso da função <b>date()</b> cuja sintaxe de utilização é :<br>
<strong>String date(formato, data_ts)</strong>
<br> em que data_ts é um parâmetro opcional e se informado utiliza a data no formato timestamp<br>
Para a conversão da data em português podemos utilizar o seguinte script<br>


<code><font color="#000000"> &nbsp;<font color="#0000BB">&lt;?php <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">/************************************** <br />&nbsp;&nbsp;&nbsp;&nbsp;Autor&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;José&nbsp;Franco <br />&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;26&nbsp;Abril&nbsp;2008 <br />&nbsp;&nbsp;&nbsp;&nbsp;Lisenca&nbsp;&nbsp;:&nbsp;Creative&nbsp;Commons&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;Distro&nbsp;&nbsp;&nbsp;:&nbsp;Datas&nbsp;em&nbsp;português&nbsp;no&nbsp;PHP <br />&nbsp;&nbsp;&nbsp;&nbsp;***************************************/ <br /> <br />&nbsp;//&nbsp;obter&nbsp;o&nbsp;ano <br />&nbsp;</font><font color="#0000BB">$ano&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">date</font><font color="#007700">(</font><font color="#DD0000">"Y"</font><font color="#007700">); <br />&nbsp;</font><font color="#FF8000">//&nbsp;dia&nbsp;do&nbsp;mês&nbsp;em&nbsp;inglês <br />&nbsp;</font><font color="#0000BB">$mes&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">date</font><font color="#007700">(</font><font color="#DD0000">"M"</font><font color="#007700">); <br />&nbsp;</font><font color="#FF8000">//&nbsp;numero&nbsp;do&nbsp;dia <br />&nbsp;</font><font color="#0000BB">$dia&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">date</font><font color="#007700">(</font><font color="#DD0000">"d"</font><font color="#007700">); <br />&nbsp;</font><font color="#FF8000">//&nbsp;dia&nbsp;da&nbsp;semana&nbsp;em&nbsp;inglês&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /></font><font color="#0000BB">$ndia&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">date</font><font color="#007700">(</font><font color="#DD0000">"D"</font><font color="#007700">); <br />&nbsp;</font><font color="#FF8000">//&nbsp;array&nbsp;&nbsp;para&nbsp;&nbsp;a&nbsp;converção&nbsp;dos&nbsp;dias&nbsp;da&nbsp;semana <br />&nbsp;</font><font color="#0000BB">$ptDia&nbsp;</font><font color="#007700">=array(</font><font color="#DD0000">"Mon"&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Segunda-feira"</font><font color="#007700">,&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Tue"&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Terça-feira"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Wed"&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Quarta-feira"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Thu"&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Quinta-feira"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Fri"&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Sexta-feira"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Sat"&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Sábado"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Sun"&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Domingo"</font><font color="#007700">); <br />&nbsp;</font><font color="#FF8000">//&nbsp;array&nbsp;&nbsp;para&nbsp;&nbsp;a&nbsp;converção&nbsp;dos&nbsp;meses&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;</font><font color="#0000BB">$ptMes&nbsp;</font><font color="#007700">=&nbsp;array(</font><font color="#DD0000">"Jan"&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Janeiro"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Feb"&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Fevereiro"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Mar"&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Março"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Apr"&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Abril"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"May"&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Maio"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Jun"&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Junho"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Jul"&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Julho"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Aug"&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Agosto"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Sep"&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Setembro"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Oct"&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Outubro"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Nov"&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Novembro"</font><font color="#007700">, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#DD0000">"Dec"&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&gt;&nbsp;</font><font color="#DD0000">"Dezembro"</font><font color="#007700">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /> <br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;echo&nbsp;</font><font color="#DD0000">"Hoje&nbsp;é&nbsp;&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$ptDia</font><font color="#007700">[</font><font color="#0000BB">$ndia</font><font color="#007700">].</font><font color="#DD0000">"&nbsp;,&nbsp;dia&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$dia</font><font color="#007700">.</font><font color="#DD0000">"&nbsp;de&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$ptMes</font><font color="#007700">[</font><font color="#0000BB">$mes</font><font color="#007700">].</font><font color="#DD0000">"&nbsp;de&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$ano</font><font color="#007700">; <br /> <br /></font><font color="#0000BB">?&gt;</font> </font> </code>
]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Operações com espaço em disco no PHP</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=40</link> 
	 <description><![CDATA[Muitas vezes torna-se necessário fazer operações com o disco ou directórios. O seguinte script permite obter o espaço livre em disco, espaço usado, e espaço total disponível.
<br> Para isso recorri às funções nativas do PHP, disk_free_space e disk_total_space, com base na diferença entre os dois é então possível obter o espaço usado.
<br><br>

<code><font color="#000000"> &nbsp;<font color="#0000BB">&lt;?php <br />&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">/************************************** <br />&nbsp;&nbsp;&nbsp;&nbsp;Autor&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;José&nbsp;Franco <br />&nbsp;&nbsp;&nbsp;&nbsp;Data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;26&nbsp;Abril&nbsp;2008 <br />&nbsp;&nbsp;&nbsp;&nbsp;Lisenca&nbsp;&nbsp;:&nbsp;Creative&nbsp;Commons&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;Distro&nbsp;&nbsp;&nbsp;:&nbsp;Operações&nbsp;com&nbsp;espaço&nbsp;em&nbsp;disco <br />&nbsp;&nbsp;&nbsp;&nbsp;***************************************/ <br />&nbsp;&nbsp; <br />&nbsp;&nbsp;//&nbsp;valor&nbsp;unitario&nbsp;(bytes)&nbsp;de&nbsp;1&nbsp;kb <br />&nbsp;&nbsp;</font><font color="#0000BB">$kb&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">1024</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;valor&nbsp;unitario&nbsp;(bytes)de&nbsp;1&nbsp;Mb <br />&nbsp;&nbsp;</font><font color="#0000BB">$mb&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">pow</font><font color="#007700">(</font><font color="#0000BB">$kb</font><font color="#007700">,</font><font color="#0000BB">2</font><font color="#007700">); <br />&nbsp;&nbsp;</font><font color="#FF8000">//&nbsp;valor&nbsp;unitario&nbsp;(bytes)de&nbsp;1&nbsp;Gb <br />&nbsp;&nbsp;</font><font color="#0000BB">$gb&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">pow</font><font color="#007700">(</font><font color="#0000BB">$kb</font><font color="#007700">,</font><font color="#0000BB">3</font><font color="#007700">); <br />&nbsp;&nbsp;</font><font color="#0000BB">$Disco&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#DD0000">"D:"</font><font color="#007700">; <br />&nbsp;&nbsp; <br />&nbsp;</font><font color="#0000BB">$EspOnDisco&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">disk_free_space</font><font color="#007700">(</font><font color="#0000BB">$Disco</font><font color="#007700">); <br /> <br />&nbsp;echo&nbsp;</font><font color="#DD0000">"&lt;h4&gt;"</font><font color="#007700">.&nbsp;(</font><font color="#0000BB">$EspOnDisco&nbsp;</font><font color="#007700">&lt;&nbsp;</font><font color="#0000BB">$kb&nbsp; <br /></font><font color="#007700">?&nbsp;&nbsp;</font><font color="#DD0000">"Espaço&nbsp;Livre&nbsp;"&nbsp;</font><font color="#007700">.&nbsp;</font><font color="#0000BB">$EspOnDisco</font><font color="#007700">.</font><font color="#DD0000">"&nbsp;Bytes"&nbsp;</font><font color="#007700">:&nbsp;(</font><font color="#0000BB">$EspOnDisco&nbsp;</font><font color="#007700">&lt;&nbsp;</font><font color="#0000BB">$mb&nbsp; <br /></font><font color="#007700">?&nbsp;&nbsp;</font><font color="#DD0000">"Espaço&nbsp;Livre&nbsp;"&nbsp;</font><font color="#007700">.</font><font color="#0000BB">round</font><font color="#007700">(</font><font color="#0000BB">$EspOnDisco</font><font color="#007700">/</font><font color="#0000BB">$kb</font><font color="#007700">,</font><font color="#0000BB">2</font><font color="#007700">).</font><font color="#DD0000">"&nbsp;KBytes"&nbsp;</font><font color="#007700">:&nbsp;(</font><font color="#0000BB">$EspOnDisco&nbsp;</font><font color="#007700">&lt;&nbsp;</font><font color="#0000BB">$gb <br /></font><font color="#007700">?&nbsp;&nbsp;</font><font color="#DD0000">"Espaço&nbsp;Livre&nbsp;"&nbsp;</font><font color="#007700">.</font><font color="#0000BB">round</font><font color="#007700">(</font><font color="#0000BB">$EspOnDisco</font><font color="#007700">/</font><font color="#0000BB">$mb</font><font color="#007700">,</font><font color="#0000BB">2</font><font color="#007700">).</font><font color="#DD0000">"&nbsp;MBytes"&nbsp; <br /></font><font color="#007700">:&nbsp;(</font><font color="#DD0000">"Espaço&nbsp;Livre&nbsp;"&nbsp;</font><font color="#007700">.</font><font color="#0000BB">round</font><font color="#007700">(</font><font color="#0000BB">$EspOnDisco</font><font color="#007700">/</font><font color="#0000BB">$gb</font><font color="#007700">,</font><font color="#0000BB">2</font><font color="#007700">).</font><font color="#DD0000">"&nbsp;GBytes"</font><font color="#007700">)))).</font><font color="#DD0000">"&lt;/h4&gt;"</font><font color="#007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /></font><font color="#0000BB">$TotalOnDisco&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">disk_total_space</font><font color="#007700">(</font><font color="#0000BB">$Disco</font><font color="#007700">); <br /> <br />&nbsp;echo&nbsp;</font><font color="#DD0000">"&lt;h4&gt;"</font><font color="#007700">.(</font><font color="#0000BB">$TotalOnDisco&nbsp;</font><font color="#007700">&lt;&nbsp;</font><font color="#0000BB">$kb&nbsp; <br /></font><font color="#007700">?&nbsp;&nbsp;</font><font color="#DD0000">"Espaço&nbsp;Total&nbsp;em&nbsp;disco&nbsp;"&nbsp;</font><font color="#007700">.&nbsp;</font><font color="#0000BB">$TotalOnDisco</font><font color="#007700">.</font><font color="#DD0000">"&nbsp;Bytes"&nbsp;</font><font color="#007700">:&nbsp;(</font><font color="#0000BB">$TotalOnDisco&nbsp;</font><font color="#007700">&lt;&nbsp;</font><font color="#0000BB">$mb&nbsp; <br /></font><font color="#007700">?&nbsp;&nbsp;</font><font color="#DD0000">"Espaço&nbsp;Total&nbsp;em&nbsp;disco&nbsp;"&nbsp;</font><font color="#007700">.</font><font color="#0000BB">round</font><font color="#007700">(</font><font color="#0000BB">$TotalOnDisco</font><font color="#007700">/</font><font color="#0000BB">$kb</font><font color="#007700">,</font><font color="#0000BB">2</font><font color="#007700">).</font><font color="#DD0000">"&nbsp;KBytes"&nbsp;</font><font color="#007700">:&nbsp;(</font><font color="#0000BB">$TotalOnDisco&nbsp;</font><font color="#007700">&lt;&nbsp;</font><font color="#0000BB">$gb <br /></font><font color="#007700">?&nbsp;&nbsp;</font><font color="#DD0000">"Espaço&nbsp;Total&nbsp;em&nbsp;disco&nbsp;"&nbsp;</font><font color="#007700">.</font><font color="#0000BB">round</font><font color="#007700">(</font><font color="#0000BB">$TotalOnDisco</font><font color="#007700">/</font><font color="#0000BB">$mb</font><font color="#007700">,</font><font color="#0000BB">2</font><font color="#007700">).</font><font color="#DD0000">"&nbsp;MBytes"&nbsp; <br /></font><font color="#007700">:&nbsp;(</font><font color="#DD0000">"Espaço&nbsp;Total&nbsp;em&nbsp;disco&nbsp;"&nbsp;</font><font color="#007700">.</font><font color="#0000BB">round</font><font color="#007700">(</font><font color="#0000BB">$TotalOnDisco</font><font color="#007700">/</font><font color="#0000BB">$gb</font><font color="#007700">,</font><font color="#0000BB">2</font><font color="#007700">).</font><font color="#DD0000">"&nbsp;GBytes"</font><font color="#007700">)))).</font><font color="#DD0000">"&lt;/h4&gt;"</font><font color="#007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /></font><font color="#0000BB">$EspacoUsado&nbsp;</font><font color="#007700">=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$TotalOnDisco&nbsp;</font><font color="#007700">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">$EspOnDisco</font><font color="#007700">; <br /> <br />&nbsp;echo&nbsp;</font><font color="#DD0000">"&lt;h4&gt;"</font><font color="#007700">.(</font><font color="#0000BB">$EspacoUsado&nbsp;</font><font color="#007700">&lt;&nbsp;</font><font color="#0000BB">$kb&nbsp; <br /></font><font color="#007700">?&nbsp;&nbsp;</font><font color="#DD0000">"Espaço&nbsp;usado&nbsp;em&nbsp;disco&nbsp;"&nbsp;</font><font color="#007700">.&nbsp;</font><font color="#0000BB">$EspacoUsado</font><font color="#007700">.</font><font color="#DD0000">"&nbsp;Bytes"&nbsp;</font><font color="#007700">:&nbsp;(</font><font color="#0000BB">$EspacoUsado&nbsp;</font><font color="#007700">&lt;&nbsp;</font><font color="#0000BB">$mb&nbsp; <br /></font><font color="#007700">?&nbsp;&nbsp;</font><font color="#DD0000">"Espaço&nbsp;usado&nbsp;em&nbsp;disco&nbsp;"&nbsp;</font><font color="#007700">.</font><font color="#0000BB">round</font><font color="#007700">(</font><font color="#0000BB">$EspacoUsado</font><font color="#007700">/</font><font color="#0000BB">$kb</font><font color="#007700">,</font><font color="#0000BB">2</font><font color="#007700">).</font><font color="#DD0000">"&nbsp;KBytes"&nbsp;</font><font color="#007700">:&nbsp;(</font><font color="#0000BB">$EspacoUsado&nbsp;</font><font color="#007700">&lt;&nbsp;</font><font color="#0000BB">$gb <br /></font><font color="#007700">?&nbsp;&nbsp;</font><font color="#DD0000">"Espaço&nbsp;usado&nbsp;em&nbsp;disco&nbsp;"&nbsp;</font><font color="#007700">.</font><font color="#0000BB">round</font><font color="#007700">(</font><font color="#0000BB">$EspacoUsado</font><font color="#007700">/</font><font color="#0000BB">$mb</font><font color="#007700">,</font><font color="#0000BB">2</font><font color="#007700">).</font><font color="#DD0000">"&nbsp;MBytes"&nbsp; <br /></font><font color="#007700">:&nbsp;(</font><font color="#DD0000">"Espaço&nbsp;usado&nbsp;em&nbsp;disco&nbsp;"&nbsp;</font><font color="#007700">.</font><font color="#0000BB">round</font><font color="#007700">(</font><font color="#0000BB">$EspacoUsado</font><font color="#007700">/</font><font color="#0000BB">$gb</font><font color="#007700">,</font><font color="#0000BB">2</font><font color="#007700">).</font><font color="#DD0000">"&nbsp;GBytes"</font><font color="#007700">)))).</font><font color="#DD0000">"&lt;/h4&gt;"</font><font color="#007700">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /> <br /> <br /></font><font color="#0000BB">?&gt;</font> </font> </code>
<br>
<img src="img/opr_disco.jpg">

]]></description> 
	 <lastBuildDate></lastBuildDate>
     </item><item> 
	 <title>Processar dados com Ajax e PHP</title> 
	 <link>http://www.revista-php.net/artigos.php?pagina=41</link> 
	 <description><![CDATA[Neste artigo vou criar um pequeno exemplo com Ajax e PHP , que exemplifica de forma simples a integração e o funcionamento desta funcionalidade, tão comum em aplicações designadas Web 2.0.<br>
O objectivo deste artigo é complementar a teoria do artigo que escrevi antes <h3>"Compreenda como funciona o Ajax"</h3> disponível <a href="http://www.revista-php.net/artigos.php?pagina=37">  aqui </a>, o qual deverá ler com bastante atenção de forma  a compreender o que foi aqui feito.<br>
Muitos programadores optam por chamar a livraria Ajax , a partir dum ficheiro *.js. No meu caso como a livraria é muito reduzida optei por  por incluí-la na página , onde o pedido é solicitado.
<br>
Basicamente o processo é muito simples a página "ajax.php" contém a interface  e o processamento 