Você está na página 1de 10

Dicas Seletas de PHP

Estruturas de Controle do PHP: if, switch, while, do...while e for

IF
if ($valor = = 5) {
echo "O valor é 5!";
}

SWITCH
switch (operador) {
case valor1:
<comandos>;
break;
case valor2:
<comandos>;
break;
...
case valorN:
<comandos>;
break;
default:
<comandos>
break;
}

WHILE
$contador = 1;
while ($contador < 100) {
echo "O contador vale $contador <br>";
$contador ++;
}

DO...WHILE
$numero = 1;
do {
echo "O número é $numero <br>";
$numero ++;
} while ($numero < 4);

FOR
for ($cont = 0; $cont < 10; $cont ++) {
echo "\$cont vale $cont<br>";
}

1
Algumas Funções Matemáticas

misto abs (número) - retorna o valor absoluto do número


float ceil (float nr) - arredonda fração para cima
float floor (float nr) - arredonda para baixo
bool is_nam (float nr) - retorna true se número
misto max (nr1, nr2, ...) - retorna o máximo entre os números
misto min (nr1, nr2, ...) - retorna o mínimo entre os números
número pow (base, expoente) - retorna base elevado ao expoente
int rand ([int min, int max]) - retorna aleatório entre os dois números
float round (float valor [, int precisão]) - arredonda
float sqrt (float nr) - retorna raiz quadrada de nr

exit( ) - Exibe mensagem e sai

$filename = '/caminho/para/arquivo';
$file = fopen ($filename, 'r')
or exit("Não pude abrir o arquivo ($filename)");

die( ) é um apelido para afunção exit( ).

Embutindo PHP em HTML

<? =$var ?><br />

<html><body><table>
<tr>
<?php for($l = 1; $l <=7; $l++){ ?>
<td align="center"><?=$l?></td>
<?php }; ?>
</tr>
<tr>
<?php for($l = 1; $l <=7; $l++) { ?>
<td align="center">
<?php if($l >= 5) {
echo "yes";
} else {
echo "no";
}
?>
</td>
<?php }; ?>
</tr>
</table></body></html>

2
Aspas Dentro de Aspas

Caso queiramos exibir aspas duplas em no resultado de um echo ou qualquer outro caractere
especial:

echo "Escrevendo \"aspas\" "; // Escrevendo “aspas”

Abrir Página Via PHP

Antes de enviar qq coisa para a tela:


header("location: pagina.php");

Segurança no Código

Antes do código chegar ao banco devemos varrê-lo a procura de caracteres especiais, inserindo
contra-barras antes dos mesmos (no insert e update):
string addslashes ( string str);

Ao voltar do banco (select) devemos remover as contra-barras:


string stripslashes ( string str);

Operações com Arquivos

if (file_exists("arquivo.ext")); // Testa se arquivo existe

bool is_file ( string nomedoarquivo); // Teste se o arquivo é um arquivo comun, se não é um


diretório.

$tamanho = filesize($nomearquivo); // Tamanho do arquivo


$data = filetime ("nome.ext"); // data da última modificação

Exemplo::
<?
$filegen = "<?\n";
$filegen .= "//Geração de arquivo\n";
$filegen .= "\n";
$filegen .= "include \"inclusao.inc.php\";\n";
$filegen .= "\n";
$filegen .= "echo \"Apenas um teste\";\n";
$filegen .= "?>";

$file="arquivo_gerado.php";
$fileopen = fopen($file, "w");
fwrite($fileopen,$filegen);

3
fclose($fileopen);

//Abrir o arquivo para ler na textarea


$fileopen = fopen($file, "r");
$content=fread($fileopen,filesize($file)); //Abre o arquivo com tantos bytes quanto seja seu filesize
fclose($fileopen);

?>

PERÍODO ENTRE DUAS DATAS

<?
function conta_dias($data1,$data2) // As datas devem vir no formato dd-mm-aaaa
{
$data_inicio = explode("-",$data1); // separa a data pelo "-"
$data_fim = explode("-",$data2);
$data_inicial = mktime("","","",$data_inicio[1], $data_inicio[0], $data_inicio[2]); // converte tudo em segundos
$data_final = mktime("","","",$data_fim[1], $data_fim[0], $data_fim[2]);
$tempo_unix = $data_final - $data_inicial; // Acha a diferença em segundos
$periodo = floor($tempo_unix /(24*60*60)); // Converte em dias 24(horas) 60(minutos) 60(segundos)
echo $periodo;
}
?>

