Funciones en PHP


 

                    Las funciones son fragmentos de código independientes, que pueden ser invocados desde otra parte del programa. La ventaja principal que tiene el uso de las funciones es que permite realizar un programa modular y no tener que repetir el código varias veces en distintas partes del programa, o inclusive, en otros programas.  Decir que  permite realizar un programa modular, significa que se puede realizar un programa en módulos independientes, es decir, fracciones de programa en los cuales cada uno cumple una misión específica, por lo tanto cada función debe tener una tarea bien determinada.
Un programa se dice que es estructurado, cuando es fragmentado en módulos que cumplan con una acción precisa.

Una función consta de un nombre y argumentos, llamados comúnmente parámetros.

Formato:

              function  Nombre_Funcion (parametro1, parametro2, ... parámetro n)
                  {
                     Instrucciones;
                     <return valor>  
                   }

Los parámetros son opcionales, ya sea que una función acepte o no valores, lo mismo que la instrucción return, dependiendo de que la función retorne algún valor o no.

Ejemplo Práctico 1:
                        Realizar una función que acepte dos números y devuelva el producto de ambos. Cargar los dos valores a través de un formulario.

<Html>
<TITLE> Producto.php  </TITLE>
<Body>
 <?PHP
     function Producto($a, $b)
       {
         $p = $a * $b;
         return $p;
       }

    // Programa principal
   
    if ( $_REQUEST['Boton'] != "" )
      {
        $V1 = $_REQUEST['Valor1'];
        $V2 = $_REQUEST['Valor2'];
        echo ("<H3>");
        echo (" El producto de $V1 y $V2 es: " . Producto($V1, $V2));
      }
      else
      {
      ?>
      <FORM ACTION="Producto.php" METHOD="POST">
      <H2>
      Ingrese Primer valor :
      <Input Type="Text" Name="Valor1" Size="5">
      <Br>
      Ingrese Segundo valor:
      <Input Type="Text" Name="Valor2" Size="5">
      <Br><Br>
      <Input Type="Submit" Name="Boton" Value="Ingresar Datos">
      </Form> 
      <?PHP
      } 
 ?>
</Body>
</Html>

Comentario:

Al cargarse la página, se visualiza el formulario para el ingreso de los dos valores, ya que al no haber sido presionado el Botón, la condición del if en el programa principal, es falsa.

Una vez cargado el formulario y presionado el botón "Ingresar Datos", la página se llama a sí misma y ahora la condición del if es verdadera, continuando el programa con la asignación de las variables $V1 y $V2, a través respectivamente de la instrucción $_REQUEST.
La línea: echo("<H3>"); únicamente ajusta el tamaño de la letra.
Para llamar a la función, se puede realizar de dos maneras, una sería asignándole el valor devuelto por la misma, a una variable y la otra es utilizarla directamente dentro de la sentencia echo o dentro de cualquier estructura. En este caso la función es llamada dentro de la impresión, concatenada con la leyenda correspondiente.
   Cuando es llamada la función, se verifica en primera instancia, si la cantidad de parámetros que tiene la definición coincide con la cantidad de parámetros de la llamada. En caso de coincidir, realiza la transferencia de contenidos de variables, en este caso, el contenido de la variable $V1 es enviado a la variable $a y el contenido de la variable $V2, es enviado a la variable $b, es decir que la transferencia se realiza en el orden en la cual se encuentran.
Una vez transferidos los valores, el programa continúa ejecutando las instrucciones dentro de la función, en este caso se calcula el producto y se lo asigna a la variable $p.
Por último, por medio de la instrucción return se retorna el valor contenido en la variable $p al programa principal dentro de la instrucción echo, terminando la ejecución del programa.

Nota: Las variables $a y $b, son locales a la función, fuera de ella, no existen, además, en este caso, el paso de parámetros, es decir, los valores enviados a la función a las variables $a y $b, se denominan paso por Valor, y significa que si se cambia el valor del argumento dentro de la función, no afectará a las variables fuera de ellas. Por lo tanto, si dentro de la función, se cambiara el contenido de la variable $a o $b, no causará ningún cambio en las variables $V1 y $V2.


Ejemplo Práctico 2:
                        Realizar una función que permita determinar si un número pasado como parámetro, es par o impar.

<Html>
<TITLE> Par.php  </TITLE>
<Body>
 <?PHP
     function Par($n)
       {
         if ($n % 2 == 0)
            return true;
          else
            return false;
       }

     // Programa principal
   
    if ( $_REQUEST['Boton'] != "" )
      {
        $V = $_REQUEST['Valor'];
        echo ("<H2>");
        echo (" El valor $V es: ");
        if (Par($V))
           echo ("Par");
          else
           echo ("Impar");
      }
      else
      {
      ?>
      <FORM ACTION="Par.php" METHOD="POST">
      <H3>
      Ingrese un valor :
      <Input Type="Text" Name="Valor" Size="5">
      <Br><Br>
      <Input Type="Submit" Name="Boton" Value="Ingresar Dato">
      </Form> 
      <?PHP
      } 
 ?>
