sexta-feira, 27 de maio de 2011

Algumas funções úteis em php

Mesmo depois de utilizar o PHP por anos, nos deparamos com funções e características que nós não conhecemos. Algumas destas podem ser bastante úteis, mas não devidamente aproveitadas. Com isso em mente, eu compilei uma lista com algumas funções extremamente úteis do PHP e recursos que você deve ficar familiarizado.


1- Função sem parâmetros

Você já deve saber que o PHP permite que você defina as funções com parâmetros opcionais. Mas também um método para permitir um número qualquer de parâmetros.Vamos utilizar func_get_args ():


1-funcao_sem_parametros.php:
<?php
// FUNÇAO SEM PARAMETROS
function foo() {

    // retorna um array de todos os parametros passados
    $args = func_get_args();

    foreach ($args as $k => $v) {
        echo "arg".($k+1).": $v\n"."<br />";
    }

}

foo();
/* nao mostra nada */

foo('Olá');
/* mostra
arg1: Olá
*/

foo('Olá', 'mundo', 'mais uma vez');
/* mostra
arg1: Olá
arg2: mundo
arg3: mais uma vez
*/
?>


2-  Usando Glob() para encontrar arquivos

Muitas funções PHP têm nomes longos e descritivos. No entanto, pode ser difícil dizer o que é uma função chamada glob ()  faz a menos que você já esteja familiarizado com esse termo de outro lugar.
Pense nisso como uma versão mais capaz da
função scandir (). Permite que você pesquise arquivos usando padrões:

2-usando_glob.php
<?php
//USANDO GLOB() PARA ENCONTRAR ARQUIVOS
// pega todos os arquivos .php da pasta atual
$arquivos = glob('*.php');

print_r($arquivos);
/* mostra todos os arquivos em um array:
Array
(
    [0] => teste.php
    [1] => teste2.php
    [2] => teste3.php   
)
*/

echo "<br /><br />";

$caminho = array_map('realpath',$arquivos); 

print_r($caminho);
/* mostra todos os caminhos de todos os arquivos em um array:
Array
(
    [0] => C:\wamp\www\teste.php
    [1] => C:\wamp\www\teste2.php
)
*/

?>


3- Informções sobre o uso de memória

Ao observar o uso de memória de seus scripts, você poderá otimizar o seu código melhor.
O PHP tem um gerenciador de memória muito complexo. A quantidade de memória que está sendo usada pelo seu script pode ir para cima e para baixo durante a execução de um script. Para obter o atual uso de memória, podemos usar o memory_get_usage () função, e para obter a maior quantidade de memória usada em qualquer ponto, podemos usar o memory_get_peak_usage () função:



3-uso_de_memoria.php:
<?php
//INFORMAÇÕES SOBRE O USO DE MEMÓRIA
echo "Inicial: ".memory_get_usage()." bytes \n"."<br />";
/* mostra
Inicial: 361400 bytes
*/

// Vamos usar um pouco de memória
for ($i = 0; $i < 100000; $i++) {
    $array []= md5($i);
}

// vamos remover metade do array
for ($i = 0; $i < 100000; $i++) {
    unset($array[$i]);
}

echo "Final: ".memory_get_usage()." bytes \n"."<br />";
/* mostra
Final: 885912 bytes
*/

echo "Pico: ".memory_get_peak_usage()." bytes \n"."<br />";
/* mostra
Pico: 13687072 bytes
*/

?>


4- Um pouco de constantes

O PHP fornece constantes úteis para buscar o número da linha atual (__LINE__), caminho do arquivo (__FILE__), caminho do diretório (__DIR__), nome da função (__FUNCTION__), nome da classe (__CLASS__), nome do método (__METHOD__) e espaço (__NAMESPACE__).

Nós não abordaremos cada uma dessas neste artigo, mas vou mostrar-lhe alguns casos de uso:

4-constantes.php:
<?php
//CONSTANTES
// algum código
// ...

echo "Caminho desse arquivo: ".__FILE__."<br /><br />";

