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

<channel>
	<title>Leandro Vieira Pinho´s Blog &#187; php</title>
	<atom:link href="http://leandrovieira.com/tags/php/feed" rel="self" type="application/rss+xml" />
	<link>http://leandrovieira.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 17 May 2010 18:08:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Curso de Desenvolvimento de plugins para WordPress</title>
		<link>http://leandrovieira.com/archive/curso-de-desenvolvimento-de-plugins-para-wordpress</link>
		<comments>http://leandrovieira.com/archive/curso-de-desenvolvimento-de-plugins-para-wordpress#comments</comments>
		<pubDate>Mon, 08 Mar 2010 14:44:44 +0000</pubDate>
		<dc:creator>Leandro Vieira</dc:creator>
				<category><![CDATA[cursos]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://leandrovieira.com/?p=264</guid>
		<description><![CDATA[As inscrições para o curso de Desenvolvimento de plugins para WordPress estão abertas e  a sua espera. O treinamento vai mostrar a utilidade e o desenvolvimento de Plugins WordPress, visando desmitificar a criação e modificação deles. Durante as aulas, serão apresentadas práticas inteligentes, métodos de desenvolvimento, e a utilização de JavaScript, Ajax e CSS. Ao [...]]]></description>
			<content:encoded><![CDATA[<p>As inscrições para o <a title="Curso de Desenvolvimento de plugins para WordPress" href="http://pro.imasters.uol.com.br/distancia/cursos/desenvolvimento-de-plugins-para-wordpress/">curso de Desenvolvimento de plugins para WordPress</a> estão abertas e  a sua espera.</p>
<p>O treinamento vai mostrar a utilidade e o desenvolvimento de Plugins  WordPress, visando desmitificar a criação e modificação deles. Durante  as aulas, serão apresentadas práticas inteligentes, métodos de  desenvolvimento, e a utilização de JavaScript, Ajax e CSS. Ao fim do  curso, os alunos estarão aptos a criar e modificar plugins WordPress  existentes no mercado.</p>
<p>Indicado para Designers e Desenvolvedores para internet que adotam o WordPress como  sua plataforma de gerenciamento de conteúdo e blog. E indicado, também,  àqueles que deixam estender as possibilidades do WordPress em seu  dia-a-dia.</p>
<p>O curso tem um total de <strong>15 horas</strong>, sendo elas divididas  em aulas de 1h30min.</p>
<p>Conteúdo programático do curso</p>
<ol>
<li>O que é plugin WordPress?</li>
<li>Devo realmente criar um plugin WordPress?</li>
<li>O que você precisa para criar um plugin WordPress?</li>
<li>Estrutura de um plugin WordPress</li>
<li>Como instalar um plugin WordPress</li>
<li>Plugin API
<ol>
<li>Ações “Actions”</li>
<li>Filtros “Filters”</li>
</ol>
</li>
<li>Tag de template “Template tags”</li>
<li>Criando menus e páginas administrativas</li>
<li>Armazenamento de dados
<ol>
<li>Opções “Options”</li>
<li>Trabalhando com banco de dados</li>
</ol>
</li>
<li>Shortcode</li>
<li>Utilizando JavaScript em plugins</li>
<li>Plugins e Ajax</li>
<li>Utillzando CSS em plugins</li>
<li>Internacionalização</li>
<li>Widgets</li>
<li>Como publicar um plugin no diretório do WordPress.org</li>
<li>Boas práticas</li>
<li>Referências</li>
<li>Projeto final</li>
</ol>
<p>Faça sua inscrição para o <a title="Curso de Desenvolvimento de plugins para WordPress" href="http://pro.imasters.uol.com.br/distancia/cursos/desenvolvimento-de-plugins-para-wordpress/">curso  de Desenvolvimento de plugins para WordPress</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrovieira.com/archive/curso-de-desenvolvimento-de-plugins-para-wordpress/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2º encontro do PHP MG</title>
		<link>http://leandrovieira.com/archive/2%c2%ba-encontro-do-php-mg</link>
		<comments>http://leandrovieira.com/archive/2%c2%ba-encontro-do-php-mg#comments</comments>
		<pubDate>Mon, 24 Aug 2009 11:39:52 +0000</pubDate>
		<dc:creator>Leandro Vieira</dc:creator>
				<category><![CDATA[evento]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://leandrovieira.com/?p=230</guid>
		<description><![CDATA[O 2º encontro do PHP MG acontecerá Uni-BH em Belo Horizonte e contará com mini-cursos e palestras sobre uma das linguagens mais popular do mundo. Conheça o site do evento com mais detahes e saiba como foi a edição anterior.]]></description>
			<content:encoded><![CDATA[<p>O 2º encontro do PHP MG acontecerá <a href="http://www.unibh.br/">Uni-BH</a> em Belo Horizonte e contará com mini-cursos e palestras sobre uma das linguagens mais popular do mundo.</p>
<p>Conheça o <a href="http://www.phpmg.com/2-encontro-do-php-mg">site do evento com mais detahes</a> e saiba <a href="http://www.phpmg.com/1-encontro-do-php-mg">como foi a edição anterior</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrovieira.com/archive/2%c2%ba-encontro-do-php-mg/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vagas para jobs de desenvolvimento web para freelancers e fixos</title>
		<link>http://leandrovieira.com/archive/vagas-para-jobs-de-desenvolvimento-web-para-freelancers-e-fixos</link>
		<comments>http://leandrovieira.com/archive/vagas-para-jobs-de-desenvolvimento-web-para-freelancers-e-fixos#comments</comments>
		<pubDate>Fri, 06 Feb 2009 10:47:54 +0000</pubDate>
		<dc:creator>Leandro Vieira</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://leandrovieira.com/?p=202</guid>
		<description><![CDATA[Olá, A Apiki, empresa onde sou Diretor e Gerente de projetos, está contratando desenvolvedores web. Estamos localizados em Governador Valadares, Minas Gerais. Terra quente e de muuuita mulher bonita. Capital mundial de vôo livre. Procuramos por profissionais entusiastas, com disposição, comprometidos e com muita vontade de aprender e compartilhar conhecimentos. A vaga exige conhecimento comprovado [...]]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>A <a href="http://www.apiki.com/">Apiki</a>, empresa onde sou Diretor e Gerente de projetos, está contratando desenvolvedores web. Estamos localizados em Governador Valadares, Minas Gerais. Terra quente e de muuuita mulher bonita. Capital mundial de vôo livre.</p>
<p>Procuramos por profissionais entusiastas, com disposição, comprometidos e com muita vontade de aprender e compartilhar conhecimentos.</p>
<p>A vaga exige conhecimento comprovado em <a href="http://www.php.net/">PHP</a> e melhor ainda se dominar o desenvolvimento de plugins para <a href="http://www.wordpress.org/">WordPress</a> e conhecimento sobre o <a href="http://framework.zend.com/">Zend Framework</a>.</p>
<p>Mas se você não dominar esses dois últimos, fiquei tranquilo, estou disposto a compartilhar conhecimentos, como sempre.</p>
<p>Os interessados deverão enviar seus CV para leandro [arroba] apiki [ponto] com e junto a pretensão salarial. Se o interesse for para atuar como freelancer também.</p>
<p>Abraços.</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrovieira.com/archive/vagas-para-jobs-de-desenvolvimento-web-para-freelancers-e-fixos/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>28 de janeiro</title>
		<link>http://leandrovieira.com/archive/28-de-janeiro</link>
		<comments>http://leandrovieira.com/archive/28-de-janeiro#comments</comments>
		<pubDate>Thu, 29 Jan 2009 10:57:37 +0000</pubDate>
		<dc:creator>Leandro Vieira</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://leandrovieira.com/?p=197</guid>
		<description><![CDATA[Matt Mullenweg, desenvolvedor PHP que fundou a plataforma de blog WordPress, declarou o dia 28 de Janeiro como o dia de obrigado aos desenvolvedores de plugin WordPress. Obrigado Matt pelos parabéns. O diretório de plugins do WordPress já contabiliza mais de 4.000 opções para você adicionar recursos  e melhorias ao seu blog/site através de plugins. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ma.tt/">Matt Mullenweg</a>, desenvolvedor PHP que fundou a plataforma de blog <a href="http://wordpress.org/">WordPress</a>, declarou o dia <a href="http://wordpress.org/development/2009/01/thank-a-plugin-developer-day/">28 de Janeiro como o dia de obrigado aos desenvolvedores de plugin WordPress</a>. Obrigado Matt pelos parabéns.</p>
<p>O <a href="http://wordpress.org/extend/plugins/">diretório de plugins do WordPress</a> já contabiliza mais de 4.000 opções para você adicionar recursos  e melhorias ao seu blog/site através de plugins.</p>
<p>28 de janeiro &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrovieira.com/archive/28-de-janeiro/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Função PHP para remover &#8220;keys&#8221; de um Array</title>
		<link>http://leandrovieira.com/archive/funcao-php-para-remover-keys-de-um-array</link>
		<comments>http://leandrovieira.com/archive/funcao-php-para-remover-keys-de-um-array#comments</comments>
		<pubDate>Sat, 26 Jan 2008 18:29:12 +0000</pubDate>
		<dc:creator>Leandro Vieira</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[unset]]></category>

		<guid isPermaLink="false">http://leandrovieira.com/archive/funcao-php-para-remover-keys-de-um-array</guid>
		<description><![CDATA[Acabei de criar um função em PHP para remover &#8220;keys&#8221; de um Array. Considere o array abaixo: $array = array ( 'nome' =&#62; 'Leandro', 'sobrenome' =&#62; 'Vieira Pinho', 'email' =&#62; 'spam@efoda.com' ); E considere também que você deseja excluir a key &#8220;email&#8221;, por exemplo. Portanto, o procedimento seria o seguinte: unset( $array['email'] ); Logo, a [...]]]></description>
			<content:encoded><![CDATA[<p>Acabei de criar um <strong>função em PHP para remover &#8220;keys&#8221; de um Array</strong>.</p>
<p>Considere o array abaixo:</p>
<pre>$array = array (

'nome' =&gt; 'Leandro',

'sobrenome' =&gt; 'Vieira Pinho',

'email' =&gt; 'spam@efoda.com'

);</pre>
<p>E considere também que você deseja excluir a key &#8220;email&#8221;, por exemplo. Portanto, o procedimento seria o seguinte:</p>
<pre>unset( $array['email'] );</pre>
<p>Logo, a estrutura do Array se modificaria com a ação executada. Resultando em:</p>
<pre>$array = array (

'nome' =&gt; 'Leandro',

'sobrenome' =&gt; 'Vieira Pinho'

);</pre>
<p>Quando houver necessidade de remover várias &#8220;keys&#8221; de um Array, utilizaremos várias vezes a função <a href="http://php.net/unset">unset</a> como exemplificado acima. Para simplificar meu trabalho, criei uma função intitulada como <strong>remove_key_from_array</strong>. Nela utilizo a função <a href="http://php.net/unset">unset</a> quantas vezes for necessário para remover as &#8220;keys&#8221; desejadas do um array, de acordo com os parâmetros passado à função.</p>
<p>Exemplo de uso da função considerando o array demonstrado acima.</p>
<p>print_r( remove_key_from_array( $array, array(&#8216;sobrenome&#8217;,'email&#8217;) ) );</p>
<p>O resultado seria:</p>
<p>Array ( [nome] =&gt; Leandro )</p>
<p>Abaixo o código da função.</p>
<pre>/**
* This function remove specified key from a given array
*
* @version 0.1
* @author Leandro Vieira Pinho
* @date Saturday, January 26, 2008
* @param array $array Array that contains the keys to be removed
* @param mixed $keys String with the key name; or, an Array with the keys names
* @return array Return the given array without the specified key(s)
*/
function remove_key_from_array( $array, $keys )
{
if ( is_array( $keys ) )
foreach( $keys as $key )
unset( $array[$key] );
else
unset( $array[$keys] );
return $array;
}</pre>
<p><strong>[UPDATE]</strong>Nova versão. Obrigado Fernando pela sugestão. <strong>[/UPDATE]</strong></p>
<pre>/**
 * This function remove specified key from a given Array and reindex it, if wanted.
 *
 * @version 0.2
 * @author Leandro Vieira Pinho
 * @date Monday, January 28, 2008
 * @param array $array Given Array that contains the keys to be removed
 * @param array $keys Array with the keys names
 * @param boolean $reindex Use "true" if you want to reindex the given array or convert associative array in indexed; "false" is default.
 * @return array Return the given array without the specified key(s)
 */
function remove_key_from_array( $array, $keys, $reindex = false )
{
	$keys = (array) $keys;
	foreach( $keys as $key )
		unset( $array[$key] );
	return ( $reindex ) ? $array = array_values( $array ) : $array;
}</pre>
<p>Se lhe for útil, faço bom proveito.</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrovieira.com/archive/funcao-php-para-remover-keys-de-um-array/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Função PHP para exibir uma string em singular ou plural</title>
		<link>http://leandrovieira.com/archive/funcao-php-para-exibir-uma-string-em-singular-ou-plural</link>
		<comments>http://leandrovieira.com/archive/funcao-php-para-exibir-uma-string-em-singular-ou-plural#comments</comments>
		<pubDate>Mon, 07 Jan 2008 17:37:18 +0000</pubDate>
		<dc:creator>Leandro Vieira</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://leandrovieira.com/archive/funcao-php-para-exibir-uma-string-em-singular-ou-plural</guid>
		<description><![CDATA[Num post anterior, falei sobre o Plugin Smarty para exibir uma string em singular ou plural que eu acabara de criar. Como alguns não utilizam o Smarty, adaptei o plugin de forma que ele possa ser utilizado como uma função PHP. Observe a forma de uso: echo singular_plural(&#8216;%d Comentário&#8217;, &#8216;%d Comentários&#8217;, $totalComentarios); No exemplo acima, [...]]]></description>
			<content:encoded><![CDATA[<p>Num post anterior, falei sobre o <a href="http://leandrovieira.com/archive/plugin-smarty-para-exibir-uma-string-em-singular-ou-plural">Plugin Smarty para exibir uma string em singular ou plural</a> que eu acabara de criar. Como alguns não utilizam o Smarty, adaptei o plugin de forma que ele  possa ser utilizado como uma função PHP. Observe a forma de uso:</p>
<p>echo singular_plural(&#8216;%d Comentário&#8217;, &#8216;%d Comentários&#8217;, $totalComentarios);</p>
<p>No exemplo acima, será exibido &#8220;x comentário&#8221; se a variável, $totalComentarios, tiver um valor igual ou menor que 1. Caso contrário, ou seja, se variável, $totalComentarios, tiver um valor maior que 1 será exibido &#8220;x comentários&#8221;.</p>
<p>Abaixo segue o código da função:</p>
<pre>
/**

 * Shows a singular or plural message based in a informed number

 * How to use: singular_plural( '%d child', '%d children', 2 );

 *

 * @version 0.1

 * @date Monday, January 7, 2008

 * @author Leandro Vieira Pinho - http://leandrovieira.com

 */

function singular_plural( $strMsgSingular, $strMsgPlural, $intTotal )

{

 if ( $intTotal &gt; 1 )

 	return sprintf( $strMsgPlural, $intTotal );

 	return sprintf( $strMsgSingular, $intTotal );

}</pre>
<p>Até o próximo.</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrovieira.com/archive/funcao-php-para-exibir-uma-string-em-singular-ou-plural/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Plugin Smarty para exibir uma string em singular ou plural</title>
		<link>http://leandrovieira.com/archive/plugin-smarty-para-exibir-uma-string-em-singular-ou-plural</link>
		<comments>http://leandrovieira.com/archive/plugin-smarty-para-exibir-uma-string-em-singular-ou-plural#comments</comments>
		<pubDate>Mon, 07 Jan 2008 17:25:41 +0000</pubDate>
		<dc:creator>Leandro Vieira</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[smarty]]></category>

		<guid isPermaLink="false">http://leandrovieira.com/archive/plugin-smarty-para-exibir-uma-string-em-singular-ou-plural</guid>
		<description><![CDATA[Acabei de criar um plugin para o Smarty com o intuito de exibir o singular ou plural de uma frase, por exemplo, basedo num número informado. A utilização é simples e pode ser utilizado em diversas linguagens. No seu arquivo de template, utilize o plugin com a seguinte sintaxe: {singular_plural singular=&#8221;%d child&#8221; plural=&#8221;%d children&#8221; number=2} [...]]]></description>
			<content:encoded><![CDATA[<p>Acabei de criar um plugin para o Smarty com o intuito de exibir o singular ou plural de uma frase, por exemplo, basedo num número informado. A utilização é simples e pode ser utilizado em diversas linguagens.</p>
<p>No seu arquivo de template, utilize o plugin com a seguinte sintaxe:</p>
<p><strong>{singular_plural singular=&#8221;%d child&#8221; plural=&#8221;%d children&#8221; number=2}</strong></p>
<p>No exemplo acima, o resultado será: 2 children. Outros exemplos:</p>
<p><strong>{singular_plural singular=&#8221;%d casa&#8221; plural=&#8221;%d casas&#8221; number=1}</strong></p>
<p><strong>{singular_plural singular=&#8221;%d computador&#8221; plural=&#8221;%d computadores&#8221; number=5}</strong></p>
<p>Em ambos exemplos, teremos os seguintes resultados: 1 casa; 5 computadores.</p>
<p>Baixe o plugin Note: There is a file embedded within this post, please visit this post to download the file.  e coloque-o na pasta onde os plugin do Smarty são armazenados. Provavelmente este será o caminho da pasta: smarty/libs/plugins/</p>
<p>Toda sugestão será bem-vinda. Um abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrovieira.com/archive/plugin-smarty-para-exibir-uma-string-em-singular-ou-plural/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Disponível a versão 0.1.1 da classe PHP W3_Image</title>
		<link>http://leandrovieira.com/archive/disponivel-a-versao-011-da-classe-php-w3_image</link>
		<comments>http://leandrovieira.com/archive/disponivel-a-versao-011-da-classe-php-w3_image#comments</comments>
		<pubDate>Fri, 19 Oct 2007 14:06:02 +0000</pubDate>
		<dc:creator>Leandro Vieira</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[classe]]></category>
		<category><![CDATA[w3_image]]></category>

		<guid isPermaLink="false">http://leandrovieira.com/archive/disponivel-a-versao-011-da-classe-php-w3_image</guid>
		<description><![CDATA[Hoje, ao escrever um post sobre como utilizar a classe PHP W3_Image encontrei um bug no método filter da referida classe. Caso fosse utilizado o método filter sem utilizar o método set_image_name encadeado a ele, gerava um erro, uma vez que o método filter não tinha um nome para aplicar a imagem que recebeu o [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje, ao escrever um post sobre como utilizar a classe PHP <a href="http://leandrovieira.com/projects/php/W3_Image/">W3_Image</a> encontrei um bug no método filter da referida classe.</p>
<p>Caso fosse utilizado o método filter sem utilizar o método set_image_name encadeado a ele, gerava um erro, uma vez que o método filter não tinha um nome para aplicar a imagem que recebeu o filtro. Mas isso foi corrigido, e agora você pode utilizar o método filter em conjunto ou não ao método set_image_name.</p>
<p>Baixe a <a href="http://leandrovieira.com/projects/php/W3_Image/releases/W3_Image.class-0.1.1.zip">versão 0.1.1 da classe PHP W3_Image</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrovieira.com/archive/disponivel-a-versao-011-da-classe-php-w3_image/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como utilizar a classe W3_Image</title>
		<link>http://leandrovieira.com/archive/como-utilizar-a-classe-w3_image</link>
		<comments>http://leandrovieira.com/archive/como-utilizar-a-classe-w3_image#comments</comments>
		<pubDate>Fri, 19 Oct 2007 13:48:35 +0000</pubDate>
		<dc:creator>Leandro Vieira</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[classe]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[w3_image]]></category>

		<guid isPermaLink="false">http://leandrovieira.com/archive/como-utilizar-a-classe-w3_image</guid>
		<description><![CDATA[Em um artigo anterior apresentei a vocês a classe PHP W3_Image. Neste post, iremos conhecê-la com mais detalhes, descobrindo todo seu potencial. Vamos lá. Em todos os métodos da W3_Image é preciso informar a imagem que será utilizada. Afinal, ela precisa saber com quem vai lidar. Porém, podemos simplificar este processo, evitando a necessidade de [...]]]></description>
			<content:encoded><![CDATA[<p>Em um <a href="http://leandrovieira.com/archive/w3_image-php-class">artigo anterior</a> apresentei a vocês a classe PHP <a href="http://leandrovieira.com/projects/php/W3_Image/">W3_Image</a>. Neste post, iremos conhecê-la com mais detalhes, descobrindo todo seu potencial. Vamos lá.</p>
<p>Em todos os métodos da <a href="http://leandrovieira.com/projects/php/W3_Image/">W3_Image</a> é preciso informar a imagem que será utilizada. Afinal, ela precisa saber com quem vai lidar. Porém, podemos simplificar este processo, evitando a necessidade de se informar a imagem toda vez que um método for utilizado.</p>
<p>Há duas formas de fazermos isto: através do <strong>construtor da classe</strong> ou do método <strong>set_image</strong>. Vejamos:</p>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('fotos/planeta.jpg');
$objImg-&gt;set_image('http://static.php.net/www.php.net/images/php.gif');
?&gt;</pre>
<p>No exemplo acima, instanciamos a classe <strong>W3_Image</strong> e em seguida utilizamos o método <strong>set_image</strong>. Em ambos os casos, estamos informando uma imagem, e distintas uma da outra. Porém a imagem informada através do método <strong>set_image</strong> irá sobrepor a imagem informada pelo construtor da classe. Note que em ambos os casos, posso informar à classe a imagem que será utilizada.</p>
<p>Veremos agora como obter informações básicas de uma determinada imagem.</p>
<h2>Como obter o mime-type de uma imagem</h2>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('fotos/planeta.jpg');
$objImg-&gt;set_image('http://static.php.net/www.php.net/images/php.gif');
echo $objImg-&gt;get_mime_type(); // Irá exibir image/gif
?&gt;</pre>
<p>Podemos simplificar; assim:</p>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image;
echo $objImg-&gt;get_mime_type('http://static.php.net/www.php.net/images/php.gif'); // Irá exibir image/gif
?&gt;</pre>
<h2>Como obter a extensão de uma imagem</h2>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('http://static.php.net/www.php.net/images/php.gif');
echo $objImg-&gt;get_extension(); // Irá exibir gif
?&gt;</pre>
<p>Embora seja necessário informar uma imagem, este processo é muito flexível, fique atento a esse detalhe nos exemplos de uso demonstrados.</p>
<h2>Como obter a largura e altura de uma imagem</h2>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('http://static.php.net/www.php.net/images/php.gif');
$arrSizes = $objImg-&gt;get_sizes(); // Irá retornar um Array
print_r($arrSizes); // Irá imprimir Array ( [0] =&gt; 120 [1] =&gt; 67 [width] =&gt; 120 [height] =&gt; 67 )
?&gt;</pre>
<p>O método <strong>get_sizes</strong> da <strong>W3_Image</strong> retorna um Array super flexivo com a largura e altura da imagem. Tal Array pode ser acessado através dos índices 0 e 1 que retornam a largura e altura, respectivamente. Ou através de associações: width e height. Falei flexível?</p>
<h2>Como obter somente a largura ou altura de uma imagem</h2>
<p>Enquanto o método <strong>get_sizes</strong> retorna um Array com a largura e altura, o método <strong>get_sizex</strong> retorna a largura e o <strong>get_sizey</strong> retorna a altura. Intuitivo?</p>
<p>Exemplo de uso:</p>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('http://static.php.net/www.php.net/images/php.gif');
echo $objImg-&gt;get_sizex(); // Irá exibir 120
echo $objImg-&gt;get_sizey(); // Irá exibir 67
?&gt;</pre>
<h2>Como obter a largura e altura de uma imagem formatados para serem utilizados em uma tag IMG do HTML</h2>
<p>É simples, veja só:</p>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('http://static.php.net/www.php.net/images/php.gif');
echo $objImg-&gt;get_attr(); // Irá exibir width="120" height="67"
?&gt;</pre>
<h2>Como exibir uma imagem no browser</h2>
<p>Através do método <strong>show</strong> da <strong>W3_Image</strong> é possível exibir uma imagem no navegador com seu <strong>mime-type</strong> correto. Este método ainda finaliza a execução do script. Veja um exemplo de uso:</p>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('http://static.php.net/www.php.net/images/php.gif');
$objImg-&gt;show(); // Irá exibir a imagem; logo do PHP
?&gt;</pre>
<h2>Como forçar o download de uma imagem</h2>
<p>Muitas pessoas tem dúvidas de como exibir a janela do navegador para que seja possível <strong>fazer o download de uma imagem</strong>. Utilizando a <strong>W3_Image</strong> é super simples. Observe:</p>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image('http://static.php.net/www.php.net/images/php.gif');
$objImg-&gt;download(); // Irá forçar o download da imagem; logo do PHP
?&gt;</pre>
<h2>Como salvar uma imagem ou como fazer upload de uma imagem</h2>
<p>Fazer upload de uma imagem ou salvá-la é muito, mas muito simples. Através do método <strong>save</strong> da <strong>W3_Image</strong> você pode salvar a imagem onde e como desejar. Observe:</p>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image;
$imgTmp = $_FILES['image']['tmp_name'];
$objImg-&gt;save($imgTmp); // Irá salvar a imagem no diretório atual.
$objImg-&gt;save($imgTmp,'fotos/mamae.jpg'); // Irá salvar a imagem no diretório fotos como o nome mame.jpg
?&gt;</pre>
<p>Eu disse que é simples?</p>
<h2>Como excluir uma imagem</h2>
<p>Para excluir, deletar, remover uma imagem de um diretório, use o método <strong>delete</strong>. E pronto.</p>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image;
$objImg-&gt;delete('fotos-familia/sogra.jpg'); // Irá excluir a imagem da sogra. Coitada?
?&gt;</pre>
<h2>Como criar uma imagem</h2>
<p>É possível criar uma imagem a partir de uma outra já existente. Para isso, utilizamos o método <strong>create</strong> da <strong>W3_Image</strong>.</p>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image;
$imgTmp = $_FILES['image']['tmp_name'];
$objImg-&gt;create($imgTmp,400,300,'upload/foto.jpg',85); // Irá criar uma imagem...
?&gt;</pre>
<p>No exemplo acima, fizemos o seguinte: informarmos ao método <strong>create</strong> que iremos utilizar a imagem armazenada na variável <strong>$imgTmp</strong> para criarmos uma nova a partir dela; sendo que a imagem a ser criada terá no máximo 400 pixels de largura, 300 de altura, será salva no diretório upload, como o nome foto.jpg e terá 85% de qualidade aplicada sobre ela. Se esse último parâmetro não for informado, o valor padrão 75% é levado em consideração.</p>
<h2>Como rotacionar uma imagem</h2>
<p>Informe a imagem e a quantidade de graus a girá-la, que o método <strong>rotate</strong> da <strong>W3_Image</strong> faz o restante. Veja:</p>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image;
$objImg-&gt;rotate('fotos-familia/sogra.jpg',180); // Irá girar a foto da sogra a 180 graus.
?&gt;</pre>
<h2>Como aplicar filtros, efeitos em uma imagem</h2>
<p>Através do método <strong>filter</strong> da <strong>W3_Image</strong>, podemos aplicar diversos tipos de efeitos em uma imagem, como por exemplo: negativo, tons de cinza, detectar bordas dentro da imagem, &#8220;emboss&#8221;, &#8220;gaussianblur&#8221;, &#8220;selectiveblur&#8221;, brilho, contraste, tons de sépia, entre outros.</p>
<p>Alguns efeitos não necessitam de informações adicionais para serem aplicados, apenas diga qual efeito e pronto. Outros precisam de informações para saberem como irão trabalhar. Vejamos alguns exemplos:</p>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image;
$objImg-&gt;filter('foto.jpg','negate'); // Aplicar um filtro negativo
$objImg-&gt;filter('foto.jpg','grayscale'); // Aplicar um filtro de tons de cinza
$objImg-&gt;filter('foto.jpg','sepia'); // Aplicar um filtro de tom de sepia
$objImg-&gt;filter('foto.jpg','brightness',30); // Aplicar 30 de brilho sobre a imagem
?&gt;</pre>
<p>Observe os demais tipos de filtros na <a href="http://leandrovieira.com/projects/php/W3_Image/documentation.htm">documentação da W3_Image</a>.</p>
<h2>Como utilizar e qual a vantagem do método set_image_name da W3_Image</h2>
<p>O método <strong>set_image_name</strong> da <strong>W3_Image</strong> é muito útil ao se trabalhar com os métodos <strong>rotate</strong> e <strong>filter</strong>, uma vez que ao utilizá-lo a imagem original é mantida e uma nova é criada com o efeito aplicado. Exemplo:</p>
<pre>&lt;?php
require_once 'class/W3_Image.class.php';
$objImg = new W3_Image;
$objImg-&gt;set_image_name('foto-negativa.jpg')-&gt;filter('foto.jpg','negate'); // Exemplo de uso do método set_image_name
?&gt;</pre>
<p>Ao utilizar o método <strong>set_image_name</strong> observe que utilizamos um encademanto de métodos, ou <strong>chaining</strong> (recurso conhecido entre aqueles quem utilizam a <a href="http://jquery.com">jQuery</a>).</p>
<p>Ufa, finalizamos vários exemplos de uso de como utilizar a classe PHP W3_Image. Faça testes, envie-me seu feedback, consulte a documentação e até breve.</p>
<p>Um abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrovieira.com/archive/como-utilizar-a-classe-w3_image/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>W3_Image PHP class</title>
		<link>http://leandrovieira.com/archive/w3_image-php-class</link>
		<comments>http://leandrovieira.com/archive/w3_image-php-class#comments</comments>
		<pubDate>Thu, 18 Oct 2007 12:56:21 +0000</pubDate>
		<dc:creator>Leandro Vieira</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[w3_image]]></category>

		<guid isPermaLink="false">http://leandrovieira.com/archive/w3_image-php-class</guid>
		<description><![CDATA[W3_Image é uma classe em PHP que utilizo para realizar diversas operações com imagens via PHP. A partir de hoje, ela será pública, e poderemos discutir a respeito de suas funcionalidades. Embora ela esteja imatura, em sua versão 0.1, julgo um momento adequado para apresentá-la. Uma vez que quanto mais pessoas a utilizam, novas possibilidades [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://leandrovieira.com/projects/php/W3_Image/">W3_Image</a> é uma classe em <a href="http://php.net">PHP</a> que utilizo para realizar diversas operações com imagens via PHP. A partir de hoje, ela será pública, e poderemos discutir a respeito de suas funcionalidades.</p>
<p>Embora ela esteja imatura, em sua versão 0.1, julgo um momento adequado para apresentá-la. Uma vez que quanto mais pessoas a utilizam, novas possibilidades de uso surgem, bugs são encontrados, recursos são questionados e com isso ela vai amadurecer e definir sua personalidade.</p>
<p>O principal objetivo  é que ela seja simples, com uma linha de aprendizagem super baixa e que seus métodos sejam intuitivos. Quando eu programo, gosto de conversar com os códigos, por isso julgo que todos scripts, classes e afins devem ser intuitivos, para que o nosso bate-papo não seja unilateral.</p>
<p>Por exemplo, com os métodos da <a href="http://leandrovieira.com/projects/php/W3_Image/">W3_Image</a> o que se deve ter em mente ao utilizar seus métodos é o seguinte: o quê (neste contexto, qual recurso a ser aplicado); quem/qual (neste contexto, qual imagem); como (neste contexto, quais os parâmetros).<br />
Como disse que ela ainda está imatura, não significa que ela não dispõe de recursos interessantes. Com a <a href="http://leandrovieira.com/projects/php/W3_Image/">W3_Image</a> é possível:</p>
<ul>
<li>Obter o mime-type de uma imagem;</li>
<li>Obter a extensão de uma imagem;</li>
<li>Obter suas dimensões, ou uma dimensão específica: largura ou altura;</li>
<li>Exibir uma imagem;</li>
<li>Força o download de uma imagem;</li>
<li>Salvar uma imagem;</li>
<li>Renomear uma imagem;</li>
<li>Excluir uma imagem;</li>
<li>Criar imagem;</li>
<li>Rotacionar uma imagem;</li>
<li>Aplicar filtros numa imagem;</li>
</ul>
<p>Em versões futuras virão novos recursos, como: marca d&#8217;água, corte, desenhos, legendas, &#8220;flip&#8221;, redimensionar, log de erros, entre outros.</p>
<p>Faça o <a href="http://leandrovieira.com/projects/php/W3_Image/releases/W3_Image.class-0.1.zip">download da versão 0.1 da W3_Image</a>, consulte sua <a href="http://leandrovieira.com/projects/php/W3_Image/documentation.htm">documentação</a> e aguarde por novos posts abordando seus métodos.</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrovieira.com/archive/w3_image-php-class/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
