Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Catchable fatal error: Object of class Usuarios could not be converted to string

Estas en el tema de Catchable fatal error: Object of class Usuarios could not be converted to string en el foro de PHP en Foros del Web. Hola amigos! estoy desarrollando un framework propio solo para probarme y saber de que estoy hecho. Hice la conexión a la base de datos sin ...
  #1 (permalink)  
Antiguo 29/07/2016, 09:26
 
Fecha de Ingreso: noviembre-2014
Mensajes: 13
Antigüedad: 9 años, 3 meses
Puntos: 0
Catchable fatal error: Object of class Usuarios could not be converted to string

Hola amigos! estoy desarrollando un framework propio solo para probarme y saber de que estoy hecho.
Hice la conexión a la base de datos sin problemas y el modelo con sus correspondientes getters and setter. Cuando en el controlador llamo al metodo de la clase que envia los datos del usuario a la base de datos, me tira el siguiente error:

Catchable fatal error: Object of class Usuarios could not be converted to string in C:\Users\HP\Dropbox\Backup\Anonimo\src\sistemaUsua rioBundle\model\usuariosModel.php on line 78

Es bastante evidente que me esta diciendo que no toma los atributos como strings y es por eso que no me deja concatenarlo en la consulta. Les dejo mi código a ver si me pueden ayudar, desde ya gracias.

conexion.php

Código PHP:
<?php

include CONFIG."config.php";

class 
conexion{

    public static function 
conectar(){
        try{
            
$cn = new PDO("mysql:host=".HOST.";dbname=".DBUSERPASSWORD);
            return 
$cn;
        }

        catch(
PDOExceptiom $ex){
            
            return 
MENSAJES."error/errorConexion.php";
        }
    }

}
usuariosModel.php // en este archivo esta el error cuando concateno en la consulta

Código PHP:
<?php

    
class Usuarios extends conexion{

        private 
$id;
        private 
$usuario;
        private 
$password;
        private 
$email;
        private 
$nacimiento;
        private 
$registro;
        private 
$estado;
        const 
TABLA 'usuarios';

        public function 
getId(){
            return 
$this->id;
        }

        public function 
getUsuario(){
            return 
$this->usuario;
        }

        public function 
setUsuario($usuario){
            
$this->usuario $usuario;
            return;
        }

        public function 
getPassword(){
            return 
$this->password;
        }

        public function 
setPassword($password){
            
$this->password crypt($password"$2x$07$./f4af7kJi1jdaxlswE34$");
            return;
        }

        public function 
getEmail(){
            return 
$this->email;
        }

        public function 
setEmail($email){
            
$this->email $email;
            return;
        }

        public function 
getNacimiento(){
            return 
$this->nacimiento;
        }

        public function 
setNacimiento($nacimiento){
            
$this->nacimiento $nacimiento;
            return;
        }

        public function 
getRegistro(){
            return 
$this->registro;
        }

        public function 
setRegistro(){
            
$this->registro date('Y-m-d');
            return;
        }

        public function 
getEstado(){
            return 
$this->estado;
        }

        public function 
setEstado($estado){
            
$this->estado $estado;
            return;
        }


        
// funciones utiles

        
public function crearUsuario(){
            
$this->setEstado(false);
            
$this->setRegistro();
            echo 
$this->usuario;
// ACA ESTA EL ERROR
            
$sql "INSERT INTO "self::TABLA ." (usuario, password, email, nacimiento, registro, estado) VALUES ('".$this->usuario."',
             '"
.$this->password."', '".$this->email."', '".$this->nacimiento."', '".$this->registro."', '".$this->estado."')";
            
            
$resultado $this->database->query($sql);

            if(
$resultado){
                return;
            }

            else{
                
VISTA::crear(MENSAJES."error/errorEnvioDeDatos.php");
            }

        }
usuariosController.php

Código PHP:
<?php 
    
    
include USUARIOS_BUNDLE."model/usuariosModel.php";

    class 
usuariosController{

        public function 
registro(){
            
$metodo $_SERVER['REQUEST_METHOD'];

            if(
$metodo == 'POST'){
                
$usuario $_POST['usuario'];
                
$email $_POST['email'];
                
$date $_POST['date'];
                
$password $_POST['password'];
                
$password2 $_POST['password2'];

                if(
$password == $password2){
                    
$usuario = new usuarios();
                    
$usuario->setUsuario($usuario);
                    
$usuario->setEmail($email);
                    
$usuario->setNacimiento($date);
                    
$usuario->setPassword($password);
                    
$usuario->crearUsuario();
                    return 
Vista::crear(MENSAJES."exito/procesadoConExito.php");
                }
                
                
$error "Los datos son incorrectos.";
                return 
Vista::crear(USUARIOS_BUNDLE."views/registro/registro.php""error"$error);
                
            }
            return 
Vista::crear(USUARIOS_BUNDLE."views/registro/registro.php");

        }

    }
  #2 (permalink)  
Antiguo 29/07/2016, 09:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Catchable fatal error: Object of class Usuarios could not be converted to

El error es no saber usar "echo", o usarlo donde no debes ¿o sí entiendes para qué es y cómo funciona?

La instrucción echo ayuda a imprimir cadenas de texto, pero al usar "echo $this->usuario" no estás imprimiendo una cadena de texto: estás imprimiendo un objeto.

Precisamente el error te indica eso "El objeto de clase Usuarios no puede ser convertido a string" y nada más.

¿Solución?

Quita la linea del hecho, no sirve de nada: salvo que sepas lo que hace, y creo que no lo sabes.

Eso o agrega el método mágico __toString() para que entonces dicho objeto sí pueda ser impreso, consulta el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/07/2016, 14:55
 
Fecha de Ingreso: noviembre-2014
Mensajes: 13
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Catchable fatal error: Object of class Usuarios could not be converted to

Tenes razón, pero fue un error mio que estaba probando cosas para ver si andaba. Si saco el echo, me tira el mismo error en la línea donde hago la consulta. Como que no puedo concatenar con los valores de los atributos.
  #4 (permalink)  
Antiguo 29/07/2016, 15:03
 
Fecha de Ingreso: noviembre-2014
Mensajes: 13
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Catchable fatal error: Object of class Usuarios could not be converted to

Ya encontre el error, fijate que el usuariosController.php use una variable $usuario y cuando cree el objeto de la clase usuarios, use el mismo nombre de variables y es por eso que me tiraba error. Muchas gracias por tu aporte igual !

Etiquetas: class, fatal, object, registro, sql, string, tabla, usuarios
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 04:47.