Otras variables


Valores de las variables
                                      Variables estáticas

Cuando hablábamos de...
¿Cómo podríamos visualizar el
                                                                           ejemplo11.php
val...
Upcoming SlideShare
Loading in …5
×

17 Php. Otras Variables

398 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
398
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

17 Php. Otras Variables

  1. 1. Otras variables Valores de las variables Variables estáticas Cuando hablábamos de las <? variables, nos referíamos a su ámbito y comentábamos que las # Observa que hemos prescindido de los encabezados HTML. variables definidas dentro de una # No son imprescindibles para la ejecución de los scripts función pierden sus valores en el momento en el que abandonemos /* Escribamos una función y llamémosla sinEstaticas el ámbito de esa función, es decir, Definamos en ella dos variables sin ninguna otra especificación cuando finaliza su ejecución. e insertemos las instrucciones para que al ejecutarse se escriban los valores de esas variables */ Decíamos también que si el ámbito en el que hubiera sido definida fuera externo a una function sinEstaticas(){ función los valores sólo se perderían –temporalmente– # Pongamos aquí sus valores iniciales mientras durara la eventual $a=0; ejecución de las instrucciones de $b=0; aquella y que, una vez acabado ese proceso, volvían a recuperar # Imprimamos estos valores iniciales sus valores. Bajo estas condiciones, si echo "Valor inicial de $a: ",$a,"<br>"; invocáramos repetidamente la echo "Valor inicial de $b: ",$b,"<br>"; misma función obtendríamos cada vez el mismo resultado. /* Modifiquemos esos valores sumando 5 al valor de $a y restando 7 al valor de $b. Las posibles modificaciones que $a +=5 y $b -=7 serán quienes haga esas pudieran haberse efectuado (a nuevas asignaciones de valor través de las instrucciones ya lo iremos viendo, no te preocupes */ contenidas en la función) en el valor inicial de las variables, se perderían cada vez que $a +=5; abandonáramos la función con lo $b -=7; cual, si hiciéramos llamadas sucesivas, se repetirían tanto el # Visualicemos los nuevos valores de las variables valor inicial como el resultado. echo "Nuevo valor de $a: ",$a,"<br>"; echo "Nuevo valor de $b: ",$b,"<br>"; Variables estáticas } Para poder conservar el último # Escribamos ahora la misma función con una modificación que será valor de una variable definida # asignar la condición de estática a la variable $b dentro de una función basta con # Llamemos a esa función: conEstaticas definirla como estática. La instrucción que permite function conEstaticas(){ establecer una variable como estática es la siguiente: # Definimos $b como estática $a=0; static nombre = valor; static $b=0; P. ej: si la variable fuera $a y el valor inicial asignado fuera 3 echo "Valor inicial de $a: ",$a,"<br>"; escribiríamos: echo "Valor inicial de $b: ",$b,"<br>"; static $a=3; $a +=5; $b -=7; La variable conservará el último de los valores que pudo habérsele asignado durante la ejecución de echo "Nuevo valor de $a: ",$a,"<br>"; la función que la contiene. No echo "Nuevo valor de $b: ",$b,"<br>"; retomará el valor inicial hasta que se actualice la página. } # Insertemos un texto que nos ayude en el momento de la ejecución Variables de variables print ("Esta es la primera llamada a sinEstaticas()<br>"); Además del método habitual de asignación de nombres a las # Invoquemos la función sinEstaticas; variables -poner el signo $ delante de una palabra-, existe la sinEstaticas(); posibilidad de que tomen como nombre el valor de otra variable # Añadamos un nuevo comentario a la salida previamente definida. print ("Esta es la segunda llamada sinEstaticas()<br>"); print ("Debe dar el mismo resultado que la llamada anterior<br>"); La forma de hacerlo sería esta: # Invoquemos por segunda vez sinEstaticas; sinEstaticas(); $$nombre_variable_previa; Veamos un ejemplo. # Hagamos ahora lo mismo con la función conEstaticas Supongamos que tenemos una print ("Esta es la primera llamada a conEstaticas()<br>"); variable como esta: conEstaticas(); $color="verde"; Si ahora queremos definir una print ("Esta es la segunda llamada a conEstaticas()<br>"); nueva variable que utilice como print ("El resultado es distinto a la llamada anterior<br>"); nombre el valor (verde) que está contenido en la variable previa conEstaticas(); ($color), habríamos de poner algo como esto: ?> $$color="es horrible";
  2. 2. ¿Cómo podríamos visualizar el ejemplo11.php valor de esta nueva variable? Habría tres formas de escribir la Variables de variables instrucción: print $$color; <? o # Definamos una variable y asignémosle un valor print ${$color}; $color="rojo"; o también # Definamos ahora una nueva variable de nombre variable print $verde; # usando para ello la variable anterior $$color=" es mi color preferido"; Cualquiera de las instrucciones anteriores nos produciría la misma # Veamos impresos los contenidos de esas variables salida: es horrible. print ( "El color ".$color. $$color ."<br>"); Podemos preguntarnos ¿cómo se #o también justifica que existan dos sintaxis print ( "El color ".$color. ${$color}."<br>"); tan similares como $$color y # o también ${$color}? ¿Qué pintan las llaves?. print ( "El color ".$color. $rojo."<br>"); La utilización de las llaves es una # advirtamos lo que va a ocurrir al visualizar la página forma de evitar situaciones de interpretación confusa. print ("Las tres líneas anteriores deben decir lo mismo<br>"); Supongamos que las variables print ("Hemos invocado la misma variable de tres formas diferentes<BR>"); tienen un nombre un poco más raro. # cambiemos ahora el nombre del color Por ejemplo que $color no se llama $color="magenta"; así sino $color[3] (podría ser que $color fuera un array –una lista de colores– y que esta variable /* La variable $rojo seguirá existiendo. contuviera el tercero de ellos). El hecho de cambiar el valor a $color no significa que vayan a modificarse En este supuesto, al escribir: print las variables creadas con su color anterior $$color[3] cabría la duda de si el ni que se creen automáticamente variables número 3 pertenece (es un índice) que tengan por nombre el nuevo valor de $color */ a la variable $color o si ese número corresponde a $$color. # Pongamos un mensaje de advertencia para que sea visualizado en la Con print ${$color[3]} no habría salida lugar para esas dudas. Estaríamos aludiendo de forma inequívoca a 3 print ("Ahora la variable $color ha cambiado a magenta<br>"); como índice de la variable $color. print ("pero como no hemos creado ninguna variable con ese color<br>"); print ("en las lineas siguientes no aparecerá nada <br>"); ¿Qué ocurre cuando print ("detrás de la palabra magenta <br>"); la variable previa cambia de valor? # Escribimos los print advertidos Cuando la variable utilizada para print (" El color ".$color.$$color."<br>"); definir una variable de variable print (" El color ".$color.${$color}."<br>"); cambia de valor no se modifica ni el nombre de esta última ni # Comprobemos que la variable $rojo creada como variable de variable tampoco su valor. # cuando $color="rojo" aún existe y mantiene aquel valor Puedes ver este concepto, con un print ("Pese a que $color vale ahora ".$color."<br>"); poco más de detalle, en el código fuente del ejemplo. print ("la vieja variable $rojo sigue existiendo <br>"); print ("y conserva su valor. Es este: ".$rojo); La solución del ejercicio ?> Las diferencias que habrás podido observar al realizar el ejercicio nº7 están originadas por la interpretación que hacen PHP y el ejemplo12.php navegador de algunos caracteres especiales, tales como $, ", o <, que al ser interpretados como símbolos del lenguaje no se Ejercicio nº 7 imprimen en pantalla. Abre tu editor creando un documento nuevo. Copia el código fuente del ejemplo anterior y Cuando pretendamos que pégalo en ese documento. Ahora guárdalo como ejercicio7.php. Abre en tu navegador aparezcan escritos tendremos que ejercicio7.php y compáralo con el que visualizas al pulsar sobre ejemplo12.php. indicarlo de una forma especial. Comprueba que existen algunas diferencias entre ambos. En este enlace podrás ver la forma de hacerlo. ¡Cuidado! Aunque en los enunciados no se advierta, como norma general, los ejercicios deberás guardarlos siempre en el directorio practicas que has creado al realizar el ejercicio nº 2 Anterior Indice Siguiente

×