Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

problema al usar la palabra static dentro de un metodo

Estas en el tema de problema al usar la palabra static dentro de un metodo en el foro de Frameworks y PHP orientado a objetos en Foros del Web. que eso que me da error el script que uso para crear un usuario en la base de datos y es al usar la palabra ...
  #1 (permalink)  
Antiguo 05/02/2011, 14:15
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
problema al usar la palabra static dentro de un metodo

que eso que me da error el script que uso para crear un usuario en la base de datos y es al usar la palabra static cuando os enseñe el codigo lo entendereis mejor. me han dicho que no se puede usar la palabra static para llamar a una variable propiedad de la clase donde esta la funcion y que solo funciona si hay instalado el php 5.3 pero yo tengo instalado el 5.3.5 que viene con el wampserver 2.1i.

asi que no lo entiendo os dejo el codigo.


Código PHP:
public function crear()
    {
        global 
$bd;
        
$propiedades $this->propiedades();
        
//la siguente fila $sql... es la que da error por usar static
        
$sql "INSERT INTO ".static::$nombre_tabla."(";
        
//$sql = "INSERT INTO usuarios (";
        
$sql .= implode(",",array_keys($propiedades));
        
$sql .=" ) VALUES ('";
        
$sql .= implode("','",array_values($propiedades)). "')";
        if(
$bd->enviar_consulta($sql))
        {
            
$this->id $bd->insert_id();
            return 
true;
        }
        else
        {
            return 
false;
        }
    } 
  #2 (permalink)  
Antiguo 05/02/2011, 18:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: problema al usar la palabra static dentro de un metodo

Si lo que quieres hacer es llamar a una propiedad de la clase debes de usar $this->nombre_tabla, o si la propiedad es estatica usar self::$nombre_tabla.

Saludos.
  #3 (permalink)  
Antiguo 06/02/2011, 17:37
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problema al usar la palabra static dentro de un metodo

ok gatorv pero si la propiedad es
Código PHP:
protected static $nombre_tabla
por que no me va si la propiedad es estatica y protegida?
  #4 (permalink)  
Antiguo 06/02/2011, 19:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: problema al usar la palabra static dentro de un metodo

Aún así para leerla debes de usar ya sea el nombre de la clase, o self, que se refiere al nombre de la clase.

Static dice que esa variable en efecto es estatica a todas las instancias de esa clase, por lo que no importa cuantas instancias crees, siempre va a tener el mismo valor.

Saludos.
  #5 (permalink)  
Antiguo 07/02/2011, 13:44
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problema al usar la palabra static dentro de un metodo

ok Gatorv pero sigo sin entender por que no me funciona. Estoy siguiendo unos videtutoriales de php poo y el que hace los videos usa estatic y le funciona. dice que lo usa por que hay varias clases usuario.php session.php database.php y "database_table". y todas estas clases y la clase padre que es database_table.php usan la propiedad protected static $nombre_clase; para que cualquiera de las sublclases o la clase padre usen los metodos que hay en otras clases ya sea para consultar registros en la bd como para insertar registros etc etc. tengo que usar static si no voy a tener que rehacer mucho codigo (bastante) aparte de repetir los mismos metodos en cada clase. asi que si uso php 5.3.5 static me deberia de funcionar!!!!. gatorv te pongo el codigo que llevo hecho hasta ahora? de cada clase que usa static para que tu que eres un experto haber si encuentras el fallo?

y bueno gracias por la paciencia saludos
  #6 (permalink)  
Antiguo 07/02/2011, 14:24
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: problema al usar la palabra static dentro de un metodo

Debería funcionar en PHP 5.3+, habría que ver tu implementacion para ver porque falla, que error te tira ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 07/02/2011, 14:44
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problema al usar la palabra static dentro de un metodo

me da este error por ejemplo mira:

No se ha podido realizar la consultaYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(usuario,clave,nombre,apellido ) VALUES ('pedro','pedro23','juanfran ','perez')' at line 1
Ultima consulta sql:INSERT INTO (usuario,clave,nombre,apellido ) VALUES ('pedro','pedro23','juanfran','perez')

y este error viene de aqui de usar static dentro de una consulta de mysql

public function crear()
Código PHP:
    {
        global 
$bd;
        
$propiedades $this->propiedades();
        
//la siguente fila $sql... es la que da error por usar static
        
$sql "INSERT INTO ".static::$nombre_tabla."(";
        
//$sql = "INSERT INTO usuarios (";
        
$sql .= implode(",",array_keys($propiedades));
        
$sql .=" ) VALUES ('";
        
$sql .= implode("','",array_values($propiedades)). "')";
        if(
$bd->enviar_consulta($sql))
        {
            
$this->id $bd->insert_id();
            return 
true;
        }
        else
        {
            return 
false;
        }
    } 
  #8 (permalink)  
Antiguo 07/02/2011, 14:49
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: problema al usar la palabra static dentro de un metodo

Ok , pero en donde definís y seteas esa propiedad ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #9 (permalink)  
Antiguo 08/02/2011, 08:35
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problema al usar la palabra static dentro de un metodo

esa propiedad la defino en cada clase que necesita de su uso te pongo varios ejemplos

clase padre tabla

Código PHP:
class Tabla
{
    protected static 
$nombre_tabla
Código PHP:
class Usuario extends Tabla
{
    
    public 
$id;
    public 
$usuario;
    public 
$clave;
    public 
$nombre;
    public 
$apellido;
    
    protected static 
$nombre_tabla "usuarios"
class Foto extends Tabla

{
protected static $nombre_tabla = "fotos";

Etiquetas: metodo, palabra, static
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 00:30.