*   >> Lectura Educación Artículos >> science >> programación

Php Reference

Conceptos básicos de PHP - Parte 14 Introducción Esto es parte de mi serie 14, Fundamentos de PHP. En PHP referencias son un medio para acceder al mismo contenido variable (valor) con diferentes nombres. Valores (contenido variable) se mantienen en posiciones de memoria. Una variable identifica una posición de memoria. Una referencia se utiliza generalmente cuando usted está más interesado en lo que está en una posición de memoria y no a la variable. PHP referencia es diferente de la de referencia en otros lenguajes de programación.

Al leer este artículo, evitar hacer la comparación con lo que lee o lo que existe en otros lenguajes de programación, como C, como que puede confundir. He hecho mi mejor esfuerzo para poner esto en una manera progresiva lógica, por lo que tomar las cosas como yo te doy. Nota: Si no puede ver el código o si cree que falta algo (enlace roto, la imagen ausente), simplemente en contacto conmigo en [email protected]. Es decir, en contacto conmigo para el más mínimo problema que tenga acerca de lo que está leyendo.

Localización de Memoria Una posición de memoria es un área en la memoria de la computadora que tiene el valor de una variable. Una técnica para trabajar con una sola ubicación de memoria Considere la siguiente declaración: $ var = 5; El valor 5 se encuentra en una ubicación de memoria. Puede utilizar esta misma posición de memoria para aumentar el valor de 5 a 8, añadiendo 3. Usted podría hacer esto: $ var = $ var + 3; Lo que pasa es esto: El equipo sabe que $ var identifica la ubicación de memoria que tiene el número 5.

Para el operando de la derecha de la declaración anterior, el equipo va a la posición de memoria identificado por $ var y agrega 3 a lo que está allí. ¿Qué hay es 5. Cuando se añade 3, tiene 8 en la posición de memoria identificado por $ var. La ubicación que tiene de 8, que fue asignado a la variable $ var, todavía se asigna a la misma variable. A lo largo de la línea, nada cambió la asignación. El mismo principio se aplica a las cadenas, como en el siguiente ejemplo: $ var = "uno"; $ var = $ var. " dos"; Nótese aquí que en la segunda declaración, hay un punto entre $ var y "dos".

Esto se llama el operador de punto; se une a dos cadenas juntos. En la primera declaración, $ var tiene el valor, "uno". La variable $ var identifica la ubicación que tiene, "uno". En la segunda declaración, para el operando derecho "dos" se añade (unidas) en este lugar, para dar la cadena, "uno dos". La identificación de esta ubicación no ha cambiado. Así que $ var todavía identifica la ubicación. La ubicación todavía se asigna a $ var. Así que, para modificar el contenido de una ubicación, hemos utilizado la misma ubicación en lugar de dos lugares diferentes.

Diferentes ubicaciones de memoria con distintas variables Considere las siguientes dos afirmaciones consecutivas: $ myVar = "Yo soy el contenido de un gran archivo de texto desde el disco duro, ahora en la memoria."; $ Avar = "Yo soy el contenido de un gran archivo de texto desde el disco duro, ahora en la memoria."; Usted tiene dos variables diferentes con nombres diferentes pero con los mismos valores de cadena. Una variable identifica una posición de memoria.

Dos variables diferentes con dos nombres diferentes identifica dos localizaciones de memoria diferentes, todo en igualdad de condiciones. En el caso anterior, los dos valores, a pesar de que son los mismos, están en dos posiciones de memoria diferentes. Misma ubicación de memoria para dos distintas variables en PHP que puede hacer la misma posición de memoria tiene dos variables diferentes. Las dos variables diferentes, por supuesto, identificar el mismo valor.

Considere las siguientes dos afirmaciones consecutivas: $ myVar = "Yo soy el contenido de un gran archivo de texto desde el disco duro, ahora en la memoria."; $ hisVar = & $ myVar; Por primera declaración tiene un valor asignar a la variable, $ myVar. En la segunda declaración, $ myVar es precedido con el signo & antes de ser asignado a una nueva variable, $ hisVar. Y es un operador. En la segunda declaración, el operador &, que precede a la primera variable, hace que la segunda variable identifica la misma posición de memoria (el mismo valor) como la primera variable.

Una cosa importante a señalar aquí es que & $ myVar se refiere a un contenido de ubicación de la memoria. También se puede decir que & $ myVar se refiere al valor de la posición de memoria. Para la segunda declaración, y $ myVar, con y, se puede considerar como una referencia, pero $ hisVar no puede ser considerada como una referencia; por favor, acepte esto. $ hisVar es una variable, no una referencia; simplemente aceptar esto. & $ myVar es asignado (no equiparado) a $ hisVar y en el supuesto de ser asignado hace $ hisVar identificar la misma posición de memoria como $ myVar; aceptar esto.