</Body>
</Html>

Comentario:
Se observa que en este caso, que la función devuelve un tipo Boolean, es decir true o false, según corresponda. En el programa principal, la función es llamada directamente dentro de la estructura if. Observar además, que no hace falta colocar  == true, ya que lo toma por defecto.

 

Ejemplo Práctico 3:

Realizar una función que acepte un número, y retorne la suma de todos los números inferiores a él, incluido dicho número.
Si el número ingresado es 5, deberá devolver: 1+2+3+4+5

<Html>
<TITLE> Suma.php </TITLE>
<Body>
<?PHP
   function Suma($n)
       {
         $s=0;
         for ($i=1; $i<=$n; $i++)
            {
               $s=$s+$i;
            }
           return $s;
       }

// Programa principal

if ( $_REQUEST['Boton'] != "" )
 {
    $V = $_REQUEST['Valor'];
    echo ("<H2>");
    echo (" El valor de la suma de los inferiores a $V es: ");
    $Resultado = Suma($V);
    echo ($Resultado) ;
 }
  else
  {
  ?>
   <FORM ACTION="Suma.php" METHOD="POST">
   <H2>
   Ingrese un valor :
   <Input Type="Text" Name="Valor" Size="5">
   <Br><Br>
   <Input Type="Submit" Name="Boton" Value="Ingresar Dato">
   </Form> 
   <?PHP
  } 
?>
</Body>
</Html>

Comentario:

Aquí el valor devuelto por la función es asignado a la variable $Resultado y luego se imprime. También se la podría haber involucrado dentro de la instrucción echo.

Por defecto, todos los parámetros pasados a las funciones son por valor, en cambio si se necesitaran que los parámetros enviados a la función, modifiquen su valor, se deberían pasar por referencia, esto se logra anteponiendo un & (ampersand) delante del parámetro que se desea pasar por referencia.


Ejemplo Páctico 4: 
Desarrollar una función que acepte una cadena de caracteres y la convierta en mayúscula.

<Html>
<TITLE>  Mayuscula.php  </TITLE>
<Body>
 <?PHP
   function Mayuscula( &$cadena )
    {
     $cadena = strtoupper($cadena);
    }

    // Programa principal
   
    if ( $_REQUEST['Boton'] != "" )
      {
        $N = $_REQUEST['Nombre'];
        Mayuscula($N);
        echo ("<H2>");
        echo ("El nombre en mayuscula es es: " . $N);
      }
      else
      {
      ?>
      <FORM ACTION="Mayuscula.php" METHOD="POST">
      <H2>
      Ingrese Apellido y Nombre :
      <Input Type="Text" Name="Nombre" Size="40">
      <Br><Br>
      <Input Type="Submit" Name="Boton" Value="Ingresar Dato">
      </Form> 
      <?PHP
      } 
 ?>
</Body>
</Html>
                              
Ejemplo Práctico 5:  
                     Realizar una función que acepte el lado de un cuadrado y  calcule su perímetro y su superficie (No imprimir dentro de la función).

<Html>
<TITLE> Cuadrado.php </TITLE>
<Body>
 <?PHP
  function Calcular( $Lado, &$Perimetro, &$Superficie )
      {
         $Perimetro = $Lado * 4;
         $Superficie = $Lado * $Lado;
      }
// Programa principal
      if ( $_REQUEST['Boton'] != "" )
        {
          $P=0; $S=0;
          $L = $_REQUEST['Lado'];
          Calcular($L, $P, $S);
          echo ("El valor del perímetro es: $P");
          echo ("<Br>");
          echo ("El valor de la superficie es: $S");
         }
       else
        {
       ?>
    <FORM ACTION="Cuadrado.php" METHOD="POST">
     <H2>
     Ingrese El valor del Lado de un Cuadrado :
     <Input Type="Text" Name="Lado" Size="5">
     <Br><Br>
     <Input Type="Submit" Name="Boton" Value="Ingresar Dato">
     </Form>
     <?PHP
      } 
?>
</Body>
</Html>

Comentario:

En este caso, cuando se llama a la función Calcular, se lo realiza utilizando  la variable $L como parámetro valor, ya que no cambia su valor, y las variables  $P y $S  se las especifica como parámetro por referencia, esto se consigue anteponiendo el símbolo & a las variables Perimetro y Superficie, porque es necesario que cambien sus valores de acuerdo con el cálculo requerido.

Se reitera que: PHP individualiza a una variable que es por referencia cuando contiene el símbolo &(ampersand) delante de la variable.