verbales tiempos significado redireccionar pagina mostrar mensaje gerundio formulario error ejemplos conjugacion php

php - tiempos - mostrar mensaje de error login sin redireccionar pagina de login



¿Cómo evitar el error en tiempo pasado de la llamada en desuso en PHP? (5)

En realidad, no hay problema con la forma en que define la función. Es un problema con la forma en que llamas a la función. Así que para tu ejemplo, en lugar de llamarlo como:

takeScriptsWithMarker(&$lines, $marker);

Lo llamarías como:

takeScriptsWithMarker($lines, $marker); // no ampersands :)

Así que la función todavía está disponible. Pero no sé la razón detrás de este cambio.

Estoy tratando de reducir las advertencias que se envían a mi registro del servidor apache.

Una advertencia es:

El tiempo de llamada de paso por referencia ha quedado en desuso.

Es difícil para mí imaginar por qué esto fue desaprobado ya que es una función de programación tan útil, básicamente hago esto:

public function takeScriptsWithMarker(&$lines, $marker) { ... }

y llamo a esta función varias veces para obtener resultados y procesarlos, pero también para permitir que la matriz $ lines se acumule al ser enviada a este método repetidamente.

  1. Reprogramar esto sería extenso.
  2. No quiero simplemente "desactivar las advertencias" ya que quiero ver otras advertencias.

Entonces, como la llamada por referencia está en desuso, ¿cuál es la "forma aceptada" de lograr la funcionalidad de este patrón: a saber, enviar una matriz de cadenas a un método, cambiarlas por el método y luego continuar usando ese ¿formación?


Podría pasar la matriz, dejar que la manipule y luego "devolverla", en lugar de alterar la referencia original. No debería ser demasiado difícil simplemente incluir una devolución y una asignación.

public function takeScriptsWithMarker($lines, $marker) { //... return $lines; }

Uso:

$lines = takeScriptsWithMarker($lines, $marker);


Podrías pasar una matriz con una referencia en:

public function takeScriptsWithMarker(array(&$lines, $marker))

que solo debería llevar una pequeña cantidad de refactorización en el otro extremo.


Puede establecer allow_call_time_pass_reference en true en su archivo php.ini . Pero es un hack.


como se señaló anteriormente en una respuesta anterior, el problema es en el momento de LLAMADA, no en el tiempo de definición ... así que podría definir una función como:

function foo(&$var1,$var2,$var3=null){ // procesing here }

entonces llama como

$return = foo($invar1,$invar2);

su primer invar se pasa por referencia, el segundo no lo es.

el error aparece cuando intentas llamar así:

$return = foo(&$invar1,$invar2);