Funções recursivas no PHP

Sempre gostei de fazer funções recursivas e quando posso tento utilizá-las pois acho charmosas e economizam código mas elas requerem um pouco mais de raciocíonio e atenção devido a facilidade de se criar loop/laço infinito.

( Noel Rocha )

<?php
function escape($var)
{
	if (!is_array($var)) {
		if(get_magic_quotes_gpc() == 1)
			$var = stripslashes($var);
		return mysql_escape_string($var);
	}

	foreach ($var as $chave => $valor)
		$var[$chave] = escape($valor);

	return $var;
}
?>

— Função recursiva criada pelo Noel para o escape, isto é, a anulação dos caracteres de controle de texto que uma variável de texto possuí como contra-barras, apóstrofo, aspas e aspas duplas.

Pessoalmente eu não utilizava funções recursivas pois é verdade que devemos ter muito cuidado com a criação de loops infinitos, mas a devida utilização das funções recursivas é muito importante de se compreender.

A função acima também poderia ser dividida em duas, mas neste caso teríamos mais um procedimento criado e talvez nós não o utilizássemos mais no nosso projeto. Determinadas vezes é chato ver procedimentos e mais procedimentos em alguns scripts. Crie-os quando for necessário. Se for possível, use as funções recursivas.

Além da forma apontada é claro que existem outras alternativas para o tratamento de strings no PHP para evitar uma Injeção SQL, mas este não é o nosso assunto de hoje, ok?

Add comment Junho 1, 2009

IDE NetBeans

A IDE NetBeans é muito utilizada para o desenvolvimento de scripts em Java. Em busca de ferramentas para aumentar a minha produtividade fiz o download do sistema e analisei como ele se comporta no desenvolvimento em PHP.

Pensei ter encontrado um Microsoft Visual Studio para PHP. A ferramenta pesada e perfeita… mas de perfeita ela não tem muita coisa e acredito que o Eclipse continua sendo mais produtivo. O Kate quebra o galho quando se precisa de mais velocidade.

Funcionou bem no meu Open Solaris. No Ubuntu eu tive que instalar o Java SE Development Kit (JDK) com o Java Runtime Environment (JRE).

No Windows eu não testei. Por quê? Porque a Sun não envia mais CDs com o conteúdo do sistema e eu teria que baixar todo o executável para Windows com a certeza de que não usaria esta IDE.

2 comments Setembro 1, 2008

RSS? Minha tia morreu disso!

Hoje, no Google Zeitgeist, que mostra os termos mais buscados no Google encontrei os seguintes resultados nas três primeiras posições da lista de definições buscadas em 2007:

  1. what is love
  2. what is autism
  3. what is rss

    Não pude deixar de notar que nesta ferramenta o terceiro termo mais procurado é sobre a definição de RSS. Procurei uma comparação no Google Trends sobre RSS e Autismo e me surpreendi em ver o RSS mais bem colocado. Hora! Que bicho é esse?

    RSS? Minha tia morreu disso!

    Bricadeira, RSS é a sigla de Really Simple Syndication (v 2.0) e é um sistema de alimentação de informações muito utilizado na Internet atual. Sistemas de blogs e portais disponibilizam as suas informações neste formato para que as mesmas sejam lidas em diversos sistemas da web ou do seu desktop.

    Existem diversos componentes e bibliotecas, em quase todas as linguagens para trabalhar com este formato. Para quem gosta de ASP.Net, acho interessante dar uma olhada no RSS Toolkit, ou para quem programa PHP no manual do PHP sobre o DOM XML.

    Feliz Natal!

    Add comment Dezembro 25, 2007

    Programador tem que concluir ensino superior

    Você lembra do Termo Geral da Progressão Aritmética? E da somas dos termos de uma P.A ?

    Pois bem, muita gente se esquece das coisas mais fundamentais na matemática e demais informações que aprendemos na escola e são congruentes a lógica de programação.

    Por exemplo: Se quiséssemos a soma dos 50 primeiros números pares e inteiros do sistema decimal alguém poderia criar o código abaixo:

    
    para variavel_de_controle = 1 até 50 passo 2 faça
    variavel_soma = variavel_soma + 1
    fim-para
    imprima variavel_soma
    

    Porém se pararmos para analisar podemos utilizar a fórmula do termo geral Termo geral da progressão geométrica a_n=a_1+(n-1).r e da soma Soma dos termos de uma progressão geométrica S_n=frac{n.(a_1+a_n)}2 para ter um trabalho mais rápido e que não consuma muitos recursos de processamento. Seria muito mais simples fazer:variavel_ultima = 2 + (50-1) * 2O que nos retornaria 98 + 2 = 100

    variavel_soma = (50(2+100))/2

    O que nos retornaria 5100 / 2 = 2550

    Muito mais simples, porém muita gente não sabe e fica fazendo loops que gravam e efetuam leitura da memória 50 vezes gastando mais memória e processamento do que deveria e se estive estruturado corretamente. Muita gente tem preguiça de pensar.

    5 comments Novembro 24, 2007

    Porque ninguém usa o &= ?

    No VB.Net raramente vi códigos que utilizem o operador de atribuição com concatenação &= de modo que tem gente que repete milvezes o nome da variável em atribuições em que precisa preservar o início da variável de texto.

    Tem uma forma mais fácil o &= está ae disponível para utilização.

    Sabendo que você é uma boa pessoa me ajuda a esclarecer essa dúvida. Porque ninguém usa?

    Novembro 20, 2007

    PHP tem sintaxe alternativa da discórdia

    O PHP é muito interessante, existem formas alternativas de se efetuar a mesma operação, um exemplo disso é a sintaxe do if por exemplo, que pode ser a tradicional:

    if (expressão) { <operações>} else { <operações>}
    

    Ou:

    if (expressão) : <operações> else: <operações> endif
    

    Para quem está acostumado com VB a sintaxe alternativa é bem fácil de gravar, mas isso gera muita polêmica, tem gente que nem intende de uma forma, quanto mais tendo duas ou três. O bom é que está ae, e isso que importa.

    
    <?php
    $variavel = "cassio";
    if ($variavel == 2):
    echo "variavel = 2";
    elseif ($variavel == 7):
    echo "variavel é 7";
    elseif ($variavel == "cassio"):
    echo "variavel =cassio";
    else:
    $variavel = "abracadabra! a variavel nao possui nenhum dos valores definidos.";
    echo $variavel;
    endif
    ?>
    

    Novembro 17, 2007

    Bem vindo

    Aqui publicarei informações sobre diversas linguagens de programação e artimanhas conhecidas na Internet com o objetivo de resolver os principais problemas da didática e mostrar que existem ferramentas disponíveis que não são utilizadas como deveriam.

    Junho 5, 2007


    RSS Cassio Santos

    Categorias

    Calendário

    Julho 2009
    S T Q Q S S D
    « Jun    
     12345
    6789101112
    13141516171819
    20212223242526
    2728293031  

    Feeds

    Tags

    Internet