<?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>CODARE &#187; PHP</title>
	<atom:link href="http://codare.net/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://codare.net</link>
	<description>Programadores, uni-vos!</description>
	<lastBuildDate>Fri, 03 Dec 2010 21:34:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>PHP: Constantes e métodos estáticos</title>
		<link>http://codare.net/2009/04/02/php-constantes-e-metodos-estaticos/</link>
		<comments>http://codare.net/2009/04/02/php-constantes-e-metodos-estaticos/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 12:00:22 +0000</pubDate>
		<dc:creator>João Del Valle</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[const]]></category>
		<category><![CDATA[contantes]]></category>
		<category><![CDATA[métodos estáticos]]></category>
		<category><![CDATA[self]]></category>
		<category><![CDATA[static]]></category>

		<guid isPermaLink="false">http://codare.net/?p=248</guid>
		<description><![CDATA[Constantes e métodos de classe (estáticos) são muito utilizados em frameworks, especialmente para reuso de código e organização de escopo. Em PHP, pode-se usar a palavra-chave self para acessar uma constante de classe a partir de um método estático da &#8230; <a href="http://codare.net/2009/04/02/php-constantes-e-metodos-estaticos/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Constantes e métodos de classe (estáticos) são muito utilizados em frameworks, especialmente para reuso de código e organização de escopo. Em PHP, pode-se usar a palavra-chave <code>self</code> para acessar uma constante de classe a partir de um método estático da própria classe. Por exemplo:</p>
<pre>class CarrinhoDeCompras {
  const SESSION_KEY = 'com.firma.ecommerce.carrinho';
  static function getFromSession() {
    if(isset($_SESSION[self::SESSION_KEY]))
      return $_SESSION[self::SESSION_KEY];
    return $_SESSION[self::SESSION_KEY] = new CarrinhoDeCompras();
  }
  ... // restante do código do carrinho
}</pre>
<p>Este código encapsula dentro da classe <code>CarrinhoDeCompras</code> a obtenção de um objeto da sessão, com uma chave fixa chamada SESSION_KEY, declarada com a palavra-chave <code>const</code>. A variável <code>self</code> poderia ser substituída pelo próprio nome da classe, mas seu uso deixa o código mais independente, facilitando possíveis refactorings (e.g., renomeação da classe).</p>
<p>O acesso ao método estático do exemplo é feito através do operador <code>::</code>, como a seguir:</p>
<pre>$cestaDoUsuario = CarrinhoDeCompras::getFromSession();</pre>
<p><em>Post atualizado em 5/4/2009, depois do comentário do Diego Sampaio (obrigado! ;).</em></p>
]]></content:encoded>
			<wfw:commentRss>http://codare.net/2009/04/02/php-constantes-e-metodos-estaticos/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PHP: Extrair usuário e senha de uma URL</title>
		<link>http://codare.net/2009/03/23/php-extrair-usuario-e-senha-de-uma-url/</link>
		<comments>http://codare.net/2009/03/23/php-extrair-usuario-e-senha-de-uma-url/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 12:00:00 +0000</pubDate>
		<dc:creator>Fabiano Pires</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[arrays]]></category>
		<category><![CDATA[libcurl]]></category>
		<category><![CDATA[strings]]></category>

		<guid isPermaLink="false">http://codare.net/?p=221</guid>
		<description><![CDATA[É possível passar o usuário e senha de um sistema PHP diretamente pela URL, no formato: https://usuario:senha@www.exemplo.com Porém, há algumas bibliotecas (como a libcurl) que não aceitam receber usuário e senha pelo endereço. É preciso separá-los. Seguem duas funções que &#8230; <a href="http://codare.net/2009/03/23/php-extrair-usuario-e-senha-de-uma-url/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>É possível passar o usuário e senha de um sistema PHP diretamente pela URL, no formato:</p>
<pre>https://usuario:senha@www.exemplo.com</pre>
<p>Porém, há algumas bibliotecas (como a <a href="http://curl.haxx.se/libcurl/">libcurl</a>) que não aceitam receber usuário e senha pelo endereço. É preciso separá-los.</p>
<p>Seguem duas funções que fazem essa separação, retornando os trechos distintos da URL, são elas:</p>
<ul>
<li><strong>extrair_User_Pass</strong> que retorna &#8220;usuario:senha&#8221;</li>
<li><strong> extrair_URL</strong> que retorna &#8220;https://www.exemplo.com&#8221;</li>
</ul>
<pre>function extrair_User_Pass($URL)
{
    // Inverte a string, pega tudo entre o primeiro
    // '@' e as '//' e joga no Array "$arr1"
    preg_match("'@.*\b//'",strrev($URL),$arr1);

    // Converte a String em "$arr1[0]" em um array,
    // inverte sua ordem e armazena em "$arr1"
    $arr1 = array_reverse(str_split($arr1[0]));

    // Retira o '@' e as '//'
    array_shift($arr1);
    array_shift($arr1);
    array_pop($arr1);

    return implode($arr1);
}

function extrair_URL($URL)
{
    return preg_replace("/".extrair_User_Pass($URL)."@/","",$URL);
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://codare.net/2009/03/23/php-extrair-usuario-e-senha-de-uma-url/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP: Interceptar métodos inexistentes (__call)</title>
		<link>http://codare.net/2007/09/28/php-interceptar-metodos-inexistentes-__call/</link>
		<comments>http://codare.net/2007/09/28/php-interceptar-metodos-inexistentes-__call/#comments</comments>
		<pubDate>Fri, 28 Sep 2007 12:30:26 +0000</pubDate>
		<dc:creator>João Del Valle</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://codare.net/2007/09/28/php-interceptar-metodos-inexistentes-__call/</guid>
		<description><![CDATA[Palavras-chave: PHP, __call, métodos dinâmicos, orientação a objetos O PHP tem uma função mágica chamada __call(). Se sua classe declarar um método com este nome, ele será invocado sempre que for feita uma chamada a um método não existente naquela &#8230; <a href="http://codare.net/2007/09/28/php-interceptar-metodos-inexistentes-__call/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: PHP, __call, métodos dinâmicos, orientação a objetos</p>
<p>O PHP tem uma função mágica chamada __call(). Se sua classe declarar um método com este nome, ele será invocado sempre que for feita uma chamada a um método não existente naquela classe.</p>
<p>Esta invocação receberá como parâmetro o nome do método chamado e os argumentos. É um mecanismo tradicional e simples, mas muito poderoso. Já existia no Smalltalk, através da mensagem doesNotUnderstand, que tinha exatamente a mesma semântica.</p>
<p>As aplicações são diversas: interceptação de chamadas, proxying, dynamic dispatching etc. Estas brincadeiras divertidas são muito úteis para a construção de bibliotecas e frameworks dinâmicos, por exemplo, para web ou mapeamento objeto-relacional.</p>
<p>Um exemplo para ilustrar:</p>
<pre>
class ClasseComTodosOsMetodosDoMundo
{
    public function __call($m, $a)
    {
        echo "Método invocado: $m\n";
    }
}

$o = new ClasseComTodosOsMetodosDoMundo();
$o-&gt;umMetodoQualquer();
$o-&gt;umMetodoAssimAssado();
</pre>
<p>Que vai ter a saída:</p>
<pre>
Método invocado: umMetodoQualquer
Método invocado: umMetodoAssimAssado
</pre>
]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/09/28/php-interceptar-metodos-inexistentes-__call/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PHP: Interfaces Fluentes</title>
		<link>http://codare.net/2007/08/17/php-interfaces-fluentes/</link>
		<comments>http://codare.net/2007/08/17/php-interfaces-fluentes/#comments</comments>
		<pubDate>Fri, 17 Aug 2007 12:30:53 +0000</pubDate>
		<dc:creator>Marcelo Araujo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://codare.net/2007/08/17/php-interfaces-fluentes/</guid>
		<description><![CDATA[Palavras-chave: PHP 5, fluent interfaces, object chaining Algumas práticas podem melhorar a legibilidade de um código, e uma delas é o uso de interfaces fluentes ou encadeamento de objetos. Normalmente, a maioria dos métodos setter de um objeto apresentam retorno &#8230; <a href="http://codare.net/2007/08/17/php-interfaces-fluentes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: PHP 5, fluent interfaces, object chaining</p>
<p>Algumas práticas podem melhorar a legibilidade de um código, e uma delas é o uso de interfaces fluentes ou encadeamento de objetos.</p>
<p>Normalmente, a maioria dos métodos setter de um objeto apresentam retorno do tipo void. Mas, em um objeto com interface fluente, os setters irão retornar um objeto, de modo que se possa encadeá-lo.</p>
<p>Vale lembrar que esta prática é apenas suportada no PHP 5, visto que o PHP 4 não suporta referência direta aos objetos retornados por métodos.</p>
<p>Vejamos o exemplo:</p>
<pre>
class A {

      private $_n = '';

      public function setA($n)
      {
            $this-&gt;_n = $n;
            return $this;
      }

      public function reverse()
      {
            $this-&gt;_n = strrev($this-&gt;_n);
            return $this;
      }

      public function getA()
      {
            return  $this-&gt;_n;
      }
}

$a = new A();

print $a-&gt;setA("codare")-&gt;reverse()-&gt;getA();

# Retorna: eradoc

?&gt;
</pre>
<p>E lembre-se: interfaces fluentes requerem situações fluentes!</p>
]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/08/17/php-interfaces-fluentes/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PHP: Utilizando o método __autoload()</title>
		<link>http://codare.net/2007/07/04/php-utilizando-o-metodo-__autoload/</link>
		<comments>http://codare.net/2007/07/04/php-utilizando-o-metodo-__autoload/#comments</comments>
		<pubDate>Wed, 04 Jul 2007 12:30:56 +0000</pubDate>
		<dc:creator>Pablo DallOglio</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://codare.net/2007/07/04/php-utilizando-o-metodo-__autoload/</guid>
		<description><![CDATA[Palavras-chave: PHP5, Orientação a objetos, carregar, classes, __autoload Quando programamos aplicações orientadas a objetos um dos aspectos importantes a se observar é a responsabilidade e a orientação à assunto. Isto quer dizer que cada classe deve ser responsável por um &#8230; <a href="http://codare.net/2007/07/04/php-utilizando-o-metodo-__autoload/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: PHP5, Orientação a objetos, carregar, classes, __autoload</p>
<p>Quando programamos aplicações orientadas a objetos um dos aspectos importantes a se observar é a responsabilidade e a orientação à assunto. Isto quer dizer que cada classe deve ser responsável por um determinado assunto e ser responsável por ele, ou seja, protejer os aspectos internos de implementação.</p>
<p>Dessa forma, facilmente criamos aplicações com dezenas de classes, uma vez que cada classe irá cuidar de um aspecto bem específico. Teremos classes para botões, janelas, conexões com o banco de dados, etc.</p>
<p>Nestes casos, é comum encontrar no início de um arquivo, vários &#8220;include_once&#8221;, responsáveis por carregar as inúmeras classes necessárias no script, como:</p>
<pre>
&lt;?php
include_once 'classes/Botao.class.php';
include_once 'classes/Cliente.class.php';
include_once 'classes/Fornecedor.class.php';

// ... código ...

?&gt;</pre>
<p>Em muitos casos, corremos inclusive o erro de esquecer um include, tantas são as classes utilizadas pelo nosso sistema. Para facilitar o carregamento das classes, o PHP5 introduz o método __autoload().</p>
<p>O método __autoload() é executado automaticamente na primeira vez que uma classe é instanciada. Nele podemos escrever algumas tarefas automáticas como o próprio carregamento da classe em memória.</p>
<pre>
&lt;?php
function __autoload($classe)
{
   include_once "classes/{$classe}.class.php";
}

// ... código ...

new Cliente;

new Fornecedor;

?&gt;</pre>
<p>Desta forma, sempre que uma classe for instanciada pela primeira vez, o método __autoload é executado e a classe correspondente é carregada.</p>
]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/07/04/php-utilizando-o-metodo-__autoload/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PHP: Atribuição condicional (ternário)</title>
		<link>http://codare.net/2007/06/06/php-atribuicao-condicional-ternario/</link>
		<comments>http://codare.net/2007/06/06/php-atribuicao-condicional-ternario/#comments</comments>
		<pubDate>Wed, 06 Jun 2007 12:30:15 +0000</pubDate>
		<dc:creator>Pablo DallOglio</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://codare.net/2007/06/06/php-atribuicao-condicional/</guid>
		<description><![CDATA[Palavras-chave: PHP5, IF, atribuição condicional, ternário Um dos comandos mais utilizados nos nossos programas sem dúvida é o IF. Quando utilizamos o IF para tarefas simples como realizar um teste condicional para posterior atribuição de variáveis, podemos utilizar uma sintaxe &#8230; <a href="http://codare.net/2007/06/06/php-atribuicao-condicional-ternario/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: PHP5, IF, atribuição condicional, ternário</p>
<p>Um dos comandos mais utilizados nos nossos programas sem dúvida é o IF. Quando utilizamos o IF para tarefas simples como realizar um teste condicional para posterior atribuição de variáveis, podemos utilizar uma sintaxe simplificada.</p>
<p>A seguir, veja um exemplo onde atribuímos a variável $texto dependendo do conteúdo da variável $idade.</p>
<pre>
&lt;?php
$idade =16;

if ($idade &gt; 18)
{
   $texto = "maior idade";
}
else
{
   $texto = "menor idade";
}

echo $texto;
?&gt;
</pre>
<p>O PHP nos oferece uma sintaxe onde podemos realizar uma atribuição condicional de variáveis, onde o IF acima pode ser substituído pela seguinte forma:</p>
<pre>
&lt;?php
$idade =16;
$texto = $idade &gt; 18 ? "maior idade" : "menor idade";
echo $texto;
?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/06/06/php-atribuicao-condicional-ternario/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>PHP: Cortando strings (substr)</title>
		<link>http://codare.net/2007/05/22/php-cortando-strings-substr/</link>
		<comments>http://codare.net/2007/05/22/php-cortando-strings-substr/#comments</comments>
		<pubDate>Tue, 22 May 2007 12:30:29 +0000</pubDate>
		<dc:creator>Pablo DallOglio</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://codare.net/2007/05/22/php-cortando-strings-substr/</guid>
		<description><![CDATA[Palavras-chave: PHP, strings, substr, strpos Um dos tipos de dados com mais recursos na linguagem PHP é sem dúvida as strings. A linguagem PHP possui inúmeras funções para manipulação de strings e uma das mais utilizadas é o substr. O &#8230; <a href="http://codare.net/2007/05/22/php-cortando-strings-substr/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: PHP, strings, substr, strpos</p>
<p>Um dos tipos de dados com mais recursos na linguagem PHP é sem dúvida as strings. A linguagem PHP possui inúmeras funções para manipulação de strings e uma das mais utilizadas é o substr.</p>
<p>O <strong>substr</strong> é responsável por retornar um pedaço da string. Para isto ele se utiliza de três parâmetros: a própria string, o índice inicial e a quantidade de caracteres a ser retornada.</p>
<p>Acontece que podemos utilizar também um índice negativo, desta forma o PHP analisa a string contando N caracteres a partir do final, e não a partir do início. Veja a seguir alguns exemplos:</p>
<pre>
&lt;?php
$texto = "eu não sou besta pra tirar onda de herói";

echo substr($texto, 0, 16);  // eu não sou besta
echo "&lt;br&gt;\\n";
echo substr($texto, 11);     // besta pra tirar onda de herói
echo "&lt;br&gt;\\n";
echo substr($texto, 11, 9);  // besta pra
echo "&lt;br&gt;\\n";
echo substr($texto, -5);     // herói
echo "&lt;br&gt;\\n";
?&gt;
</pre>
<p>Também podemos utilizar a substr() em combinação com a strpos(). A <strong>strpos</strong> detecta a posição que uma string ocorre dentro de uma expressão.</p>
<p>No exemplo seguinte, detectamos onde ocorre a palavra &#8220;http://&#8221; para retornar somente o domínio presente no texto:</p>
<pre>
&lt;?php
$texto = "retornarei somente o domínio de http://www.pablo.blog.br";
$posicao = strpos($texto, 'http://');
echo substr($texto, $posicao+11); // pablo.blog.br
echo "\\n&lt;br&gt;";
?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/05/22/php-cortando-strings-substr/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PHP: Convertendo entre arrays e strings</title>
		<link>http://codare.net/2007/05/15/php-convertendo-entre-arrays-e-strings/</link>
		<comments>http://codare.net/2007/05/15/php-convertendo-entre-arrays-e-strings/#comments</comments>
		<pubDate>Tue, 15 May 2007 12:30:51 +0000</pubDate>
		<dc:creator>Pablo DallOglio</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://codare.net/2007/05/15/php-convertendo-entre-arrays-e-strings/</guid>
		<description><![CDATA[Palavras-chave: PHP, arrays, strings, implode, explode De todos os tipos de dados presentes nas linguagens de programação, arrays e strings certamente estão entre os mais utilizados. E em PHP isto não é diferente. Muitas vezes temos a necessidade de conversão &#8230; <a href="http://codare.net/2007/05/15/php-convertendo-entre-arrays-e-strings/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: PHP, arrays, strings, implode, explode</p>
<p>De todos os tipos de dados presentes nas linguagens de programação, arrays e strings certamente estão entre os mais utilizados. E em PHP isto não é diferente. Muitas vezes temos a necessidade de conversão de uma estrutura para outra. Aqui vamos ver como fazer a conversão de arrays para strings e vice-versa.</p>
<p>Primeiramente, temos uma string contendo uma lista de nomes separados por vírgula e iremos convertê-la em um array. Para tal, utilizamos a função explode especificando o caractere separador.</p>
<pre>
&lt;?php
$string = "joão, maria, josé, pedro";
$array  = explode(',', $string);
print_r($array);
?&gt;</pre>
<p>Agora iremos fazer o contrário, ou seja, converter um array para uma string. Para tal, iremos utilizar a função implode(), passando o caractere que desejamos utilizar para separar os dados na string.</p>
<pre>
&lt;?php
$array[] = "www.adianti.com.br";
$array[] = "www.pablo.blog.br";
$array[] = "www.php-gtk.com.br";

print_r(implode(':', $array))
?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/05/15/php-convertendo-entre-arrays-e-strings/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>PHP: Descobrir métodos e atributos de uma classe (Reflection)</title>
		<link>http://codare.net/2007/03/13/php-descobrir-metodos-e-atributos-de-uma-classe-reflection/</link>
		<comments>http://codare.net/2007/03/13/php-descobrir-metodos-e-atributos-de-uma-classe-reflection/#comments</comments>
		<pubDate>Tue, 13 Mar 2007 12:00:26 +0000</pubDate>
		<dc:creator>Pablo DallOglio</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://codare.net/2007/03/13/php-descobrir-metodos-e-atributos-de-uma-classe-reflection/</guid>
		<description><![CDATA[Palavras-chave: PHP, Classes, Objetos, Reflection API No PHP existem diversas formas de se descobrir informações a respeito de uma classe. Por exemplo, para saber quais os métodos oferecidos por uma classe, a função get_class_methods() é utilizada: &#60;?php class Pessoa { &#8230; <a href="http://codare.net/2007/03/13/php-descobrir-metodos-e-atributos-de-uma-classe-reflection/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: PHP, Classes, Objetos, Reflection API</p>
<p>No PHP existem diversas formas de se descobrir informações a respeito de uma classe. Por exemplo, para saber quais os métodos oferecidos por uma classe, a função get_class_methods() é utilizada:</p>
<pre>
&lt;?php
class Pessoa
{
    private $codigo;
    private $name;
    function __construct($codigo)
    {
        $this-&gt;codigo = $codigo;
    }

    function setName($name)
    {
        $this-&gt;name = $name;
    }
}

print_r(get_class_methods('Pessoa'));
?&gt;</pre>
<p>O PHP5 implementa uma API chamada Reflection. A Reflection API permite fazermos reflexão de objetos, ou seja, investigar sobre seus atributos, métodos e descobrir sua interface. A seguir, temos o mesmo código rescrito utilizando essa API:</p>
<pre>
&lt;?php
class Pessoa
{
    private $codigo;
    private $name;
    function __construct($codigo)
    {
        $this-&gt;codigo = $codigo;
    }

    function setName($name)
    {
        $this-&gt;name = $name;
    }
}

$api = new ReflectionClass('Pessoa');
foreach($api-&gt;getMethods() as $method)
{
    echo $method-&gt;getName() . "&lt;br&gt;\\n";
}
?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/03/13/php-descobrir-metodos-e-atributos-de-uma-classe-reflection/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP: Funções com argumentos variados</title>
		<link>http://codare.net/2007/02/07/php-funcoes-com-argumentos-variados/</link>
		<comments>http://codare.net/2007/02/07/php-funcoes-com-argumentos-variados/#comments</comments>
		<pubDate>Wed, 07 Feb 2007 11:59:41 +0000</pubDate>
		<dc:creator>Pablo DallOglio</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://codare.net/2007/02/07/funcoes-com-argumentos-variados/</guid>
		<description><![CDATA[Palavras-chave: PHP, funções, argumentos Você sabia que o PHP aceita a chamada de funções com argumentos variados? Normalmente definimos os parâmetros a serem recebidos na assinatura da função (declaração). Mas quando não sabemos a quantidade exata de métodos a serem &#8230; <a href="http://codare.net/2007/02/07/php-funcoes-com-argumentos-variados/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: PHP, funções, argumentos</p>
<p>Você sabia que o PHP aceita a chamada de funções com argumentos variados?</p>
<p>Normalmente definimos os parâmetros a serem recebidos na assinatura da função (declaração). Mas quando não sabemos a quantidade exata de métodos a serem recebidos, podemos utilizar a função func_get_args(), que irá retornar um array contendo os parâmetros passados na chamada da função.</p>
<p>Como exemplo veja a função soma(), que pode receber uma quantidade variada de argumentos, retornando seu somatório.</p>
<pre>
&lt;?php
function soma()
{
    $parametros = func_get_args();
    foreach ($parametros as $parametro)
    {
        $soma += $parametro;
    }
    return $soma;
}

echo soma(1,2) . "&lt;br&gt;\\n";
echo soma(1,2,3) . "&lt;br&gt;\\n";
echo soma(1,2,3,4,5,6) . "&lt;br&gt;\\n";
?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://codare.net/2007/02/07/php-funcoes-com-argumentos-variados/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

