Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problema con la constante $this

Estas en el tema de problema con la constante $this en el foro de PHP en Foros del Web. buenos dias por favor ayudenmen con este problema primero deben saber que estuy usando orientacion a objetos realizo una clase Conexion donde tiene un metodo ...
  #1 (permalink)  
Antiguo 31/05/2013, 08:59
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 11 años
Puntos: 0
problema con la constante $this

buenos dias

por favor ayudenmen con este problema

primero deben saber que estuy usando orientacion a objetos

realizo una clase Conexion donde tiene un metodo constructor el cual inicializa dos atributos los cuales contienen la informacion de la conexion a la base de datos, realizo la instancia de la clase enviandole al metodo constructor los datos de la conexion y los guardo en el atributo respectivo y realizo el pg_connect y entre los parentesis coloco el atributo con la palabra $this como se supone que debe ser

MIREN ASI ESTa MI CLASE:

class Conexiones
{
private $cadena;
private $cadena2;

public function __construct($cad1,$cad2)
{
$this->cadena=$cad1;
$this->cadena2=$cad2;
}

public static function conex1()
{

$con=pg_connect($this->cadena) or die("Error brutal". pg_last_error());
return $con;

}
public static function conex2()
{

$con2=pg_connect($this->cadena2) or die("Error brutal". pg_last_error());
return $con2;
}
}

Y las instancio y llamo a los metodos asi:

$con= new Conexiones(" host='localhost' port='5432' dbname='duana' user='roberto' password='*******' " , " host='localhost' port='5432' dbname='cosmitet' user='roberto' password='*******' ");

$con->conex1();
$con->conex2();


(obiamente los ateriscos indican que en ese lugar la la contraseña)

pero cuando lo voy a ejecutar en el navegador me aparece el siguiente error:

Fatal error: Using $this when not in object context

Estuve buscando por el navegador y no pude encontrar respuestas ni soluciones

POR FAVOR les pido su ayuda me gustaria saber a que se debe el error y como puedo solucionarlo

desde ya muchas gracias
  #2 (permalink)  
Antiguo 31/05/2013, 11:01
 
Fecha de Ingreso: mayo-2013
Mensajes: 19
Antigüedad: 11 años
Puntos: 0
Respuesta: problema con la constante $this

Esto sucede porque las funciones de la clase estan declaradas como static, debes quitarlas, si tienes dudas puedes ir a este link para que revises un poco la documentación: http://php.net/manual/es/language.oop5.static.php
  #3 (permalink)  
Antiguo 31/05/2013, 13:27
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 11 años
Puntos: 0
Respuesta: problema con la constante $this

agradezco tu ayuda, pero ya intente quitarle la propiedad static a los metodos y aun asi sigue apareciendo el mismo error: Using $this when not in object context esto ya esta llegando a niveles extra;os por que se supone que ya no deberia aparecer ese error....
  #4 (permalink)  
Antiguo 31/05/2013, 13:45
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: problema con la constante $this

Este error aparece solo por la razon que tienes los metodos static, no los habras quitado los 2 o te equibocas de archivo o no se yo lo que estaras haciendo ^^

No te lo tomes a mal pero este codigo es lejos de OOP lo que tienes aqui son 4 palabras en PHP que has usado por usarla ... no tiene ningun sentido esto lo que has echo. :/
  #5 (permalink)  
Antiguo 31/05/2013, 13:51
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 11 años
Puntos: 0
Respuesta: problema con la constante $this

buenas tardes

1. bulter ya me he asegurado de borrar las palabras static de el documento, el cual es el que estoy modificando y te juro que sigue botando el mismo error

2. tal vez no le veas sentido por que cuando coloque el script arriba, no lo puse completo, solo puse la parte en la cual esta el error, pero ya se que los metodos staticos son para llamarlos sin necesidad de crear instancias de la clase, creeme que se por que los hice.

de verdad me gustaria que por favor, alguien me ayudara con este problema, se que parece extraño pero palabra que quite los metodos staticos y me sige apareciendo el dichoso error

muchas gracias de todos modos BULTER por tu ayuda.
  #6 (permalink)  
Antiguo 31/05/2013, 13:53
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: problema con la constante $this

