Funções

Índice da página:

Por Valor

Uma Função é um bloco de código que pode ser defenido e depois invocado em qualquer parte do programa. Na generalidade uma função recebe um ou mais argumentos, executa o código da função e retorna o valor do resultado.
Se a função tiver mais de um argumento estes serão separados por vírgulas. As variáveis que passam os valores para a função são denominadas de argumentos e as variáveis da função são chamadas de parâmetros .
As funções por valor desenvolvem o código da função e alteram os seus parâmetros mas a variável de argumento no programa base continua inalterável.
O exemplo em baixo mostra uma pequena função que converte Km a Milhas.

<?php
   echo '<body onload="NumText.Km.focus()">';
   echo '<form action="exe014.php" method="get" name="NumText">';
   echo 'Entre Kilómetros:<input type="text" name="Km" size="6"> ';
   echo '<input type="submit" value="Aceitar"></form>';
   $a=Miles($Km);
   echo "$Km Kilometro(s) corresponde a: $a Milha(s)";

function Miles($Kilometro){
   return $Kilometro * 0.624;}
?>	
Ver Índice

Por Referência

A diferença principal neste tipo de funções, está na transposição do valor do parâmetro para o valor do argumento. Isto significa que se o código da função alterar o valor da variável do argumento este também será alterado no seu programa base.
Para indicar que o parâmetro é de referência, basta colocar o signo & antes da variável do parâmetro que desejar referenciar.
No exemplo apresentamos a conversão de um preço custo com um valor de percentagem variável.

<?php
   echo '<body onload="NumText.Valor.focus()">';
   echo '<form action="exe015.php" method="get" name="NumText">';
   echo 'Entre Valor: <input type="text" name="Valor" size="8"> ';
   echo 'Entre Desconto:<input type="text" name="Percent" size="5">%';
   echo '<input type="submit" value="Calcular"></form>';
   echo "Custo base = $Valor €<br>";
   $a=Desconto($Valor,$Percent);
   echo("Tem a Pagar: $Valor € com Desconto de $Percent%");

function Desconto(&$Val,$Perc){
   $Val -= $Val * $Perc/100;}
?>
Ver Índice

Indexar

No php variáveis podem ser referenciadas a funções. Assim podemos tomar uma acção referenciada a uma variável e indexar qual a função que desejamos efectuar.
No exemplo seguinte veremos um exemplo de quatro funções indexadas por uma variável pelo controlo da Hora.

<?php
echo '<body onload="NumText.Hora.focus()">';
echo '<form action="exe016.php" method="get" name="NumText">';
echo 'Entre Hora: (0-24) <input type="text" name="Hora" size="6"> ';
echo '<input type="submit" value="Mostrar"></form>';

$output_function="semhora";
if ($Hora >= 6 && $Hora <= 12 && $Hora != ""){
   $output_function = "manha";}
if ($Hora >12 && $Hora <=19 && $Hora != ""){
   $output_function = "tarde";}
if ($Hora >19 && $Hora <25 || $Hora <6 && $Hora != ""){
   $output_function = "noite";}

$a=$output_function();

function manha(){
   echo "Bom Dia";}

function tarde(){
   echo "Boa Tarde";}

function noite(){
   echo "Boa Noite";}

function semhora(){
   echo "Bem Vindo";}
?>
Ver Índice

Validar Data

Validar Data é essencial para verificação de entradas em seus formulários. Existe no php uma função ereg num capítulo de Regular Expressions, mas na prática verifiquei que esta função é bastante falível e complexa a sua utilização. Veja curso (Regex Posix).
Um Bom método é criar uma class file tipo OOP para os seus formulários (Veja Curso de OOP) e usar pequenas funções para os diversos tipos de entrada.
No exemplo apresentamos uma função que não permite uma entrada em branco e só permite caracteres válidos para Nomes.
<?php
echo '<onload="NumText.Nome.focus()">';
echo '<form action="exe017.php" method="get" name="NumText">';
echo 'Entre Nome: <input type="text" name="Nome" size="8"> ';
echo '<input type="submit" value="Mostrar" name="Sub" class="bot"></form>';

if ($Sub !=""){Vernome($Nome);
    echo "Seu Nome: ".$Nome;}

function Vernome($Nome){
    If (!$Nome){
        echo "Texto Nome Não pode Estar Vazio!";Exit;}
    $sign="\|!@#$%&/{([)]=}?'»«^~€+*´`ªº<>,;.:-_/0123456789";
    for ($n=0; $n<strlen($Nome); ++$n){
        $ck=substr($Nome,$n,1);
        for ($m=0; $m<strlen($sign); ++$m){
            if ($ck == substr($sign,$m,1)){
            echo "Seu Nome parece estar errado!.";Exit;}}}}
?>
Ver Índice