martes, 8 de mayo de 2012

8. SESION: Funciones Definidas por Usuario

·         Sintaxis de Funciones Simples

Una de las herramientas mas importantes en cualquier lenguaje de programación son las funciones. Una función consiste en un conjunto de rutinas y acciones que a lo largo del script van a ser ejecutadas multitud de veces agrupados en una FUNCION y desde cualquier punto del script puede ser llamada y ejecutada. A su vez, esta función puede recibir parámetros externos de los cuales dependa el resultado de una función.

Las funciones deben ser colocadas siempre antes de realizar la llamada a la función (como es lógico). La sintaxis de una función es la siguiente:

function nombre(parámetros){
   instrucciones de la función
}
para llamar a la función sería de la siguiente forma: nombre(parámetros)

Un ejemplo para entender el uso de funciones es el siguiente:
Crearemos una función que realice la suma de dos números y muestre el resultado

function sumar($sumando1,$sumando2){
  $ suma=$sumando1+$sumando2
echo $sumando1."+".$sumando2."=".$suma;
}

sumar(5,6)

Un hecho relevante que cabe destacar es que las variables que declaremos dentro de la función solo existirán o tendrán dicho valor dentro de la función.

Existen casos en los cuales no sabemos el número de parámetros que le pasaremos a la función y en estos casos debemos usar las funciones creadas al efecto como son:

func_num_args() Numero de parámetros que se le han pasado a la función
func_get_args() Devuelve un elemento de los que forman la lista de argumentos

·         Funciones con Argumentos por Valor y Referencia

Retorno por Referencia

Una función también puede retornar una referencia de una variable que tenga en su ámbito, para lograr esto el operador &, debe estar presente en el nombre de la función y en la asignación.

Nota: para que los desconocen 'static', en el ámbito de funciones hace que la variable se inicialice en la primera invocación de la función.


Ejemplo:

Código :

<?php
   function &unaFuncion()
   {
      static $var =0;
      echo "var: ";
      var_dump($var);
      return $var;
   }

   $alias =& unaFuncion();

   echo "alias: ";
   var_dump($alias);
   $alias++;
   unaFuncion();
   echo "alias: ";
   var_dump($alias);
?>


Salida:

var: int(0);
alias: int(0);
var: int(1);
alias: int(1);


Parámetros por referencia

Los parámetros, es un poco 'diferente' que las funciones. Puesto que, el operador (&) puede estar en la definición del parámetro de la función, o en la invocación de la función y pasar una variable por referencia como parámetro.

Ejemplo:

Código :

<?php
   function miFuncion (&$a)
   {
      return ++$a; 
   }
   
   function otraFuncion ($a)
   {
      return ++$a;
   }
   
   $param = 0;
   echo 'miFuncion($param): '; 
   miFuncion($param);
   var_dump($param);
   
   $variable = 0;
   
   echo 'otraFuncion(&$variable): '; 
   otraFuncion(&$variable);
   var_dump($variable);
?>



Salida:
miFuncion($param): int(1)
otraFuncion($variable): int(1)


En verdad, no es que haya dos formas. Solo en la primera función (miFuncion) existe parámetro por referencia; en la segunda, en verdad, es como si hiciéramos $a =& $variable.

Nota: cuando un parámetro es definido por referencia, solo puedes pasarle variables, constantes NO. Así que miFuncion(1); provocaría un error fatal.

·         Incluir Archivos en PHP

o   Include

La sentencia include incluye y evalúa el archivo especificado.

La siguiente documentación también se aplica a require.

Los archivos son incluidos con base en la ruta de acceso dada o, si ninguna es dada, el include_path especificado. Si el archivo no se encuentra en el include_path, include finalmente verificará en el propio directorio del script que hace el llamado y en el directorio de trabajo actual, antes de fallar. El constructor include emitirá una advertencia si no puede encontrar un archivo, éste es un comportamiento diferente al de require, el cual emitirá un error fatal..

Si una ruta es definida — ya sea absoluta (comenzando con una letra de unidad o \ en Windows o / en sistemas Unix/Linux) o relativa al directorio actual (comenzando con . o ..) — el include_path será ignorado por completo. Por ejemplo, si un nombre de archivo comienza con ../, el interprete buscará en el directorio padre para encontrar el archivo solicitado.

Para más información sobre como PHP maneja la inclusión de archivos y la ruta de accesos para incluir, ver la documentación de include_path.

Cuando se incluye un archivo, el código que contiene hereda el ámbito de las variables de la línea en la cual ocurre la inclusión. Cualquier variable disponible en esa línea del archivo que hace el llamado, estará disponible en el archivo llamado, desde ese punto en adelante. Sin embargo, todas las funciones y clases definidas en el archivo incluido tienen el ámbito global.

Ejemplo #1 Ejemplo básico de include
vars.php
<?php

$color = 'verde';
$fruta = 'manzana';

?>

test.php
<?php

echo "Una $fruta $color"; // Una

include 'vars.php';

echo "Una $fruta $color"; // Una manzana verde

?>

Si la inclusión ocurre al interior de una función dentro del archivo que hace el llamado, entonces todo el código contenido en el archivo llamado se comportará como si hubiera sido definida dentro de esa función. Por lo tanto, seguirá el ámbito de las variables de esa función. Una excepción a esta regla son las constantes mágicas las cuales son evaluadas por el intérprete antes que ocurra la inclusión.

o   Require

require es idéntico a include excepto que en caso de fallo producirá un error fatal de nivel E_COMPILE_ERROR. En otras palabras, éste detiene el script mientras que include sólo emitirá una advertencia (E_WARNING) lo cual permite continuar el script.

No hay comentarios:

Publicar un comentario