Foros del Web » Programando para Internet » PHP »

¿Variable no definida?

Estas en el tema de ¿Variable no definida? en el foro de PHP en Foros del Web. Buenas Tengo un problema, tengo un archivo que sería un núcleo, por así decicrlo, de una CMS. Dentro de ese incluyo otro archivo que sería ...
  #1 (permalink)  
Antiguo 30/03/2013, 18:08
 
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 8 meses
Puntos: 1
¿Variable no definida?

Buenas

Tengo un problema, tengo un archivo que sería un núcleo, por así decicrlo, de una CMS. Dentro de ese incluyo otro archivo que sería el config.php, donde estarían los datos de configuración de la base de datos.

Bien, en ese mismo archivo he usado esa variable, pero la uso dentro de una función y me dice que no está definida.. ¿Una ayudita?

La función es esta:
Código PHP:
function LoadTemplate($t,$v=array())
    {
    
extract($v);
    
ob_start();
    require(
"skins/".$config["template"]."/".$t.".php");
    return 
ob_get_clean();
    } 
Gracias :D
  #2 (permalink)  
Antiguo 31/03/2013, 05:53
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: ¿Variable no definida?

Buenas

Supongo que la variable que te da como no definida es "$config", verdad?

Te debe dar el error porque la usas directamente sin asignarle valor antes.

Espero te ayude.

Saludos.
  #3 (permalink)  
Antiguo 31/03/2013, 13:36
 
Fecha de Ingreso: agosto-2012
Mensajes: 21
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: ¿Variable no definida?

Cita:
Iniciado por DoHITB Ver Mensaje
Buenas

Supongo que la variable que te da como no definida es "$config", verdad?

Te debe dar el error porque la usas directamente sin asignarle valor antes.

Espero te ayude.

Saludos.
Sí está definida ya que dentro de config.php tengo esto:
$config["template"] = 'default';
  #4 (permalink)  
Antiguo 31/03/2013, 14:03
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: ¿Variable no definida?

Tienes tremendo problema de concepto, primero lee que es una función y como trabaja, esto es algo basico en cualquier lenguaje de programación, en fin, las funciones tienen la capacidad de encapsulamiento del código que en ellas se encuentren, es decir, todas las variables, metodos, y demás código que esta fuera de las llaves de la función no se pueden acceder a ellas, a su vez, no puedes acceder a ninguna variable desde afuera de la función, para pasarle valores desde el exterior a la función se deben pasar como parámetros en dicha función, y para enviar valores al exterior debes usar la palabra "magica" return, donde como su mismo nombre indica, retornará el valor indicado....

Código PHP:
Ver original
  1. <?php
  2. $saludo = 'Hola mundo!';
  3.  
  4. function saludo() {
  5.      $saludo = 'Hola desde la función saludo()';
  6.      return $saludo;
  7. }
  8.  
  9. echo $saludo; //imprimirá Hola mundo!
  10. echo saludo(); //imprimirá Hola desde la función saludo();
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 31/03/2013, 14:06
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: ¿Variable no definida?

Para utilizar variables globales (declaradas fuera de funciones) dentro de las funciones debes de usar la palabra reservada global

Código PHP:
Ver original
  1. function LoadTemplate($t,$v=array())
  2.     {
  3.     global $config;
  4.  
  5.     extract($v);
  6.     ob_start();
  7.     require("skins/".$config["template"]."/".$t.".php");
  8.     return ob_get_clean();
  9.     }

Que se recomiende o no usar variables globales, que pueden ser focos de errores, es otro tema.
  #6 (permalink)  
Antiguo 31/03/2013, 14:09
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: ¿Variable no definida?

Para eso mejor hubieras recomendando agregarla como un parametro mas en la función...

Código PHP:
Ver original
  1. <?php
  2. function LoadTemplate($t,$v=array(),$config)
  3.     {
  4.     extract($v);
  5.     ob_start();
  6.     require("skins/".$config["template"]."/".$t.".php");
  7.     return ob_get_clean();
  8.     }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 31/03/2013, 15:48
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: ¿Variable no definida?

La cuestión es que poder, se puede. De hecho todo el mundo utiliza $_SESSION, $_GET y $_POST dentro de funciones, que también son globales por defecto.

El problema de las variables globales es que cambies su valor DENTRO de una función, porque despues saber quién y cuándo ha cambiado el valor de una variable global puede ser una locura, si el código es largo y complejo.

Pero usar el global para recoger variables que actúen de constantes, como parece que es el caso, es bastante común en la programación estructurada de php.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:12.