Código PHP:
<?php
class Conexiones
{
    private 
$connectionStrings = array();
    private 
$connections = array();
    
    public function 
__construct(array $connectionStrings)
    {
        
$this->connectionStrings $connectionStrings;
    }

    public function 
InitConnection($connectionName)
    {
        if(isset(
$this->connectionStrings[$connectionName]) && !isset($this->connections[$connectionName]))
        {
            
$this->connections[$connectionName] = pg_connect($this->connectionStrings[$connectionName]) or die("Error brutal"pg_last_error());
            
            return 
$this->connections[$connectionName];
        }
        
        return 
null;
    }
    
    public function 
GetConnection($connectionName)
    {
        if(isset(
$this->connections[$connectionName]))
        {
            return 
$this->connections[$connectionName];
        }
        
        return 
null;
    }
}


$con = new Conexiones("firstConnection" => " host='localhost' port='5432' dbname='duana' user='roberto' password='*******' " 
                      
"secondConnection" => " host='localhost' port='5432' dbname='cosmitet' user='roberto' password='*******' ");
                      
$con->InitConnection("firstConnection");
$con->InitConnection("secondConnection");
?>

Última edición por bulter; 31/05/2013 a las 13:58
  #7 (permalink)  
Antiguo 31/05/2013, 14:01
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 11 años
Puntos: 0
Respuesta: problema con la constante $this

por favor dime para que has colocado este script.
  #8 (permalink)  
Antiguo 31/05/2013, 14:09
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: problema con la constante $this

Cambia el tuyo por este y mira si te da el error
  #9 (permalink)  
Antiguo 31/05/2013, 14:17
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 11 años
Puntos: 0
Respuesta: problema con la constante $this

me sale el siguiente error: Parse error: syntax error, unexpected T_DOUBLE_ARROW y señala la linea donde se esta haciendo la instancia de la clase Conexiones
  #10 (permalink)  
Antiguo 31/05/2013, 14:29
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: problema con la constante $this

lol sorry :D

Código PHP:
$con = new Conexiones(array("firstConnection" => " host='localhost' port='5432' dbname='duana' user='roberto' password='*******' " 
                      
"secondConnection" => " host='localhost' port='5432' dbname='cosmitet' user='roberto' password='*******' ")); 
En ese PC no tengo PHP asi que lo hago a ciegas...
  #11 (permalink)  
Antiguo 31/05/2013, 14:36
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 11 años
Puntos: 0
Respuesta: problema con la constante $this

graxias. ya no lanzo el error, aunque no tengo ni la minima idea que es lo que significan todos esos codigos pero weeenooo.....
muchas graxias

PD: sabes por que razon aunque quite los metodos estaticos me seguia saliendo el error del $this?
  #12 (permalink)  
Antiguo 31/05/2013, 14:41
 
Fecha de Ingreso: mayo-2013
Mensajes: 19
Antigüedad: 11 años
Puntos: 0
Respuesta: problema con la constante $this

Lo he probado con un pequeño ejemplo similar al tuyo pero sin conexion a BD, y me funciono bien sin el static, me corre sin error:

Código PHP:
<?
class Conexiones{
private 
$cadena;
private 
$cadena2;

    public function 
__construct($cad1,$cad2){
        
$this->cadena=$cad1;
        
$this->cadena2=$cad2;
    }

    public function 
conex1(){
        
$con=$this->cadena;
        return 
$con;
    }
    public function 
conex2(){
        
$con=$this->cadena2;
        return 
$con;
    } 
}

$con=new Conexiones("hola"," chicho");
echo 
$con->conex1();
echo 
$con->conex2();
?>
  #13 (permalink)  
Antiguo 31/05/2013, 14:51
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 11 años
Puntos: 0
Respuesta: problema con la constante $this

creo que esto ya sobrepasa lo extraño, juro que quite los static y juro que estoy editando el archivo que es y aun asi el error seguia, seria un problema con mi php?
  #14 (permalink)  
Antiguo 31/05/2013, 15:21
 
Fecha de Ingreso: mayo-2013
Ubicación: cali
Mensajes: 58
Antigüedad: 11 años
Puntos: 0
Respuesta: problema con la constante $this

ya encontre el error muchas gracias a todos por sus posteadas

buena tarde

Etiquetas: constante, select
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 17:26.