Aceptar estas tres frases que acabo de dar. Tratar de entender por qué son así podría hacer que usted no entiende la referencia PHP. Ahora, si escribe, $ myVar = "hombre"; o $ hisVar = "mujer"; El contenido de la misma posición de memoria identificado por $ myVar, así como $ hisVar cambiaría. La primera declaración cambiaría el contenido de "hombre" y la segunda declaración cambiaría a "la mujer". Con referencia como tal, tanto $ myVar y $ hisVar identifican el mismo valor (posición de memoria).

Utilizando una referencia, sin previa declaración o Asignación En la sección anterior, y $ myVar fue asignado a $ hisVar y $ myVar ya estaba declarada. Puede utilizar una referencia sin previa declaración o asignación. Una referencia consiste y seguido de un nombre de variable. El nombre de la variable no tiene que existir antes, como en el caso anterior. En el caso anterior, usted tiene y $ myVar, donde existía $ myVar antes. Utilice estas referencias dentro de expresiones y declaraciones. No se puede empezar una declaración con dicha referencia.

No se puede declarar una variable con dicha referencia. Así que no puedes hacer esto: & $ ref = "algún valor"; //mal Cuando usted tiene una referencia como & $ ref en un segmento de código, se puede asignar a una variable de manera indirecta. Un argumento, que es una variable declarada en algún lugar, podría haber asignado una referencia, durante una llamada a la función. Algo así como: $ Thevar = myFn ($ var1); donde $ var1 es una variable declarada en alguna parte (arriba) en el código. La función, myFn (), regresa y $ ref durante la ejecución, que se asigna a $ Thevar.

Podemos decir que esta asignación se ha hecho de forma indirecta. Una referencia se refiere a una ubicación de memoria. Puede utilizar la referencia para hacer lo que quiere hacer con la ubicación de memoria, tales como la modificación del contenido de la posición de memoria. Puede haber asignado indirectamente la referencia a una variable, y luego usar el contenido de la ubicación de la memoria, a través de la variable. En este contenido de una posición de memoria y el valor (literal) artículo, significan lo mismo.

Cuando se conoce el significado de una referencia; que es una etapa de entendimiento de referencia. El siguiente paso es aprender cómo usarlo. Siga leyendo. Desventaja de no utilizar una referencia en determinadas situaciones Imagina que tienes un archivo de texto en un disco duro, y el contenido de este archivo se encuentra ahora en la memoria. Es posible que tenga este contenido como una cadena, asignado a una variable, de la forma habitual, en el código.

