Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Ambito de las variables

Estas en el tema de Ambito de las variables en el foro de PHP en Foros del Web. Hola amigos, buenas Tengo una duda en cuanto el alcance que pueden tener las variables de PHP Verán, tengo mi archivo index.php de la siguiente ...
  #1 (permalink)  
Antiguo 20/02/2018, 21:12
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Ambito de las variables

Hola amigos, buenas
Tengo una duda en cuanto el alcance que pueden tener las variables de PHP

Verán, tengo mi archivo index.php de la siguiente forma

Código PHP:
$saludo "Hola";
require_once 
'inicializador.php';
$gestor = new Inicializador();
$gestor->inicializa(); 
Mi archivo inicializador.php
Código PHP:
class Inicializador{
  public function 
inicializa(){
    include 
'template.php';
 }

Mi archivo template.php:
Código PHP:
 echo $saludo

Pero me aparece que la variable saludo está indefinida, sin embargo,
si mi index.php queda:
Código PHP:
$saludo "Hola";
include 
'template.php'
Ahora si que me imprime la variable $saludo,
Desde luego es la parte resumida, no es que la solución sea incluir el template en el index

Espero me puedan ayudar, saludos!
  #2 (permalink)  
Antiguo 20/02/2018, 21:32
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Ambito de las variables

Hasta donde se, debes pasar data a tu template a través de tu función:

home.php
Código PHP:
Ver original
  1. $d = (object) array(
  2.     "saludo"    =>  "Hola",
  3.     "nombre"    =>  "Carlos Quintero",
  4.     "edad"      =>  "37 años"
  5. );
  6. include('lector.php');
  7. $gestor = new Inicializador();
  8. $gestor->inicializa($d);

inicializador.php
Código PHP:
Ver original
  1. class Inicializador{
  2.  
  3.     public function inicializa($data){
  4.         include 'template.php';
  5.     }
  6.  
  7. }

template.php
Código PHP:
Ver original
  1. echo "<li>".$data->saludo." ".$data->nombre."</li>";
  2. echo "<li>Tu edad es: ".$data->edad."</li>";

eso imprime:

Hola Carlos Quintero
Tu edad es: 37 años

no se es lo que imagino y las pruebas arrojaron. Saludos.
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 20/02/2018, 22:03
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Ambito de las variables

Saludo
Tal cuál dice el título del post, el asunto es el ámbito de la variable.

Una solución es la que ya xfxstudios menciona,
y la otra solución es hacer uso de global

(es decir, indicar que $saludo es una variable de ámbito global)

Revisa esto
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #4 (permalink)  
Antiguo 20/02/2018, 22:22
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Ambito de las variables

Hola amigos, gracias a ambos por la respuesta!

@mortiprogramador , entiendo, entonces al hacer el include del template.php dentro de la funcion init, no "alcanza" a visualizar la variable por lo que se comenta en el manual ( ... Sin embargo, al interior de las funciones definidas por el usuario se introduce un ámbito local a la función... ), cierto??
  #5 (permalink)  
Antiguo 20/02/2018, 23:03
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Ambito de las variables

Siguiendo mi ejemplo y actuado con las globales, seria asi:

Código PHP:
Ver original
  1. $d = (object) array(
  2.     "saludo"    =>  "Hola",
  3.     "nombre"    =>  "Carlos Quintero",
  4.     "edad"      =>  "37 años"
  5. );
  6. include('lector.php');
  7. $gestor = new Inicializador();
  8. $gestor->inicializa();

Código PHP:
Ver original
  1. class Inicializador{
  2.  
  3.     public function inicializa(){
  4.         $data = $GLOBALS['d'];
  5.         include 'template.php';
  6.     }
  7.  
  8. }

asi utilizarias la variable global que esta en index.

Saludos
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 20/02/2018, 23:09
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Ambito de las variables

O vaya, ok, entiendo
También es otra solución @xfxstudios

ó
En template.php
Código PHP:
Ver original
  1. global $saludo;
  2. echo $saludo

Gracias a ambos!

Etiquetas: ambito, variables
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 20:06.