FUNÇÕES DO CALENDAR

Necessário para habilitar a extensão:

No GNU/Linux, no ./configure use a opção --enable-calendar, e para


a família Windows, não é necessário passos de instalação, pois o
suporte é embutido no PHP.

$dias = cal_days_in_month(CAL_GREGORIAN, 11, 2003);


echo "Existe $dias dias em agosto de 2003";

Um exemplo de uso poderia ser:

<?php
function dias_mes_atual()
{
$mes_atual = date("m", time());
$ano_atual = date("Y", time());
return cal_days_in_month(CAL_GREGORIAN, $mes_atual, $ano_atual);
}
?>

4
SUBSTRING

$ss = substr($string, $inicio, $comprimento);

PROCURAR E SOBRESCREVER

$proc = substr_replace ($string, $sobrescr, $inicio, $ccomprimento);

POSIÇÃO DE CARACTERE

$email = “ribafs@gmail.com”;
$usuario = substr($email, 0, strpos($email, ‘@’));

EXPRESSÃO CONDICIONAL

expr_condicao ? expr_true : expr_false;

$x = 4;
($x > 10) ? echo “X é maior que 10”; : echo “X é menor que 10”; // X é menor que 10

CARACTERES ASCII

$letra = chr (67); // Retorna C


$codigo_ascii = ord ($letra); // Retorna 67

CASES

strtoupper($str) – tudo maiúsculo


strtolower($str) – tudo minúsculo
ucfirst ($str) – só a inicial de toda a string maiúscula
ucwords($str) – inicial de todas as palavras em maiúsculo

CARACTERES ESPECIAIS

Para evitar que forms sejam violados com uso de carecteres especiais:

addslashes($str) – adiciona contra-barras antes dos caracteres especiais (antes de inserir no banco).
stripslashes ($str) – remove as contra-barras antes dos caracteres especiais (após trazer do banco).

5
ESPAÇOS EM STRINGS

trim($str) – remove espaços do início e final de string


