Título: [Pregunta]: ¿Por qué me dice que la variable no está definida? Publicado por: Leguim en 12 Diciembre 2019, 18:28 pm Buenos días,
estoy un poco confundido ya que PHP me está diciendo que una variable no existe. (que estoy definiendo claramente) Código
La variable es global y está fuera de la función y luego se usa ahí... Título: Re: [Pregunta]: ¿Por qué me dice que la variable no está definida? Publicado por: MinusFour en 12 Diciembre 2019, 18:39 pm Porque el scope de PHP es únicamente dentro de la función. Tendrías que poner:
Código
Hay algunas variables que las puedes acceder de cualquier lado (super globales (https://www.php.net/manual/en/language.variables.superglobals.php)) pero las demas necesitan ser tratadas cuidadosamente. Título: Re: [Pregunta]: ¿Por qué me dice que la variable no está definida? Publicado por: @XSStringManolo en 13 Diciembre 2019, 01:23 am No utiliceis la keyword global. En todo caso utilizar el array $GLOBALS[$miVariable]
Por 3 motivos. El primero es la propia definición de lo que es el alcance global y el conflicto con otros lenguajes. De por si la variable definida en el código fuera de un cuerpo es global por definición PHP incluído que es del que hablo. En cambio al añadir la keyword global la haces "global" para que sea accesible desde otros cuerpos lo cual no tiene ningún sentido lógico., ya era global. Teniendo en cuenta que PHP hoy en día es utilizado conjuntamente/interactuando con otros lenguajes, crea una sintaxis poca intuitiva que puede hacer creer a desarrolladores de otros lenguajes y del propio PHP algo erroneo, que la variable no era global previamente, lo cual no es cierto. El segundo es la eficiencia en velocidad y uso de memoria. Según tests que he estado viendo, es mucho más lento que su contraparte $GLOBALS[$miVariable]. Los scopes están diseñados para mejorar la seguridad e integridad del código y componentes externos. Si no es estrictamente necesario o conveniente modificar el scope, no debe hacerse. Está bien seguir el concepto de encapsulación aunque no se trabaje con objetos. Hace el código mucho más escalable, mantenible y menos propenso a errores. Siguiendo los mismos criterios es más adecuado pasar la variable como argumento. O en caso de ser posible integrar la obtención de datos y su posterior destrucción (automática) en la propia función. Es decir: Código No suele ser lo adecuado, pero es correcto. Código La opción más lógica. Crear una función que sirva para mirar el contenido de su argumento. Se puede añadir manejo de errores. Código Tiene sentido si se va a trabajar con el dato y modificarlo. Título: Re: [Pregunta]: ¿Por qué me dice que la variable no está definida? Publicado por: #!drvy en 13 Diciembre 2019, 10:13 am Tambien puedes usar funciones anonimas que hereden variables.
Código
De todos modos, todo esto es mala práctica, una funcion deberia tomar argumentos y tener una salida. No heredar variables ni depender de externas. Si acaso, usa OOP. https://en.wikipedia.org/wiki/Pure_function Saludos Título: Re: [Pregunta]: ¿Por qué me dice que la variable no está definida? Publicado por: Leguim en 14 Diciembre 2019, 21:59 pm ¿Si usara constantes?
|