49 Php. Funciones De Usuario

908 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

49 Php. Funciones De Usuario

  1. 1. Funciones de usuario ¿Qué son las Funciones de usuario funciones de usuario? Imaginémonos, allá por el mes de junio, sentados ante una mesa tratando de hacer la declaración de la renta. Para ese menester seguramente nos pertrecharíamos –además del De igual forma que ocurre con el impreso oficial de la declaración– con: calculadora, lápiz, goma de borrar e incluso con las navegador en el caso del HTML, disposiciones legales relativas al impuesto. PHP lee e interpreta las instrucciones contenidas en los Seguramente iríamos leyendo y cumplimentando el impreso oficial –script PHP– scripts de forma secuencial. partiendo de la primera página –orden secuencial– y continuando de forma ordenada hasta el final. Es decir, las instrucciones se van ejecutando en el mismo orden en La calculadora, la goma, etcétera –funciones– estarían disponibles para ser utilizadas – el que aparecen en el documento original, con la excepción de las invocadas– tantas veces como fuera preciso y, además, no serían elementos exclusivos funciones. de ese documento, sino que seguirían disponibles para otros usos –scripts– distintos, tales como la planificación financiera de nuestras vacaciones, por citar un ejemplo. En este caso, los bloques de instrucciones son puestos a Las funciones de usuario son, como la calculadora o la goma, herramientas disposición de PHP, pero no se diseñadas para facilitar las tareas y susceptibles de ser usadas en una o varias situaciones – ejecutarán hasta el momento en scripts– diferentes. que sean requeridas de forma expresa. Ejemplos de funciones de usuario ¿Dónde Con este primer ejemplo obtendremos una página en blanco. El script contiene una deben insertarse? función pero no hay ninguna instrucción que la invoque y por lo tanto no se ejecutaría. Aunque en versiones antiguas de <? PHP era necesario definir la function a1(){ función antes de invocarla, a partir de la versión 4 no es necesaria for($i=1;$i<=10;$i++){ esa organización secuencial. echo $i,"<br>"; } La función pueden estar escrita dentro de cualquier script y en } cualquier parte del documento, sin ?> que tenga importancia alguna el lugar en el que se incluya la llamada a la misma. ejemplo64.php También es posible –y bastante habitual– incluir funciones de uso <? frecuente en documentos externos a1(); de modo que pueden ser ?> compartidas. <!-- Hemos escrito un script con una llamada En este caso, además de invocarla a la función a1 que aún no está definida. es necesario indicar a PHP el lugar Tendremos que hacerlo, pero no importa donde debe buscarla. Hablaremos la parte del documento en la que lo hagamos de ello cuando estudiemos lo La pondremos en este nuevo script PHP //--> relativo a include. <? function a1(){ Definición de la función for($i=1;$i<=10;$i++){ echo $i,"<br>"; Las funciones de usuario requieren } la siguiente sintaxis: } function nombre(){ ?> ..... ... instrucciones ... ..... ejemplo65.php } Es imprescindible respetar En este otro ejemplo veremos las diversas situaciones que pueden plantearse respecto estrictamente la sintaxis que al ámbito de las variables. requiere de forma obligatoria los siguientes elementos: <? – La palabra function debe estar # definamos dos variables y asignémosles un valor escrita en minúsculas. $a=5; $b=47; # escribamos una funcion a1 y pidámosle que imprima sus valores – El nombre de la función, que debe seguir criterios similares a los function a1(){ de los nombres de variables, echo "Este es el valor de $a en la función a1: ",$a,"<br>"; aunque en este caso no se antepone el símbolo $ ni ningún echo "Este es el valor de $b en la función a1: ",$b,"<br>"; otro. } # hagamos una llamada a la funcion anterior –Los paréntesis (), incluso cuando # no nos escribirá ningún valor porque esas variables no pertenecen no contengan nada. # al ámbito de la función y serán consideradas como vacias # en el ambito de la funcion – Las llaves de apertura ({) y a1(); cierre (}) dentro de las cuales se escribirán las instrucciones # escribamos una nueva función, definamos como global $a correspondientes a ella. # y comprobemos que ahora si la hemos incluido en el ambito # de la funcion function a2(){ Ejecución de la función global $a; echo "Este es el valor de $a en la función a2: ",$a,"<br>"; Las funciones PHP no se ejecutan echo "Este es el valor de $b en la función a2: ",$b,"<br>"; en tanto no sean invocadas. } # invoquemos esta nueva funcion y veamos que ahora Para invocar una función la # si se visualiza el valor de $a pero no el de $b sintaxis es la siguiente:
  2. 2. a2(); nombre() # creemos una nueva funcion y ahora modifiquemos dentro de ella Al ser llamada con esta sintaxis – # ambas variables desde cualquier script– se function a3(){ ejecutarán las instrucciones global $a; contenidas en ella. $a +=45; $b -=348; Ámbito de las variables echo "Este es nuevo valor de $a en la función a3: ",$a,"<br>"; echo "Este es el valor de $b en la función a3: ",$b,"<br>"; Resumamos lo ya comentado } cuando tratamos el tema de las # invoquemos la funcion a3 variables. a3(); – Las funciones no leen valores de # comprobemos -desde fuera del ámbito de la función variables definidas fuera de su # que ocurrió con los valores de las variables ámbito salvo que dentro de la echo "El valor de $a HA CAMBIADO despues de ejecutar a3 es: ",$a,"<br>"; propia función se definan de forma echo "El valor de $b NO HA CAMBIADO despues de ejecutar a3 es: ", expresa como globales. $b,"<br>"; # probemos que ocurre con una variable superglobal – Si una función modifica el valor # veremos que sin ser definida expresamente en a4 de una variable global, el nuevo valor persiste después de # si pertenece a su ambito y por lo tanto visualizamos su contenido abandonar la función. function a4(){ print "La superglobales si están: ".$_SERVER['SERVER_NAME']."<br>"; – Si dentro de una función se } utiliza un nombre de variable # invoquemos esta nueva funcion idéntico al de otra externa a ella a4(); (sin definirla global) la nueva ?> variable se inicia con valor nulo y los eventuales valores que pudiera ir conteniendo se pierden en el ejemplo66.php momento en que se acaba su ejecución. Asignación de valores a <? $a=-13; $b=7482; $c="Ambrosio"; variables # esta es una forma alternativa de asignar valores a una variable A las variables no globales se les # del ambito de la función pueden asignar sus valores function a1($a=56, $b=25){ iniciales de dos formas: echo "El valor de $$a en la función a1: ", $a,"<br>"; echo "El valor de $$b en la función a1: ", $b,"<br>"; • Incluyéndolas en una línea de } instrucciones contenida en la a1(); propia función. echo "El valor de $a despues de ejecutar la función es: ",$a,"<br><br>"; • Insertando los nombres de variable y sus valores dentro del paréntesis que –de forma obligatoria– debe seguir al nombre # Pasando valores desde la llamada a la función # de la función. En este caso la /* Definamos una función fun1 e incluyamos dentro de su paréntesis sintaxis sería: nombres de variables, separados por comas pero ahora sin asignarles ningún valor */ function nom ($a=v1,$b=v2) function fun1($x,$y,$z){ donde $a y $b son nombres de print "Valor de la variable x: ".$x."<br>"; variables a utilizar en el ámbito de print "Valor de la variable y: ".$y."<br>"; la función y v1 y v2 los valores print "Valor de la variable z: ".$z."<br>"; asignados a cada una de ellas. } En este paréntesis pueden incluirse –separándolas con comas– cuantas parejas var = val sean necesarias. # debemos hacer la llamada a la función pero ahora # lo haremos de forma distinta. • Una forma alternativa a la # Vamos a incluir en la llamada anterior sería la siguiente: # los valores que queremos asignar a las variables de la función # Escribiremos dentro del paréntesis de la llamada function nom ($a,$b) # los valores de cada una de las tres variables donde habría que asignar los # separados por comas valores de cada una de la variables # (si se trata de una cadena, pongámosla entre comillas) desde la llamada a la función, que # y veremos con la función recoge esos valores asignados ahora tendría esta sintaxis: #en la llamada nombre (valor1, valor2,...); fun1(14,"Robustiano",23.4); /* si esta llamada contuviera más de tres valores en la que se escriben los valores separados por comas, y los ultimos serian ignorados */ encerrados entre comillas cuando fun1(49.3,"Eustaquio",78,"Lupicio",456); se trata de variables alfanuméricas. # si contuviera menos de tres valores # PHP nos daría un mensaje de error Si el número de valores contenidos # advirtiendo que falta un valor en la llamada fuera mayor que el # pero nos devolvería los valores número de variables definidas en fun1("Desiderio","Bailador"); la función, los excedentes serían ignorados y, si fuera inferior, se # esos mensajes de error podríamos evitarlos asignaría valor nulo a las variables a las que no se transfiriera ningún # poniendo una arroba delante de la llamada a la función valor. @fun1("Nuevo Desiderio","Nuevo Bailador"); • También es posible incluir en la llamada a la función los nombres # tambien podría utilizarse una sintaxis como esta de algunas variables definidas en # en la que dejamos en blanco (entre comillas) el ámbito externo a la función. Se # el espacio correspondiente al segundo valor haría de la siguiente forma: # aunque si incluimos las comas. nombre ($var1, var2,...); # La variable que ocupa esa posición # sería considerada como nula fun1("La luna",'',"verde"); Pasar por referencia # también podríamos incluir en la llamada nombres de variables Tal como hemos visto, las # definidas en el ámbito general del sript
  3. 3. # un este caso la función usaria esos valores funciones PHP pueden recibir valores de variables externas y utilizar esos valores sin que el fun1($a,$b,$c); valor original de las mismas –salvo que se les asigne la condición de ?> globales dentro de la función– sufra modificación. ejemplo67.php Una manera de lograr que los valores una variable externa puedan ser modificados por una <? $a=3; $b=2; función, es lo que se llama en function a1(&$a,$b){ argot informático «pasar variables $a=pow($a,2); por referencia». $b=pow($b,3); La forma de hacerlo es esta: echo "El cuadrado de a dentro de la función es: ",$a, "<br>"; echo "El cubo de b dentro de la función es: ",$b, "<br><br>"; Hay que anteponer al nombre de } la variable el símbolo & y PHP interpretará que la estamos a1($a,$b); pasando por referencia. El & puede anteponerse tanto en echo "Al salir de la función a conserva la modificación: ",$a, "<br>"; la definición de la función como en echo "Por el contrario, b no la conserva: ",$b, "<br><br>"; la llamada a la función, tal como puedes ver en el ejemplo. $c=8; $d=12; function b1($a,$b){ La segunda de las opciones nos $a=pow($a,2); concede mayor libertad dado que $b=pow($b,3); permite usar una sola función y echo "El cuadrado de a dentro de la función es: ",$a, "<br>"; decidir en cada llamada la forma echo "El cubo de b dentro de la función es: ",$b, "<br><br>"; de pasar los parámetros. } ¡Cuidado! b1(&$c,$d); Si tratas de ejecutar una función en la que colocas el & en la echo "Al salir de la función c conserva la modificación: ",$c, "<br>"; llamada a la función y te aparece echo "Por el contrario, d no la conserva: ",$d, "<br><br>"; 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 function (). If you would like to enable call- ejemplo68.php time pass-by-reference, you can set allow_call_time_pass_reference to Ejercicio nº 26 true in your INI file». lo que estará ocurriendo es que el En este ejercicio –ejercicio26.php– utilizaremos una función para construir tablas similares php.ini del servidor tiene a las que hemos construido en el ejercicio nº 23. Pero incorporaremos una innovación configurada en Off la directiva: respecto a aquel. Ahora la función debe permitir construir tablas de cualquier dimensión –nº de filas y/o columnas– y el número de estas habremos de incluirlo en la llamada a esa allow_call_time_pass_reference función. y eso suele ocurrir con algunos hostings y también con la configuración por defecto de Otras funciones de usuario algunas versiones de PHP anteriores a la que estamos <? function Encabezado() { ?> utilizando. <!-- Hemos abierto la función y cerrado la etiqueta PHP todo esto es código HTML //--> Otra forma de definir <HTML> funciones de usuario <HEAD> <TITLE>Titulo de mi página</TITLE></HEAD> Existe otra opción de definición de <BODY BGCOLOR="#FF0000"> funciones de usuario que puede <!-- Esta nueva llamada a PHP resultar de mucho interés. En este insertando la llave de cierre de la función caso la función se define en tres indicará a PHP que debe escribir todo lo bloques: contenido entre la { y esta } //--> <? } ?> – Definición de la función, llave de apertura y cierre del script PHP. <? function Pie() { ?> – Contenido de la función <HR> formado exclusivamente por </BODY> código HTML, que se escribiría </HTML> cuando fuera invocada la función <? } ?> que lo contiene. <!-- Utilizaremos esas dos funciones para crear una página web. Llamamos a la función Encabezado – Cierre de la función (llave de luego escribimos un texto y por ultimo insertamos cierre) contenido en un script PHP, es decir, entre las etiquetas de el Pie de página con la función Pie //--> apertura <? y cierre ?> de PHP. <? Encabezado(); ?> Este es texto que aparecerá en el cuerpo de la página. Cuando es invocada una función Está fuera de los scripts de php y será considerado definida de esta forma –puedes como un texto HTML. Debajo aparecerá la línea horizontal verlo en el ejemplo– PHP se limita que insertaremos mediante una nueva llamada a la función Pie a escribir en el documento final los textos contenidos entre la etiqueta <? Pie(); ?> de apertura y cierre de la función. Las funciones de esta forma son ejemplo68a.php particularmente útiles para la construcción de espacios web que contienen una serie de páginas en Anterior Indice Siguiente las que se repiten las mismas estructuras.

×