rtrim($str) – remove espaços da direita (final0 de string
ltrim($str) – remove espaços da esquerda (início) de string

CAST EXPLÍCITO

$valor = (int) 2.125; // Força $valor a ser inteiro.

Outra opção é o uso da função settype().

TESTANDO O TIPO DE VARIÁVEIS

is_int($var)
is_double($var)
is_numeric($var) // Testa se into u double

if ((gettype ($var = = “integer”) || (gettype ($var) = = “double” )) {


// Número
}

ALEATÓRIO

mt_rand (12,29); // Aleatório ente 12 e 29

PAUSAR/PARAR PROGRAMA

sleep($segundos); // Pausa no programa por $segundos


usleep($microsegundos); // em microsegundos

ARRAYS

$mercearia_array = array (“ovos”, “queijo”, “pão”);


print $mercearia_array[2]; // pão

IMPRIMIR LISTA COM VÍRGULAS

$lista = array(“Emília”, “Gesse”, “Cris”);


print substr(implode (‘, ‘, $lista), 0, -2);

6
COMBINANDO STRINGS (Expressões Regulares)

- Combinar qualquer palavra nofinal de string -> string$


- Combinar qualquer palavra no início de string -> ^string

PERMISSÕES DE ARQUIVOS

id_dir(), is_executable(), is_file(), is_link(), is_readable() e is_writable()

if ((fileperms ($fn) & 0777) != 0644) {


chmod ($fn, 0644); // rw-r-r-
}

if (! Is_readable ($fn)) {
chmod ($fn, 0777); // rwxrwxrwx
}

PASSANDO ARGUMENTOS POR REFERÊNCIA

function nome(& $arg) {


...

MANTER VALOR DE VARIÁVEL ENTRE CHAMADAS

static $var = valor;

USANDO TEMPLATES COM O PHP

Criar um arquivo contendo funções para um cabeçalho, título e um rodapé padrões.

<?
include (“funcoes.inc.php”);

<html><head><title><? titulo(“Templates em PHP”) ?></title></head>


<body>
<? cabecalho(“Texto do Cabeçalho”) ?>

Corpo do documento

<? rodape(“Texto do Rodapé”) ?>


</body></html>

7
ESPELHANDO PÁGINAS

readfile (‘http://www.php.net’); // Exibe a página no browser

CONSTANTES

define (“NOME”, “valor”);

MENSAGENS DE ERRO DO PHP

Tabela 2. Erros e Log

Valor Constante Descrição Nota


Erros em tempo de execução fatais. Estes indicam
erros que não podem ser recuperados, como
1 E_ERROR (integer)
problemas de alocação de memória. A execução do
script é interrompida.
Avisos em tempo de execução (erros não fatais). A
2 E_WARNING (integer)
execução do script não é interrompida.
Erro em tempo de compilação. Erros gerados pelo
4 E_PARSE (integer)
interpretador.
Notícia em tempo de execução. Indica que o script
encontrou alguma coisa que pode indicar um erro,
8 E_NOTICE (integer)
mas que também possa acontecer durante a
execução normal do script.
Erro fatal que acontece durante a inicialização do
E_CORE_ERROR Somente
16 PHP. Este é parecido com E_ERROR, exceto que é
(integer) PHP 4
gerado pelo núcleo do PHP.
Avisos (erros não fatais) que aconteçam durante a
E_CORE_WARNING Somente
32 inicialização do PHP. Este é parecido com E_WARNING,
(integer) PHP 4
exceto que é gerado pelo núcleo do PHP.
Erro fatal em tempo de compilação. Este é parecido
E_COMPILE_ERROR Somente
64 com E_ERROR, exceto que é gerado pelo Zend
(integer) PHP 4
Scripting Engine.
Aviso em tempo de compilação. Este é parecido com
E_COMPILE_WARNING Somente
128 E_WARNING, exceto que é geredo pelo Zend Scripting
(integer) PHP 4
Engine.
Erro gerado pelo usuário. Este é parecido com
E_USER_ERROR Somente
256 E_ERROR, exceto que é gerado pelo código PHP
(integer) PHP 4
usando a função trigger_error().
Aviso gerado pelo usuário. Este é parecido com
E_USER_WARNING Somente
512 E_WARNING, exceto que é gerado pelo código PHP
(integer) PHP 4
usando a função trigger_error().

8
Valor Constante Descrição Nota
Notícia gerada pelo usuário. Este é parecido com
E_USER_NOTICE Somente
1024 E_NOTICE, exceto que é gerado pelo código PHP
(integer) PHP 4
usando a função trigger_error().
Todos os erros e avisos, como suportado, exceto do
2047 E_ALL (integer)
nível E_STRICT.
Nóticias em tempo de execução. Permite ao PHP
sugerir modificações em seu código para segurar Somente
2048 E_STRICT (integer)
melhor interoperabilidade e compatibilidade futura PHP 5
do seu código.

error_reporting(E_WARNING);

E_ALL, E_ERROR, E_PARSE, E_NOTICE // E_ALL – permite todos os erros

EVITANDO ERROS EM SISTEMAS

- Projeto cuidadoso do banco e do sistema


- Testes no sistema com valores reais antes da entrega
- Usar print_r para exibir nomes e valores de variáveis e debugar scripts.

Erro: 0 is not a * Result index // * - tipo de banco


Causa: Chamando banco/fonte de dados inválida.
Tratamento:
... @pg_query($conexao, $str) or die (“Falha na consulta”);
@ - suprimie as mensagens de rrro/warning do PHP

Erro: Call to undefined function: *


Causa: chamando função não existente no código ou como função interna do PHP.

Erro: PHP Time out!


Causa: script muito grande e com longo tempo de execução.
Tratamento: Otimização do script, divisão em menores, no php.ini aumentar set_time_limit().

Erro: Premature End of script headers


Causa: erro na instalação do PHP
PHP instalado como CGI e erro de cabeçalho.

Erro: Headers already sent


Causa: já foi enviada alguma saída para a tela antes do session ou cookie.

Erro: Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting


T_STRING or T_VARIABLE or T_NUM_STRING in *
Causa: Conteúdo inválido da função echo ou print.
Tratamento: usar concatenação: Ex.: echo “<tr><td>” . $row[0];

9
ENVIAR E-MAIL VIA PHP

mail ($to, $subject, $message, “From: $email\r\nReply-to: $email\r\n”);

CORES ALTERNADAS EM RESULTADO DE CONSULTA

...
$i = 1
while($row = pg_fetch_array($result)) {
if ($i % 2 = = 0) {
echo “<tr bgcolor = ‘cor1’>”;
} else {
echo “<tr bgcolor = ‘cor2’>”;
}
$i ++;
}

10