Hola bienvenidos a una nueva clase.
Llegó el momento de ver alcance o ámbito de las variables antes de empezar.
Miren yo he declarado acá una nueva carpeta más un nuevo archivo llamado alcanze punto PHP y la carpeta
igual alcance.
Bueno me deshago del árbol para poder estar más tranquilos con el código.
O sea que tengo espacio vamos agrandaron en la letra para que se vea y miren lo siguiente Aquí hacemos
referencias cuando hablamos del alcance o el ámbito es dónde y cómo viven las variables.
Vamos a hacer un ejemplo sencillo vamos a poner por ejemplo edad igual a ocho años.
Esta función que yo he preparado a cada prueba la vamos a poner por acá abajo no hay problema totales
para el ejemplo de grabar esto y vamos a imprimir.
A esta altura esto es un ejercicio de primer grado es una cosa súper básica vamos a ejecutar esto acaso
se lo tengo listo.
Como era de esperarse se ejecutó y se imprimió el número ocho que es la edad de esta variable ahora
comento esto no quiero que se ejecute no quiero que se imprima.
Vamos a correr si vemos las dos cosas en un tiempo como es nuestra costumbre por ahora.
Miren si yo declaro acá adentro de la función una nueva variable edad
igual a por ejemplo 12 ustedes deben saber de qué esta es una nueva variable y no tiene absolutamente
nada que ver con esta edad las variables que se crean dentro de una función tienen un ámbito local referido
a esa función no existen afuera y así como está esta variable de acá nosotros le llamamos variable global
porque afecta a todo el código si yo acá abajo vuelvo a llamar a Eco edad ahora si estoy hablando de
los ocho años.
Esto es una variable global afecta todo el código pero las variables que se crean dentro de una función
por más que se llamen igual.
Por más que se llaman igual son variables nuevas una función es como un universo aparte y está aislado
en la mayoría de los casos del entorno externo.
Si yo hago la siguiente prueba porque no dudo de lo que está diciendo Pablo dudo.
Entonces yo quiero saber si realmente esto es así.
Bueno hagamos una prueba vamos a hacer eco y que imprima acá adentro.
Pues bien yo de acá afuera llamo a la función prueba se tendría que imprimir la edad el 8 si es que
este era de acá afuera es el mismo del de acá adentro.
Vamos a probar esto y miren lo que me dice la variable edad está indefinida pues claro si nunca lo he
creado.
Solo cuando yo acá adentro digo que edad es igual a 10.
Supongamos ahora sí Bandar pero ojo este 10 es el de esta edad.
Esta edad nunca fue tocado modificado y excedido en este programa.
Espero que esto quede claro es muy importante.
Ahora cómo puedo hacer si yo quiero que este edad entre a la función.
Bueno es la manera correcta y nos tenemos que acostumbrar a esto es siempre tratar de usar los parámetros
que van acá los parámetros que recibe la función.
De momento voy a volver a esto como estaba entonces lo propio sería si yo pongo acá veamos qué pasa.
Como ven me está dando un error.
Yo lo que estoy queriendo hacer es que este edad que está acá entre por aquí no no va a suceder eso
no va a suceder.
Lo que está pasando acá es que esta función espera que cuando yo les llame le pase un valor y yo se
lo tengo que pasar por acá.
Entonces es acá yo estoy estoy haciendo a propósito porque quiero quiero que quede bien bien confuso
para que después juntos lo desenmarañar y entendamos que sucede aquí hay edades por todos lados y nos
estamos mareando de una forma.
Esa es la idea.
Miren a qué hora funciona.
Bueno vamos a hacer todo el recorrido de la variable y vamos a entender por qué nos estamos confundiendo
y vamos a aprender a que podamos escribir un código un poco menos confuso.
Mirá pasa lo siguiente acá se está creando una variable como siempre cuando yo ejecuto un PHP el código
empieza de línea por línea.
Eso sí siempre lo que hace primero es recoger todas las funciones para decir Acá tenemos una función
la carga y la preparó y le voy a ejecutar le dejo lista para ejecutarse cuando me lo pidan pero no la
ejecuta una vez que están todas las funciones ya preparadas para ejecutarse.
Ahí sí.
Línea por línea empieza a recorrer y va a ir ejecutando.
Entonces lo primero que va a ejecutar luego de preparar las funciones es qué edad crea una variable
y le asigna un valor de 8.
El código sí dice No esto es función.
No tengo que ejecutarlo ya de hecho lo tengo preparado antes sigo sigue bajando y dice ah ahora sí tengo
que llamar a la variable a la función prueba y le voy a pasar un valor y le está pasando edad que ya
estaba declarado arriba que tiene un 8.
Entonces como acá hay un 8 18 se va a alojar en esta variable que se está creando acá y acá viene la
confusión.
Este edad es nuevo no tiene nada que ver ni con éste ni con esta edad es el mismo que te da pero estos
dos no tienen nada que ver.
Acá se está creando una nueva variable edad que está recibiendo el valor de esta edad 8 y de tantas
edades estoy mareado y por acá viene el asunto de la confusión.
Y ahora sí dentro de esta función esta variable.
Si tiene alcance que se dice si estamos hablando de la misma.
Por eso lo puedo imprimir y sale correctamente el valor.
Por qué nos estamos confundiendo y porque tenemos demasiadas edades.
Tenemos que tener un poco de juicio crítico sentido común a la hora de poner los nombres a las variables
como haría esto.
En primer lugar ustedes saben esto es algo que me gusta hacer me preparo las funciones acá arriba.
Entonces supongamos yo pondría
acá como nombre de la variable para usarla dentro de la función valor y un bajo valor edad edad valor.
Entonces ya me queda claro de que son cosas distintas pero sí que son variables diferentes.
Mire la importancia de escribir un código legible hasta ahora para ser flexible con ustedes.
Estamos siendo algo laxos a la hora de reglamentar y en prohijar nuestro código pero ya de a poco vamos
a tener que ir mejorando esto porque nuestros códigos van a ser más grandes más largos más complejos
y nosotros mismos nos estamos complicando la vida cuando querramos releer o entender esto ni que hablar
si le toca pobre a otro leer alguna tela de araña de esas que solemos hacer código espagueti como dicen
muchos.
Bueno ahora vieron que ahora se entiende mucho mejor creo una variable edad que es igual a 8 llamo a
la función prueba y le paso esta edad como acá.
Ahí está y ahora queda mucho más claro qué edad se mete en esta variable valor edad y se imprime.
Este ejemplo creo que nos ayuda a entender un poco lo que es el alcance de las variables.
Funciona igual.
Repasemos este concepto.
Estas son variables de ámbito local sólo existen y viven adentro de esta función y estas son o está
mejor dicho es una variable de ámbito global.
Yo más adelante del código si llamo edad por algún motivo voy a estar haciendo referencia a esta variable
pero se puede dar el caso si bien la recomendación es que cuando querramos ingresar una variable a una
función para procesarla lo hagamos como hicimos acá a través de la posibilidad de que las funciones
puedan recibir un valor.
Puede que necesitemos y no está mal por ahí es como que es el hombre de la bolsa que se lleva a los
niños.
No vamos a querer hacer esto no.
Si PHP lo ofrece se puede hacer y es lo siguiente.
Mediante la palabra reservada global podemos modificar variables globales adentro de una función.
Vamos a hacer esto.
Mira
edad arranca valiendo 8 la función se va a llamar modificã
cantidad lo vamos a poner la variable que recibe y vamos a decir qué edad va a ser igual a edad más
la cantidad en que lo quiera modificar o sea le sumo un valor pero esta edad no es esta edad porque
esta es una variable que se está creando acá en esta instancia y de hecho va a dar error lo va a ver
modificã y lo vamos a pasar un 4 se entiende lo que yo quiero hacer con esta función quiero que a edad
cuando yo llame a la función y le pase un 4 a este 8 le suma 4 daría 2 entonces yo acá vuelvo a imprimir.
Voy a hacer eco edad luego de haber llamado a la función y edad ahora tendría que valer 2.
Sin embargo esto va a dar error.
Esta no da error pero por lo menos me avisa hoy acá adentro de quedar no está definido y me termino
imprimiendo y valiendo 8 no pasó nada por qué no pasó nada y si porque como les decía esta edad que
tenemos acá esta variable se está creando acá adentro del local pero yo sí puedo referenciar o traer
una variable global acá dentro de la función para que pueda ser modificada u operada y se hace como
les decía hace instantes con la palabra reservada global luego del Global le tengo que pasar las variables
la o las variables separadas por comas que quiero que funcionen acá adentro en este caso tengo una sola
así que lo voy pasar edad si fueron varias.
Le podría pasar acá a cómo me se dan cuenta.
Bueno ahora miren esto no va a dar error y e incluso va a funcionar.
Espero que así sea así no quedó mal ven ahí está 12 imprimió por qué imprimió 12 y porque llame a modificã
la cantidad es así.
Entra por acá pero esta edad no es una variable local.
Como tengo esto acá antes lo que estoy haciendo es decirle a la función hoy vamos a traernos esta variable
global y le vamos a hacer funcionar acá adentro.
Bueno esta es una manera que muchos esquivan pero yo te digo si llegado el caso no lo puede solucionar
de otra manera más elegante necesitás usarlo.
Si esta es por algo a usarla.
Bueno ya para redondear y es probable que en el próximo capítulo que vamos a ver otro tema roguemos
este son las variables súper súper globales.
Bueno les cuento una de esas variables súper globales es una que se llama
glo vals así y globales es una rey aunque no lo sepamos.
O mejor dicho aunque no nos demos cuenta cada vez que nosotros definimos una variable global una variable
global.
Cuáles eran.
Bueno está por ejemplo una que está afuera de la función que está en el código limpio que vamos haciendo.
Esa es una variable global aunque no lo sepamos cada vez que creamos una variable global en esta por
detrás digamos por detrás del código lo va haciendo PHP por su cuenta en un array relacional llamado
Global va creando con el índice igual al nombre de nuestra variable así va creando PHP sólo un array
con un índice que va a tener el nombre nuestra variable y le va a poner como valor el valor que nosotros
pusimos acá 8.
Entonces yo tranquilamente en vez de hacer esto que hice acá yo puedo acceder a la misma variable de
la siguiente manera vamos a probar si es cierto como poner entonces que
globales técnicamente es con mayúscula.
Vamos a ponerlo así.
Globales ven que ya me proponen que es una red.
Entonces vamos a poner ahí.
Nada es igual.
Vamos a volver a copiar esto a lo que había acá más cantida.
Entonces veamos si operamos sobre esto o no.
Vamos a imprimida vamos a ver actualizar
ejecuto de nuevo y bien dio 12 señales de que esto están dando a cambio 2 +4 6 perfecto estoy pudiendo
modificar edad usando una super variable.
Esto ya viene definido por PHP este nombre ya no lo puedo cambiar.
Esto ya es invento de PHP un invento que viene a ayudarnos en más de una oportunidad.
Entonces nosotros podemos acceder de otra manera también a las variables que están fuera de una función.
Bueno en la clase que viene vamos a hablar sobre formularios cómo enviamos y si ahora el momento apretar
el acelerador se acabó dBASE la base ya la tenemos a darle rápido a l rápido porque tenemos mucho por
ver y se viene la parte divertida.
Así que ahora no hay excusas vamos a ver mientras hacemos formularios que cuando enviamos algo de esto
de súper variables este juego super global globales mejor dicho nos vemos en la próxima clase.
Muchísimas gracias.