<?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>Danilo Trindade &#187; Função</title>
	<atom:link href="http://danilotrindade.com.br/tag/funcao/feed/" rel="self" type="application/rss+xml" />
	<link>http://danilotrindade.com.br</link>
	<description>Javascript, Php e o que der na telha...</description>
	<lastBuildDate>Wed, 15 Dec 2010 13:15:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Criar variável global em PHP</title>
		<link>http://danilotrindade.com.br/criar-variavel-global-em-php/</link>
		<comments>http://danilotrindade.com.br/criar-variavel-global-em-php/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 13:22:33 +0000</pubDate>
		<dc:creator>Chapolin</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Declarações]]></category>
		<category><![CDATA[Exemplo]]></category>
		<category><![CDATA[Função]]></category>
		<category><![CDATA[Global]]></category>
		<category><![CDATA[Inicialização]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Var]]></category>
		<category><![CDATA[Variáveis]]></category>

		<guid isPermaLink="false">http://danilotrindade.com.br/?p=80</guid>
		<description><![CDATA[Você pode criar uma variável global em PHP apenas atribuindo valores a elas na inicialização do seu script PHP ou a medida que for necessário.
Exemplo:

$mensagem = &#039;&#039;;

if(date(&#039;Y&#039;) == &#039;2010&#039;) {
    $mensagem = &#039;Feliz ano novo!&#039;;
} else {
    $mensagem = &#039;O ano está acabando...&#039;;
}

echo $mensagem;

A primeira linha é opcional, pois [...]]]></description>
			<content:encoded><![CDATA[<p>Você pode criar uma variável global em PHP apenas atribuindo valores a elas na inicialização do seu script PHP ou a medida que for necessário.</p>
<p><strong>Exemplo:</strong></p>
<pre class="syntax-highlight:php">
$mensagem = &#039;&#039;;

if(date(&#039;Y&#039;) == &#039;2010&#039;) {
    $mensagem = &#039;Feliz ano novo!&#039;;
} else {
    $mensagem = &#039;O ano está acabando...&#039;;
}

echo $mensagem;
</pre>
<p>A primeira linha é opcional, pois o PHP não vai reclamar se você não inicializá-la.</p>
<p>Agora&#8230; De qualquer forma para usar uma variável global dentro de uma função em PHP você precisa &#8220;dizer&#8221; para a função que sua variável é global. Usando o comando &#8220;global&#8221;, veja:</p>
<pre class="syntax-highlight:php">
$mensagem = &#039;&#039;;

if(date(&#039;Y&#039;) == &#039;2010&#039;) {
    $mensagem = &#039;Feliz ano novo!&#039;;
} else {
    $mensagem = &#039;O ano está acabando...&#039;;
}

mostraMensagem();

function mostraMensagem() {
    global $mensagem;

    echo $mensagem;
}
</pre>
<p>Bom&#8230; é isso!</p>
<p>Abs,<br />
Chapoo!</p>
]]></content:encoded>
			<wfw:commentRss>http://danilotrindade.com.br/criar-variavel-global-em-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fazer include com Javascript</title>
		<link>http://danilotrindade.com.br/fazer-include-com-javascript/</link>
		<comments>http://danilotrindade.com.br/fazer-include-com-javascript/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 17:15:33 +0000</pubDate>
		<dc:creator>Chapolin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Utilidade pública]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Arquivos]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Document.write]]></category>
		<category><![CDATA[Dom]]></category>
		<category><![CDATA[Executar]]></category>
		<category><![CDATA[Exemplo]]></category>
		<category><![CDATA[Formulários]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Função]]></category>
		<category><![CDATA[Funções]]></category>
		<category><![CDATA[Idéias]]></category>
		<category><![CDATA[Include]]></category>
		<category><![CDATA[Includes]]></category>
		<category><![CDATA[Incluir]]></category>
		<category><![CDATA[Menus animados]]></category>
		<category><![CDATA[Padrão]]></category>
		<category><![CDATA[Página]]></category>
		<category><![CDATA[Problema]]></category>
		<category><![CDATA[Tag]]></category>
		<category><![CDATA[Tempo de execução]]></category>
		<category><![CDATA[Validações]]></category>

		<guid isPermaLink="false">http://danilotrindade.com.br/?p=49</guid>
		<description><![CDATA[Será que é possível incluir arquivos em uma página via &#8220;include&#8221; de Javascript? Bom&#8230;
Esta é uma discussão que acontece há algum tempo e quando comecei com Javascript sempre fiquei decepcionado com o que encontrei por ai, mas não foi tão ruim como parece, pois pegando todas as idéias me ocorreu uma!
Respondendo a pergunta&#8230; A resposta [...]]]></description>
			<content:encoded><![CDATA[<p>Será que é possível incluir arquivos em uma página via &#8220;include&#8221; de Javascript? Bom&#8230;</p>
<p>Esta é uma discussão que acontece há algum tempo e quando comecei com Javascript sempre fiquei decepcionado com o que encontrei por ai, mas não foi tão ruim como parece, pois pegando todas as idéias me ocorreu uma!</p>
<p>Respondendo a pergunta&#8230; A resposta é sim, é muito fácil incluir um arquivo via &#8220;include&#8221; em Javascript. Podemos usar o <strong>DOM</strong> (exemplo que irei mostrar), Ajax (não gosto!), document.write e etc.</p>
<p>O problema não está na inclusão do arquivo em sua página, você pode fazer diversas funções que adicione um js só que o problema não é este. O que acontece é que quando precisamos executar um script, por exemplo, ao carregar a página e chamar uma função de um desses &#8220;includes&#8221;, vai falhar, pois não conseguem carregar os arquivos em tempo de execução como a tag padrão <strong>SCRIPT</strong> consegue!</p>
<p>Mas dá pra usar? Sim!</p>
<p>Se você quer organizar o seu código e usar uma função que inclua arquivos você pode, mas fique atento aos scripts que você irá incluir. Você pode incluir scripts que contenham validações de formulários, funções de menus animados e etc.</p>
<p>Segue um pacote com o exemplo, <strong><a title="Pacote com teste do Include" href="/scripts/js/util/include.zip">clique aqui para baixar!</a></strong></p>
<p>Mas, lembre-se nunca inclua um arquivo e tente executar suas funções ao mesmo tempo, infelizmente não vai funcionar como esperado (em todos os browsers).</p>
<p><strong>Conclusão:</strong><br />
Use com moderação!</p>
<p>Ah&#8230; Não estou falando de Frameworks talvez eles atendam isso!?</p>
<p>Abs.,<br />
Chapoo</p>
]]></content:encoded>
			<wfw:commentRss>http://danilotrindade.com.br/fazer-include-com-javascript/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Por que usar o &#8220;var&#8221; nas declarações de variáveis?</title>
		<link>http://danilotrindade.com.br/por-que-usar-o-var-nas-declaracoes-de-variaveis/</link>
		<comments>http://danilotrindade.com.br/por-que-usar-o-var-nas-declaracoes-de-variaveis/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 15:53:05 +0000</pubDate>
		<dc:creator>Chapolin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Declarações]]></category>
		<category><![CDATA[Escopo]]></category>
		<category><![CDATA[Função]]></category>
		<category><![CDATA[Global]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Var]]></category>
		<category><![CDATA[Variáveis]]></category>

		<guid isPermaLink="false">http://danilotrindade.com.br/?p=23</guid>
		<description><![CDATA[Se você sempre se perguntou o motivo de usar a palavra &#8220;var&#8221; nas declarações de variáveis em Javascript agora vão ter uma idéia do porquê.
Quando se referimos a uma variável global (uma variável fora das funções) podemos usar ou não a palavra &#8220;var&#8221;, pois não existe diferença funcional e sim por causa do escopo. Agora [...]]]></description>
			<content:encoded><![CDATA[<p>Se você sempre se perguntou o motivo de usar a palavra &#8220;var&#8221; nas declarações de variáveis em Javascript agora vão ter uma idéia do porquê.</p>
<p>Quando se referimos a uma variável global (uma variável fora das funções) podemos usar ou não a palavra &#8220;var&#8221;, pois não existe diferença funcional e sim por causa do escopo. Agora se você quer utilizar em uma função uma variável com o mesmo nome de outra que já é declarada como global e não declarar com o &#8220;var&#8221; você estará alterando a variável global. Se você quer que o valor da variável seja usada apenas dentro do escopo da sua função, então utilize a palavra &#8220;var&#8221;.</p>
<p><strong>Neste exemplo a função altera o valor da variável global:</strong></p>
<pre class="syntax-highlight:javascript">
&lt;script type=&quot;text/javascript&quot;&gt;
    var variavelGlobal = &#039;Variavel Global&#039;;

    function alteraValor() {
        variavelGlobal = &#039;Variavel Global Alterada&#039;;
    }

    alteraValor();

    alert(variavelGlobal);
&lt;/script&gt;
</pre>
<p><strong>Neste outro a função apenas declara uma variável de mesmo nome, porém é usada apenas no escopo da função:</strong></p>
<pre class="syntax-highlight:javascript">
&lt;script type=&quot;text/javascript&quot;&gt;
    var variavelGlobal = &#039;Variavel Global&#039;;

    function alteraValor() {
        var variavelGlobal = &#039;Variavel Global Alterada&#039;;
    }

    alteraValor();

    alert(variavelGlobal);
&lt;/script&gt;
</pre>
<p>Abs,<br />
Chapoo</p>
]]></content:encoded>
			<wfw:commentRss>http://danilotrindade.com.br/por-que-usar-o-var-nas-declaracoes-de-variaveis/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Solução alternativa do Delegate</title>
		<link>http://danilotrindade.com.br/solucao-alternativa-do-delegate/</link>
		<comments>http://danilotrindade.com.br/solucao-alternativa-do-delegate/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 13:29:29 +0000</pubDate>
		<dc:creator>Chapolin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Orientação a objetos]]></category>
		<category><![CDATA[Classes]]></category>
		<category><![CDATA[Contexto]]></category>
		<category><![CDATA[Delegate]]></category>
		<category><![CDATA[Escopo]]></category>
		<category><![CDATA[Função]]></category>
		<category><![CDATA[Objetos]]></category>
		<category><![CDATA[Orientado]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Utilidade pública]]></category>

		<guid isPermaLink="false">http://danilotrindade.com.br/?p=15</guid>
		<description><![CDATA[Em muitos casos que postei aqui e também em situações profissionais usei o Delegate (post anterior) e simplesmente ele resolveu vários problenas quando estava trabalhando com classes e perdia o escopo do objeto em alguns métodos.
A pouco, desenvolvendo uma nova classe, me deparei com um problema chato.
Seguem as Situações:
Tinha numa classe, no método [this.iniciar] um [...]]]></description>
			<content:encoded><![CDATA[<p>Em muitos casos que postei aqui e também em situações profissionais usei o <span style="color: #ffcc00;"><strong><a title="Classe Delegate" href="http://danilotrindade.com.br/classe-delegate/">Delegate</a></strong></span> (post anterior) e simplesmente ele resolveu vários problenas quando estava trabalhando com classes e perdia o escopo do objeto em alguns métodos.</p>
<p>A pouco, desenvolvendo uma nova classe, me deparei com um problema chato.</p>
<p><span style="color: rgb(51, 51, 51);"><strong>Seguem as Situações:</strong></span></p>
<p>Tinha numa classe, no método [this.iniciar] um código que seria executado quando um evento ocorresse, mas ao passar o método para o evento, das duas uma: Ou Conseguia pegar o evento e o escopo era perdido (situação 1) ou tinha o escopo (usando o Delegate) porém não tinha o evento :( (situação 2). Segue abaixo os exemplos:</p>
<p><span style="color: rgb(51, 51, 51);"><strong>Situação 1:</strong></span></p>
<pre class="syntax-highlight:javascript">
...
this.iniciar = function() {
    document.onmousemove = this.verifica;
}

this.verifica = function(e) {
    // Tenho o evento mas não tenho o escopo
}
...
</pre>
<p><span style="color: rgb(51, 51, 51);"><strong>Situação 2:</strong></span></p>
<pre class="syntax-highlight:javascript">
...
this.iniciar = function() {
    document.onmousemove = Delegate.create(this, this.verifica, Array(&#039;&#039;));
}

this.verifica = function(e) {
    // Tenho o escopo mas não tenho o evento
}
...
</pre>
<p><span style="color: rgb(51, 51, 51);"><strong>Consegui resolver o problema da seguinte maneira:</strong></span></p>
<pre class="syntax-highlight:javascript">
NomeDaClasse = function() {
    with(this) {
        ...
        this.iniciar = function() {
            document.onmousemove = this.verifica;
        }

        this.verifica = function(e) {
            // Tenho o evento
            // Tenho o escopo
            teste(); // Não use o this.teste();
        }

        this.teste = function() {
            alert(&#039;Estou no escopo&#039;);
        }
        ...
    }
};
</pre>
<p>Imaginei que usando o with poderia ser uma luz e não acreditei que isso funcionaria até testar!!!</p>
<p><span style="color: rgb(51, 51, 51);"><strong>Obs.:</strong></span><br />
- No exemplo acima, se você usar o [this] dentro do evento, ou seja, dentro do método [this.verifica] você estará no escopo do objeto [document].<br />
- Se você tiver uma função fora da classe com o nome idêntico de algum método da classe não vai dar conflito, porém você não vai acessar a função externa também!</p>
<p>Abs,<br />
Chapooo!</p>
]]></content:encoded>
			<wfw:commentRss>http://danilotrindade.com.br/solucao-alternativa-do-delegate/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Classe Delegate</title>
		<link>http://danilotrindade.com.br/classe-delegate/</link>
		<comments>http://danilotrindade.com.br/classe-delegate/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 15:15:02 +0000</pubDate>
		<dc:creator>Chapolin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Orientação a objetos]]></category>
		<category><![CDATA[Utilidade pública]]></category>
		<category><![CDATA[Classes]]></category>
		<category><![CDATA[Contexto]]></category>
		<category><![CDATA[Delegate]]></category>
		<category><![CDATA[Escopo]]></category>
		<category><![CDATA[Função]]></category>
		<category><![CDATA[Objetos]]></category>
		<category><![CDATA[Orientado]]></category>
		<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://danilotrindade.com.br/?p=14</guid>
		<description><![CDATA[Caros,
Quando você está programando em Javascript Orientado a Objetos, você pode se deparar com diversos problemas e um deles é a perda de escopo do objeto (this). Uma solução simples é usar a classe Delegate, em poucas palavras ela executa uma função/método no contexto do objeto original.
Segue a classe abaixo:

// No Google...  - Estático
Delegate [...]]]></description>
			<content:encoded><![CDATA[<p>Caros,</p>
<p>Quando você está programando em Javascript Orientado a Objetos, você pode se deparar com diversos problemas e um deles é a perda de escopo do objeto (this). Uma solução simples é usar a classe <em><strong>Delegate</strong></em>, em poucas palavras ela executa uma função/método no contexto do objeto original.</p>
<p><span style="color: #333333;"><strong>Segue a classe abaixo:</strong></span></p>
<pre class="syntax-highlight:javascript">
// No Google...  - Estático
Delegate = {
    versao: &quot;1.0&quot;
}

Delegate.create = function(obj, func, args) {
    f = function() {
        var target = arguments.callee.target;
        var func   = arguments.callee.func;
        var args   = arguments.callee.args;

        return func.apply(target, (args.length &lt; 1 ? arguments : args));
    };

    f.args = (args != undefined &amp;&amp; args.length &gt; 0 ? args : new Array());
    f.target = obj;
    f.func = func;

    return f;
}
</pre>
<p><span style="color: #333333;"><strong>Outra forma bacana e mais simples que achei:</strong></span></p>
<pre class="syntax-highlight:javascript">
Delegate = {
	create: function (obj, func, params) {
		var f = function() { return func.apply(obj, params); };

		return f;
	}
}
</pre>
<p><span style="color: #333333;"><strong>Exemplo da implementação:</strong></span></p>
<pre class="syntax-highlight:javascript">
...
this.a = function() {
// Não chame a função this.b() desta forma,
// pois ela executará antes do tempo correto
	setTimeout(Delegate.create(this, this.b, Array(&#039;&#039;)), 1000);
}

this.b = function() {
	alert(this.c());
}

this.c = function() {
	return &#039;Olá&#039;;
}
...
</pre>
<p>Essa classe me quebrou vários galhos.</p>
<p>Abs,<br />
Chapoo</p>
]]></content:encoded>
			<wfw:commentRss>http://danilotrindade.com.br/classe-delegate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

