Você não está conectado. Conecte-se ou registre-se

PHP Intermediário.

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1icon1 PHP Intermediário. em Sex Maio 04, 2012 4:35 am

TecH

avatar
Administrador
Administrador

Definindo funções


A sintaxe básica para definir uma função é:

function nome_da_função([arg1, arg2, arg3]) {
Comandos;
... ;
[return ];
}


Qualquer código PHP válido pode estar contido no interior de uma função. O tipo devolvido não deve ser declarado, sendo necessário que o programador esteja atento para que a função devolva o tipo desejado. É recomendável que esteja tudo bem documentado para facilitar a leitura e compreensão do código. Para efeito de documentação, utiliza-se o seguinte formato de declaração de função:

tipo function nome_da_funcao(tipo arg1, tipo arg2, ...);

Este formato só deve ser utilizado na documentação do script, pois o PHP não aceita a declaração de tipos. Isso significa que em muitos casos o programador deve estar atento aos tipos dos valores passados como parâmetros, pois se não for passado o tipo esperado não é emitido nenhum alerta pelo interpretador PHP, já que este não testa os tipos.

Valor de retorno

Toda a função pode opcionalmente devolver um valor, ou simplesmente executar os comandos e não devolver nenhum valor.
Não é possível que uma função devolva mais do que um valor, mas é permitido fazer com que uma função devolva um valor composto, como listas ou arrays.

Argumentos

É possível passar argumentos para uma função. Devem ser declarados logo após o nome da função, entre parênteses, e tornam-se variáveis locais da função. A declaração do tipo de cada argumento também é utilizada apenas para efeito de comentário.

Exemplo:

function imprime($texto){
echo $texto;
}

imprime("teste de funções");

Passagem de parâmetros por referência

Normalmente, a passagem de parâmetros em PHP é feita por valor, ou seja, se o conteúdo da variável for alterado, essa alteração não afeta a variável original.

Exemplo:

function mais5($numero) {
$numero += 5;
}

$a = 3;
mais5($a); //$a continua a valer 3

No exemplo acima, como a passagem de parâmetros é por valor, a função mais5 é inútil, já que após a execução sair da função o valor anterior da variável é recuperado. Se a passagem de valor fosse feita por referência, a variável $a teria 8 como valor. O que ocorre normalmente é que ao ser chamada uma função, o interpretador salva os conteúdos das variáveis. Se uma dessas variáveis for passada como parâmetro, o seu conteúdo fica preservado, pois a função irá trabalhar na verdade com uma cópia da variável. Porém, se a passagem de parâmetros for feita por referência, toda alteração que a função realizar no valor passado como parâmetro afetará a variável que o contém.
Há duas maneiras de fazer com que uma função tenha parâmetros passados por referência:indicando isso na declaração da função, o que faz com que a passagem de parâmetros seja sempre assim;e também na própria chamada da função. Nos dois casos utiliza-se o modificador "&". Vejamos um exemplo que ilustra os dois casos:

function mais5(&$num1, $num2) {
$num1 += 5;
$num2 += 5;
}

$a = $b = 1;
mais5($a, $b);

Neste caso, só $num1 terá seu valor alterado, pois a passagem por referência está definida na declaração da função.


mais5($a, &$b);

Aqui as duas variáveis terão seus valores alterados.


Argumentos com valores pré-definidos (default)

Em PHP é possível ter valores default para argumentos de funções, ou seja, valores que serão assumidos no caso de nada ser passado no lugar do argumento. Quando algum parâmetro é declarado desta maneira, a passagem do mesmo na chamada da função torna-se opcional.

function teste($vivas = "testando") {
echo $vivas;
}

teste(); // imprime "testando"
teste("outro teste"); // imprime "outro teste"


Quando a função tem mais do que um parâmetro, o que tem valor default deve ser declarado em último:

function teste($figura = circulo, $cor) {
echo "a figura é um ", $figura, " de cor " $cor;
}

teste(azul);

