Usuario:ManuelRomero/php/NewPHP/inaem 2018/funciones

Declaración de funciones

 * Es importante diferenciar entre declarar una función e invocar a una función
 * Algo obvio, pero importante
 * En la declaración tenemos tres partes
 * 1) nombre o identificación de funciones
 * 2) parámetros formales entre paréntesis (Estos han de existir, aunque no haya parámetros)
 * 3) Cuerpo de la función, dentro de él puede estar la instrucción return, en cuyo momento termina la ejecución de la función y se vuelve a la siguiente instrucción del programa, siguiente a la invocación de la función.


 * Identificador de función
 * El nombre de función es un identificador que empieza por una letra o guión bajo, seguido 0 o muchas letras, números o guiones bajos


 * Parámetros formales
 * Son nombres de variables que usaré al escribir el código o cuerpo de la función
 * El nombre ha de ser significativo y se convertirán en variables locales a la función
 * Una vez que se termina la función estas variables desaparecerán de memoria

Proceso de creación / invocación de una función

 * Lo primero es declarar una función
 * Esto implica dejar una zona de memoria identificada con el nombre de la función
 * En contenido de esas posiciones de memoria serán las acciones de la función
 * Estas acciones estarán establecidas no con valores reales, sino con los parámetros de la declaración
 * Estos parámetros se conocen como parámetros formales
 * Invocación de función
 * Es un tipo de instrucción, invocar a una acción o función.
 * lo primero que ocurrirá es que voy a esa zona de memoria
 * Lo siguiente es dar los valores reales (de la invocación) a los parámetros de la función (de la declaracion.
 * Una vez que la función termina de ejecutarse, se retornará a la instrucción siguiente de la invocación
 * Si la función devuelve algún valor, se recogerá y asignará a la variable de la instrucción de asignación desde la cual se invocó


 * Una posible solución

Parámetros formales: Valores y referencias

 * Cómo hemos visto, los parámetros formales son valores pasados en la invocación a la función
 * Si queremos que la función pueda modificar el valor de los valores de los parámetros, en este caso hemos de pasarlos por referencia
 * En este caso lo que ocurre en realidad es que pasamos la dirección de memoria dónde se guarda el valor.
 * La dirección de memoria, no la podremos visualizar ni operar con ella, pues en php no existe la aritmética de punteros o direcciones de memoria

Para pasar el parámetro por referencia, simplemente hay que poner el símbolo de dirección de memoria & antes del nombre de la variable en la declaración de parámetros
 * Parámetros formales: Valores y referencias


 * Invocando funciones
 * Una vez creada una función la podemos invocar como si fuera una instrucción del lenguaje
 * No sin razón en determinados ambientes se conoce a las funciones y procedimientos como instrucciones virtuales ...
 * En php puedo invocar a una función antes de declararla, siempre que la declare en el mismo fichero

Variables dentro de una función

 * Dentro de una función las variables que declaremos son locales a esa función.
 * No podré acceder a su valor fuera de la función
 * Esto también implica que dentro de una función no puedo acceder al valor de una variable definida fuera de la función
 * Observa el siguiente ejemplo
 * Vemos que genera la siguiente salida
 * Sin embargo si quieremos acceder al valor de $var  dentro de la función, sí que podemos
 * Ĥemos de usar la palabra reservada $global
 * Ahora podemos observar cómo sí que se accede al valor dentro de la función