Foros del Web » Programando para Internet » PHP »

problema al pasar parametro con include

Estas en el tema de problema al pasar parametro con include en el foro de PHP en Foros del Web. BUENOS DIAS MI PROBLEMA ES ALGO COMPLICADO Y LARGO DE EXPLICAR, PERO POR FAVOR AYUDENMEN en mi proyecto estoy implementando el patron mvc, ahora bien ...
  #1 (permalink)  
Antiguo 03/07/2013, 09:02
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 10 años, 11 meses
Puntos: 0
problema al pasar parametro con include

BUENOS DIAS MI PROBLEMA ES ALGO COMPLICADO Y LARGO DE EXPLICAR, PERO POR FAVOR AYUDENMEN

en mi proyecto estoy implementando el patron mvc, ahora bien en el modelo, estoy utilizando la siguente linea

Código PHP:
class System_usuarios
{
        private 
$objeto;

    public function 
buscarusuarios()
    {

         
$this->objeto=pg_query($this->conexion2,$this->sql_cosmitet);
                return 
$this->objeto;
        }


(NOTA: solo estoy colocando las partes relevantes del codigo, lo demas, lo omitire)

la cual esta ejecutando una consulta sql y unos datos de conexion, esto esta en el modelo

en el controlador tengo la siguiente parte:

Código PHP:
Class Control
{
        public function 
ctrlusuarios()
        { 
                   
$sys= new System_usuarios();

               
$sys->buscarusuarios();

                   while(
$this->reg_cosmi=pg_fetch_assoc($this->objeto))
                    {
                          
//aqui va el resto del codigo....
                    
}
        }
}

    
$con= new Control();
    
$con->ctrlsystemusuarios(); 
ahora bien, se supone que el atributo $this->objeto, deberia estar tambien en el controlador (Clase Control) debido a que estoy incluyendo el moldeo (clase System_usuarios ) con el "include" pero sale el siguiente error:

Warning: pg_fetch_assoc() expects parameter 1 to be resource, null given

es decir, no esta llegando el atributo $this->objeto al controlador, intente poner el atributo como "public", pero tampoco funciono.

en una prueba que realice, descubri que la razon por la que ese atributo no llega al controlador es debido a que esta en un metedo de una clase (clase System_usuarios), y anque ya instancie la clase y llame al metodo el modelo, aun asi no llega el atributo al controlador


DISCULPEN POR ESCRIBIR BASTANTE, ES QUE COMO EL PROBLEMA ES COMPLICADO NECESITABA EXPLCARLO LO MAS ESPECIFICO POSIBLE

por favor ayudemen con ese problema

DESDE YA MUCHAS GRACIAS
  #2 (permalink)  
Antiguo 03/07/2013, 09:06
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: problema al pasar parametro con include

Simplemente dejas lo que quieras pasar como variable y sera leido en el archivo incluido pues estan en el mismo contexto excepto uses Namespace

Cita:
<?php
// Estoy en a.php

$saludo = 'Hola Mundo!';
include "b.php";
?>
Cita:
<?php
// Estoy en b.php

echo $saludo; // imprime "saludo"
__________________
Salu2!
  #3 (permalink)  
Antiguo 03/07/2013, 09:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema al pasar parametro con include

El problema es que no funciona como piensas, no por regresar $this->objeto o ponerlo con include se pasa de forma "mágica" a la clase padre, es totalmente incorrecto, $this->objeto solo vive en la clase donde fue definido, eso es encapsulación.

Include lo único que hace es traer el código del archivo al punto donde fue solicitado y ya.

Saludos.
  #4 (permalink)  
Antiguo 03/07/2013, 09:10
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: problema al pasar parametro con include

[GRRRRRRRrr] no comprendo porque los titulos de los post no tienen nada que ver o muy poco con el contenido......seria mas facil si se describiera mejor el problema.

@rober18: por otro lado... lee tambien sobre Namespace ya que hace parte del concepto de "encapsulacion" igual que usar o no variable globales o la visibilidad fuera / dentro de una clase / objeto.
__________________
Salu2!
  #5 (permalink)  
Antiguo 03/07/2013, 09:15
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: problema al pasar parametro con include

muchas gracias a los dos

entiendo tu punto GatorV, entonces teniendo en cuenta lo que dice italico76 ¿deberia guardar el atributo $this->objeto en una variable para asi poder utilizarlo en la otra clase? o ¿cual seria otra solucion?

desde ya muchas gracias
  #6 (permalink)  
Antiguo 03/07/2013, 09:23
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: problema al pasar parametro con include

Cita:
Iniciado por rober18 Ver Mensaje
muchas gracias a los dos

entiendo tu punto GatorV, entonces teniendo en cuenta lo que dice italico76 ¿deberia guardar el atributo $this->objeto en una variable para asi poder utilizarlo en la otra clase? o ¿cual seria otra solucion?

desde ya muchas gracias
Parcero.. claro.. de hecho ya lo hizo Ud !! $con le esta guardando la referencia al objeto y desde el archivo incluido ya puede acceder a las propiedades publicas
__________________
Salu2!
  #7 (permalink)  
Antiguo 03/07/2013, 09:25
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: problema al pasar parametro con include

debugea usa print, echo, vardump, etc
solo asi sabras por que no esta llegando o si esta llegando vacio el dato.
si bas ha usar un valore del objeto fuera de el tienes que colocarlo como "public".
private $objeto; NO
public $objeto; SI

forma de llamar al objeto correctamente:

Código PHP:
class System_usuarios
{
        public 
$objeto;

    public function 
buscarusuarios()
    {

         
$this->objeto=pg_query($this->conexion2,$this->sql_cosmitet);
                return 
$this->objeto;
        }


Código PHP:
Class Control
{
        public function 
ctrlusuarios()
        { 
                   
$sys= new System_usuarios();

               
$sys->buscarusuarios();

                   while(
$this->reg_cosmi=pg_fetch_assoc($sys->objeto))
                    {
                          
//aqui va el resto del codigo....
                    
}
        }
}

    
$con= new Control();
    
$con->ctrlsystemusuarios(); 
  #8 (permalink)  
Antiguo 03/07/2013, 09:54
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: problema al pasar parametro con include

@rober18: ojo que si estas en un FRAMEWORK... tu no haces include() normalmente sino usas funciones del tipo load_model() o load_view() que podrian estar haciendo algo que tu no ves...

Por ejemplo... en CodeIgniter, cuando cargas una Vista desde el Controller.. no pasan todas las variables del Controller a la Vista sino las que TU le dices y estan en un array pero pasan sin array.

Imagino los demas FW funcionan "parecido"
__________________
Salu2!
  #9 (permalink)  
Antiguo 04/07/2013, 21:11
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: problema al pasar parametro con include

Holas,

Podria ser sesiones?

Cita:
Iniciado por rober18 Ver Mensaje
muchas gracias a los dos

entiendo tu punto GatorV, entonces teniendo en cuenta lo que dice italico76 ¿deberia guardar el atributo $this->objeto en una variable para asi poder utilizarlo en la otra clase? o ¿cual seria otra solucion?

desde ya muchas gracias

Saludos,
__________________
.: Gildus :.

Etiquetas: include, mvc, parametro
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:42.