A função não vai funcionar da maneira esperada, ocorrendo um erro no interpretador. A declaração correcta é:

function teste2($cor, $figura = circulo) {
echo "a figura é um ", $figura, " de cor " $cor;
}

teste2(azul);


Aqui a funcao funciona da maneira esperada, ou seja, imprime o texto: "a figura é um círculo de cor azul"

Contexto

O contexto é o conjunto de variáveis e seus respectivos valores num determinado ponto do programa. Na chamada de uma função, ao iniciar a execução do bloco que contém a implementação da mesma é criado um novo contexto, contendo as variáveis declaradas dentro do bloco, ou seja, todas as variáveis utilizadas dentro daquele bloco serão eliminadas no final da execução da função.


Escopo

O escopo de uma variável em PHP define a porção do programa onde ela pode ser utilizada. Na maioria dos casos todas as variáveis têm escopo global. Entretanto, em funções definidas pelo utilizador um escopo local é criado. Uma variável de escopo global não pode ser utilizada no interior de uma função sem que haja uma declaração.
Exemplo:

$vivas = "Testando";

function Teste() {
echo $vivas;
}

Teste();

O codigo acima não produzirá saída alguma, pois a variável $vivas é de escopo global, e não pode ser referida num escopo local, mesmo que não haja outra com nome igual que tape a sua visibilidade. Para que o script funcione da forma desejada, a variável global a ser utilizada deve ser declarada.
Exemplo:

$vivas = "Testando";

function Teste() {
global $vivas;
echo $vivas;
}

Teste();

Uma declaração "global" pode conter várias variáveis, separadas por vírgulas. Uma outra maneira de aceder a variáveis globais dentro de uma função é utilizar um array pré-definido pelo PHP cujo nome é $GLOBALS. O índice para a variável referida é o proprio nome da variável, sem o caracter $. O exemplo acima e o abaixo produzem o mesmo resultado:

Exemplo:
$vivas = "Testando";

function Teste() {
echo $GLOBALS["vivas"]; // imprime $vivas
echo $vivas; // não imprime nada
}


Teste();



Modificador static


Uma variável estática é visível num escopo local, mas é inicializada apenas uma vez e seu valor não é perdido quando a execução do script deixa esse escopo. Veja o seguinte exemplo:

function Teste() {
$a = 0;
echo $a;
$a++;
}


O último comando da função é inútil, pois assim que for encerrada a execução da função a variável $a perde o seu valor. Já no exemplo seguinte, a cada chamada da função a variável $a terá o seu valor impresso e será incrementado:

function Teste() {
static $a = 0;
echo $a;
$a++;
}


O modificador static é muito utilizado em funções recursivas, já que o valor de algumas variáveis precisa ser mantido. Ele funciona da seguinte forma: O valor das variáveis declaradas como estáticas é mantido ao terminar a execução da função. Na próxima execução da função, ao encontrar novamente a declaração com static, o valor da variável é recuperado.
Noutras palavras, uma variável declarada como static tem o mesmo "tempo de vida" que uma variável global, porém a sua visibilidade é restrita ao escopo local em que foi declarada e só é recuperada após a declaração.

Exemplo:

function Teste() {
echo "$a";
static $a = 0;
$a++;
}


O exemplo acima não produzirá saída alguma. Na primeira execução da função, a impressão ocorre antes da atribuição de um valor à função, e portanto o conteúdo de $a é nulo (string vazia). Nas execuções seguintes da função Teste() a impressão ocorre antes da recuperação do valor de $a, e portanto nesse momento o seu valor ainda é nulo. Para que a função retorne algum valor o modificador static deve ser utilizado.


Variáveis Variáveis



O PHP tem um recurso conhecido como variáveis variáveis, que consiste em variáveis cujos nomes também são variáveis. Sua utilização é feita através do duplo cifrão ($$).

$a = "teste";
$$a = "Mauricio Vivas";


O exemplo acima é equivalente ao seguinte:

