PHP Funcións

De MediaWiki
Ir a la navegación Ir a la búsqueda

Funcións definidas polo usuario

  • Unha función é un conxunto de instrucións que se executan ao ser 'chamada' ou 'invocada' a función a través do seu nome.
  • Unha función pode (é optativo) levar parámetros que veñen ser variables cuxos valores son utilizados dentro da función.
  • Sintaxe:
1 <?php
2 function exemplo($arg_1, $arg_2, /* ..., */ $arg_n)
3 {
4     echo "Función de exemplo.\n";
5     return $valor_devolto;
6 }
7 ?>
  • Como vemos unha función vai poder devolver un valor o cal pode ser utilizado polo código que a chama.
  • Os nomes das funcións seguen as mesmas regras que as demais etiquetas de PHP. Un nome de función válido comeza cunha letra ou guión baixo, seguido de calquera número de letras, números ou guións baixos.
  • Vexamos un exemplo dunha función que devolve a suma de dous números pasados como parámetros:
 1 <?php
 2     function sumarNumeros($val1,$val2){
 3         return $val1+$val2;
 4     }
 5 ?>
 6 
 7     <body>
 8         <?php
 9             $num1=5;
10             $num2=10;
11             
12             printf("Suma dos números:%d", sumarNumeros($num1, $num2));
13             echo "<br/>";
14             if (sumarNumeros($num1, $num2)>10){
15                 echo "A suma da mais que 10...";
16             }
17         ?>
Fixarse como na liña 13 amosamos o resultado da chamada á función e na liña 15 utilizamos a función como unha expresión dentro da cláusula if.
Dará como resultado:
Suma dos números:15
A suma da mais que 10...
Como norma xeral definiremos a función antes da súa chamada (eu as poño antes da etiqueta <body>). Isto só é necesario se definimos unha función como resultado dunha condición (poderíamos definir unha función dentro dun if).


  • Unha función pode devolver calquera tipo de dato, como pode ser boolean, e utilizalas como parte dunha condición:
 1 <?php
 2     /* 
 3      * Función que devolve true se $val1 > $val2 e os dous son positivos
 4      */
 5     function eMaior($val1,$val2){
 6         if ($val1<0 || $val2<0 || $val1>$val2){
 7             return false;
 8         }
 9         return true;
10     }
11 ?>
12     <body>
13         <?php
14             $num1=5;
15             $num2=10;
16        
17             if (eMaior($num1, $num2)){
18                 echo '$num1 é maior que $num2 e ademaís son positivos';
19             }
20             
21         ?>


Dará como resultado:
$num1 é maior que $num2 e ademaís son positivos


OBRIGATORIO: Sempre que cremos unha función será obrigatorio describir (en forma de comentario enriba da definición da función) o seu cometido e explicar a función dos parámetros.

Acceder a variables definidas 'fora' da función

  • Se temos definidas variables definidas fora da función necesitaremos facer uso:
  • Ou da palabra reservada global dentro da función
  • Ou do array $GLOBALS['variable']
Para poder acceder ao seu valor.

Paso de parámetros por valor / referencia

  • Xa vimos cando estudamos as variables globais, que dentro dunha función as variables son locais a ela. Quere isto dicir que as modificacións que fagamos sobre as variables non afectan a esas variables fora da función.
  • O mesmo pasa cos parámetros.
Por defecto, a modificación do valor dun parámetro dentro dunha función non vai afectar ao valor da variable que se usou para chamar á función.
  • Vexamos un exemplo:
 1 <?php
 2     /* 
 3      * Función que concantena un texto co nome da moeda a un prezo
 4      * Parámetros:
 5      *    $cadea: prezo que se envía
 6      */
 7     function concatenaMoeda($cadea){
 8         $valor_local=' euros';
 9         $cadea = $cadea . $valor_local;
10         
11     }
12 ?>
13     <body>
14         <?php
15             $prezo=35.45;
16             concatenaMoeda($prezo);
17             
18             printf("Cadea \$prezo modificado:%s",$prezo);
19             
20         ?>


Dará como resultado:
Cadea $prezo modificado:35.45


  • Se queremos que ó modificar o valor do parámetro $cadea na función modificase o valor da variable $prezo teremos que pasalo por referencia.
Para iso debemos de definir o parámetro da función có símbolo &
  • Vexamos o exemplo anterior:
 1 <?php
 2     /* 
 3      * Función que concantena un texto co nome da moeda a un prezo
 4      */
 5     function concatenaMoeda(&$cadea){
 6         $valor_local=' euros';
 7         $cadea = $cadea . $valor_local;
 8         
 9     }
10 ?>
11     <body>
12         <?php
13             $prezo=35.45;
14             concatenaMoeda($prezo);
15             
16             printf("Cadea \$prezo modificado:%s",$prezo);
17             
18         ?>


Dará como resultado:
Cadea $prezo modificado:35.45 euros

Accedendo a elementos dun array devoltos dende funcións

  • Anteriormente á versión 5.4, se queremos acceder a un elemento dun array devolve por unha función tiñamos que facer isto:
1 <?php
2 function getArray() {
3     return array(1, 2, 3);
4 }
5 
6 $tmp = getArray();
7 $segundoElemento = $tmp[1];
8 ?>


A partires da versión 5.4 xa podemos facer isto:
1 <?php
2 function getArray() {
3     return array(1, 2, 3);
4 }
5 
6 // a partires de PHP 5.4
7 $segundoElemento = getArray()[1];
8 
9 ?>





-- Ángel D. Fernández González -- (2016).