function debugando($mensagem, $linha) {
    echo "Linha $linha: $mensagem\n"."<br /><br />";
}

debugando("mensagem de debug", __LINE__);
/* mostra
Linha 4: mensagem de debug
*/

// mais algum código
// ...
debugando("outra mensagem de debug", __LINE__);
/* mostra
Linha 11: mensagem de debug
*/

?>


5- Gerando IDs únicos


Pode haver situações onde você precisa gerar uma cadeia exclusiva. Muitas pessoas usam a função md5 () para isso, mesmo que ela não seja exatamente para essa finalidade.
realmente uma função do PHP chamada uniqid () que se destina a ser usada para isso.
Você pode notar que, apesar dos resultados únicos, eles possuem os primeiros caracteres semelhantes. Isso ocorre porque a seqüência gerada está relacionada ao tempo do servidor. Isso realmente tem um bom efeito colateral, como todo novo id gerado vem depois em ordem alfabética, para que eles possam ser classificados.
Para reduzir as chances de obter uma segunda via, você pode passar um prefixo, ou o segundo parâmetro para aumento de entropia:

5-gerar_id.php:
<?php
//GERANDO IDs ÚNICOS
// gerar string unica
echo "Gerar string unica: ".md5(time() . mt_rand(1,1000000))."<br /><br />";

// gerar string unica
echo "Gerar string unica: ".uniqid()."<br /><br />";
/* mostra
4bd67c947233e
*/

// com prefixo
echo "Com prefixo: ".uniqid('prefixo_')."<br /><br />";;
/* mostra
foo_4bd67d6cd8b8f
*/

// com mais entropia
echo "Com mais entropia: ".uniqid('',true)."<br /><br />";
/* mostra
4bd67d6cd8b926.12135106
*/

// ambos
echo "Ambos: ".uniqid('prefixooo_',true)."<br /><br />";
/* mostra
bar_4bd67da367b650.43684647
*/
?>

 

6- Comprimindo Strings

Quando se fala de compressão, geralmente pensamos sobre os arquivos, como arquivos ZIP. É possível comprimir longas seqüências em PHP, sem envolver qualquer arquivo desse tipo.
No exemplo a seguir vamos utilizar as
funções gzcompress () e gzuncompress ().
Assim conseguiremos alcançar uma redução de quase 50% do tamanho. Com as
funções gzencode() e gzdecode() também é possível conseguir resultados semelhantes, usando um algoritmo de compressão diferente:

6-comprimindo_string.php:
<?php
// COMPRIMIR STRING
$string =
"Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Nunc ut elit id mi ultricies
adipiscing. Nulla facilisi. Praesent pulvinar,
sapien vel feugiat vestibulum, nulla dui pretium orci,
non ultricies elit lacus quis ante. Lorem ipsum dolor
sit amet, consectetur adipiscing elit. Aliquam
pretium ullamcorper urna quis iaculis. Etiam ac massa
sed turpis tempor luctus. Curabitur sed nibh eu elit
mollis congue. Praesent ipsum diam, consectetur vitae
ornare a, aliquam a nunc. In id magna pellentesque
tellus posuere adipiscing. Sed non mi metus, at lacinia
augue. Sed magna nisi, ornare in mollis in, mollis
sed nunc. Etiam at justo in leo congue mollis.
Nullam in neque eget metus hendrerit scelerisque
eu non enim. Ut malesuada lacus eu nulla bibendum
id euismod urna sodales. ";

$comprimido = gzcompress($string);

echo "Tamanho original : ". strlen($string)."\n"."<br /><br />";
/* mostra
Tamanho original: 794
*/

echo "Tamanho comprimido: ". strlen($comprimido)."\n"."<br /><br />";
/* mostra
Tamanho comprimido: 415
*/

// descomprimindo
$original = gzuncompress($comprimido);

?>


Baixar arquivos do artigo

Esse artigo foi útil para você? Por favor, compartilhe conosco nos comentários. E obrigado pela leitura!
See you later guys!

0 comentários:

Postar um comentário

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | cna certification