Manejando funciones
Las funciones PHP definidas por el usuario tienen la siguiente sintaxis:
function nombre(){
.....
...instrucciones...
... funciones PHP...
}
Es imprescindible respetar estrictamente la sintaxis:
function,
() y escribir dentro de las llaves el código correspondiente a esa función.
Las funciones PHP
no se ejecutan en tanto y cuanto no sean
invocadas.
Fíjate en el primero de los ejemplos. Nos devuelve una
página en blanco porque pese a estar definida la función
no es invocada.
Para
invocar una función la sintaxis es esta:
nombre()
Al ser
llamada con esta sintaxis, se
ejecutan las intrucciones contenidas en la función.
Aunque el versiones anteriores de PHP era necesario
definir la función antes de invocarla, a partir de la versión 4
no es necesaria esa organización secuencial.
La función y la llamada pueden estar escritas en cualquier parte del documento. En el tercero de los ejemplos, la llamada a la función
está escrita antes de definir la función.
Utilizando valores externos
Si se invoca una variable -definida previamente- desde una función tomará
valor NULO.
Recuerda que cuando estudiamos las
variables PHP veíamos que se excluian las funciones del ámbito de las variables, salvo que, se asignara a las mismas
ambito global dentro de la propia función.
En la
function a1() del ejemplo, puedes comprobar este extremo y en la
function a2() puedes comprobar como asignado
ámbito global SI toma los valores de esa variable.
Una de las formas de asignar valores a las variables internas es
definir variables y valores dentro del
paréntesis que va detrás de
function nombre, así por ejemplo:
function p1($a=2,$b=5)
Esos valores - 2 y 5 - serían utilizado por la función
independientemente de que las variables
$a y/o
$b pudieran contener otros distintos en el ámbito externo de la función.
Otra forma de asignación de valores a las variables internas de una función es
pasar los parámetros por valor. Para hacerlo la sintaxis es la siguiente:
En la definición de la función
deben incluirse tantas variables como valores distintos pretendan pasarse. Por ejemplo:
function p1($a,$b)
prepararía la función para recibir
dos valores pero
requeriría que además, en la
llamada a la función se
escribieran esos
dos valores separados por comas. Por ejemplo:
p1(47,-32)
Una variante del ejemplo anterior, sería sustituir -en la llamada a la función- las constantes por variables predefinidas tal como puede verse en la función
a5 de los ejemplos.
Pasando parámetros por referencia
Tal como estamos viendo, por defecto las funciones PHP pueden recibir
valores de variables externas y utilizar esos
valores sin que el valor original de la variable sufra modificación.
Una manera de
forzar que la función
modifique los
valores externos de la variable es lo que se llama en
argot «pasar por referencia»
La manera de hacerlo es esta:
Hay que
anteponer al nombre de la variable el símbolo
& y PHP intepretará que la estamos
pasando por referencia.
El
& puede anteponerse tanto en
la definición de la función -fíjate en la función
a2 del
ejemplo 61 - como en
la llamada a la función, tal como puedes ver en el caso de
a3 en el ejemplo anterior.
La segunda de las opciones
nos concede mayor libertad ya que nos permite usar una sola función y decidir en las
llamadas la forma de pasar los parámetros, con lo cual una misma función puede ser llamada tanto por
valores como por
referencia.
¡¡Cuidado...!!
Si tratas de ejecutar
una función en la que colocas el
& en la
llamada a la función y lo haces en
tu servidor local con la configuración del PHP que yo te he contado, te aparecerá un mensaje como este:
Warning: Call-time pass-by-reference has been deprecated -argument passed by value; If you would like to pass it by reference, modify the declaration of a3(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file.
La solución la tienes aquí a la derecha...
?Serás capaz de decir que no me preocupo por tí...? :-)