Lo que realmente quiere hacer con dicho contenido grande de un archivo, es cambiar algo de su texto, borre parte de su texto o añadir un nuevo texto para el contenido. Después de guardar el contenido de la espalda, como un archivo en el disco duro y ya no es necesario el contenido de la memoria. El siguiente código muestra una manera de añadir (añadir al final) de texto a dicho contenido (tiene una desventaja): $ var1 = ". Yo soy el contenido de un gran archivo de texto desde el disco duro, ahora en la memoria"; función appendFn ($ var2) {$ var2 = $ var2. "El último texto.

"; devolver $ var2; } $ Var1 = appendFn ($ var1); echo $ var1; ?> Al principio del código, usted tiene la variable $ var1. Para esta variable se le asigna un valor de cadena. Este valor de cadena es corto, pero deja que representa el contenido de un archivo de texto grande. A continuación, usted tiene la función, appendFn (). Esta función agrega la cadena "El último texto." a la cadena de la variable, $ var1. La función se denomina de la siguiente manera: appendFn ($ var1) donde la variable, $ var1 se envía como argumento. La función en sí tiene el parámetro, $ var2.

Cuando se invoca la función, este parámetro identifica el valor del argumento enviado. Este parámetro es en realidad una diferente variable $ var1. $ var2 mantiene el valor del argumento enviado por la declaración que llama. Así que antes de ejecutar la función, usted tiene dos variables diferentes que identifican el mismo valor. Sin embargo, ninguna de estas variables se está ocupando de hacer referencia, por lo que tiene el mismo valor en dos lugares diferentes en la memoria. Uno de los lugares es identificado por $ var1 y el otro es identificado por $ var2.

Este estado continúa hasta el final de la ejecución del programa. Hay dos declaraciones en la definición de función. La primera declaración agrega la cadena "El último texto." al valor de la variable, $ var2. La segunda instrucción devuelve el valor de la variable, $ var2. La función de llamar la declaración en el código (fuera de la definición de función) recibe este valor y volver a la asigna a la variable, $ var1. En este código, sin la referencia se ha utilizado oficialmente. Así que las dos variables cada uno tiene su propia posición de memoria.

Una variable es fuera de la definición de la función, y el otro está dentro de la definición de la función. La ubicación de la variable fuera de la definición de la función, en un principio tiene un valor de cadena. Después de la llamada de función, este lugar cuenta con un trozo de cuerda añadido a la misma. La ubicación para la variable dentro de la definición de función tiene inicialmente la cadena que la ubicación de la variable tiene exterior. La segunda declaración en la definición de función añade el trozo de cuerda a la ubicación.

Tenga en cuenta que la técnica descrita anteriormente se ha utilizado aquí. La existencia de estos dos lugares es una pérdida de memoria. Con referencias, estas dos ubicaciones se pueden reducir a un lugar (ver más abajo). Ahora, la memoria es siempre escasos. Es como el dinero, no importa lo mucho que tiene, todavía tiene razones para necesitar más dinero. En el código anterior, toda la memoria no se ha utilizado económicamente. Tienes que tratar siempre de usar la menor cantidad de memoria que pueda cuando sea posible.

Sepa que el uso de referencia conduce a un uso económico de la memoria y mejorar el rendimiento de su código. Pasar una variable por referencia Hay situaciones en las que sólo tiene que hacer referencia a una posición de memoria, la variable para la ubicación de la memoria no es muy importante. ¿No sería agradable, si usted tenía una referencia que simplemente se refiere a la ubicación de la variable $ var1 en el código de seguridad. Se utiliza la referencia a anexar el trozo de cuerda.

Después de la llamada a la función (declaración) y la ejecución de la función, no es necesario la referencia más. De esta manera usted tendrá sólo una posición de memoria para hacer frente; no dos como antes. Así que a ahorrar memoria y no hay un mejor rendimiento. El siguiente código ilustra esto (véanse las notas explicativas a continuación): $ var1 = "Yo soy el contenido de un gran archivo de texto desde el disco duro, ahora en la memoria."; funcionar appendFn (& $ ref) {$ ref = $ ref. "El último texto.

"; devolver $ ref; } $ Var1 = appendFn ($ var1); echo $ var1; ?> El código y el anterior son similares. La diferencia está en la definición de la función. Cuando se invoca la función, la variable, $ var1 se pasa como argumento. El parámetro de la función es ahora una referencia. La parte variable ($ ref) de esta referencia no fue declarado previamente. Esta referencia no está asignado a una nueva variable y nunca será asignado, directamente (que nunca tendrá nada por el estilo, $ somevar = & $ ref). Sin embargo, se le asigna indirectamente a $ var1 al comienzo de la ejecución de la función.

Con el fin de que se ejecute la función, tanto $ var1 y & $ ref significan la misma posición de memoria. El fragmento de código se tiene en cuenta como referencia, comienza con y, seguido de un nombre de variable, por ejemplo, $ ref, que comienza con los $ firmado. Dentro de la definición de la función, se utiliza el nombre de parte variable precedida por el $ para hacer frente a la situación mencionada por la referencia. Como he dicho anteriormente, después de conocer la referencia de sentido, usted tiene que aprender cómo usarlo.

En este código, $ ref dentro de la definición de la función se está refiriendo a la misma ubicación que $ var1 exterior. La sentencia return usa $ ref para devolver el contenido (valor) de la posición de memoria. No utiliza & $ ref pesar y $ ref es efectivamente lo que devuelve la función de llamada. Sucede aquí, que la ubicación de origen y destino de los contenidos son los mismos. Como puedes ver, hemos utilizado sólo una posición de memoria en lugar de dos (como en el caso anterior). Hemos logrado economía de la memoria y un rendimiento mejorado.

Función Volviendo una referencia en el código anterior, se volvió una referencia. Sin embargo, no es todos los tiempos cuando la localización de la referencia es el mismo que el del argumento pasado. Algunas funciones pueden no tener ningún parámetro (para recibir ningún argumento), sin embargo, usted querría que vuelva una referencia. La función en el código siguiente no recibe un argumento. La función devuelve una referencia y en la declaración que llama, la referencia se asigna indirectamente a una variable.

función y AFN () {$ myVar = "un valor"; devolver $ myVar; } $ Thevar = AFN (); echo $ Thevar; ?>

Page   <<       [1] [2] [3] [4] [5] [6] [7] >>
Copyright © 2008 - 2016 Lectura Educación Artículos,https://lectura.nmjjxx.com All rights reserved.