$a = "teste";
$teste = "Mauricio Vivas";

Variáveis enviadas pelo browser


Para interagir com a navegação feita pelo utilizador, é necessário que o PHP possa enviar e receber informações para o browser. A maneira de enviar informações, como já foi visto anteriormente, geralmente é através de um comando de impressão, como o echo. Para receber informações vindas do browser através de um link ou um formulário html o PHP utiliza as informações enviadas através do URL. Por exemplo: se um script php está localizado em "http://localhost/teste.php3" e é chamado com a url "http://localhost/teste.php3?vivas=teste", automaticamente o PHP criará uma variável com o nome $vivas contendo a string "teste". Note que o conteúdo da variável está no formato urlencode. Os formulários html já enviam informações automaticamente nesse formato, e o PHP descodifica sem necessitar de qulquer tratamento por parte do programador.

URLencode

O formato urlencode é obtido substituindo os espaços pelo caracter "+" e todos os outros caracteres não alfa-numéricos (com exceção de "_") pelo caracter "%" seguido do código ASCII em hexadecimal.

Por exemplo: o texto "Testar 1 2 3 !!" em urlencode fica "Testar+1+2+3+%21%21"

O PHP possui duas funções para tratar o texto em urlencode. Seguem as suas sintaxes:

string urlencode(string texto);
string urldecode(string texto);

Essas funções servem respectivamente para codificar ou decodificar um texto passado como argumento. Para entender melhor o que é um argumento e como funciona uma função, leia o tópico "funções".

Variáveis de ambiente


O PHP possui diversas variáveis de ambiente, como a $PHP_SELF, por exemplo, que contém o nome e o path do próprio ficheiro. Algumas outras contém informações sobre o browser do utilizador, o servidor http, a versão do PHP e diversas informações. Para ter uma listagem de todas as variáveis e constantes de ambiente e seus respectivos conteúdos, deve-se utilizar a função phpinfo().

Verificando o tipo de uma variável

Por causa da atribuição dinâmica do tipo, utilizada pelo PHP, nem sempre é possível saber qual o tipo de uma variável em determinado instante se não contar com a ajuda de algumas funções que permitem verificar isso. A verificação pode ser feita de duas maneiras:
Função que retorna o tipo da variável

Esta função é a gettype. A sua sintaxe é a seguinte:

string gettype(mixed var);

A palavra "mixed" indica que a variável var pode ser de diversos tipos.
A função gettype pode devolver as seguintes strings: "integer", "double", "string", "array", "object" e "unknown type".


Funções que testam o tipo da variável

São as funções is_int, is_integer, is_real, is_long, is_float, is_string, is_array e is_object. Todas têm o mesmo formato, seguindo a sintaxe:

int is_integer(mixed var);

Todas estas funções devolvem true se a variável for daquele tipo, e false em caso contrário.


Destruir uma variável

É possível desalocar uma variável, se ela não for usada posteriormente, através da função unset, que tem a seguinte sintaxe:
int unset(mixed var);

A função destrói a variável, ou seja, liberta a memória ocupada por ela, fazendo com que ela deixe de existir. Se mais á frente a variável for chamada, será criada uma nova variável do mesmo nome e de conteúdo vazio, a não ser que a chamada seja pela função isset. Se a operação for bem sucedida, retorna true.


Verificar se uma variável possui um valor


Existem dois tipos de teste que podem ser feitos para verificar se uma variável tem um valor: com a função isset e com a função empty.

A função isset

Possui a seguinte sintaxe:

int isset(mixed var);

E retorna true se a variável estiver preenchida (ainda que com uma string vazia ou o valor zero), e false em caso contrário.

A função empty

Possui a seguinte sintaxe:

int empty(mixed var);

E retorna true se a variável não contiver um valor (não estiver preenchida) ou possui valor 0 (zero) ou uma string vazia. Caso contrário, retorna false.

Fonte: [Você precisa estar registrado e conectado para ver este link.]

http://high-tech.livreforum.com

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum