PHP - Asignar un objeto como propiedad de la clase de otro objeto

   
Vista:

Asignar un objeto como propiedad de la clase de otro objeto

Publicado por Caruso (27 intervenciones) el 06/01/2014 16:41:14
Hola tengo el siguiente codigo en php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
 
class equipo{
    private $_idEquipo;
    private $_descripcion;
    private $_dirip;
    private $_dirmac;
    private $_empleado;
 
    public function getIdEquipo(){
        return $this->_idEquipo;
    }
    public function getDescripcion(){
        return $this->_descripcion;
    }
    public function getDirip(){
        return $this->_dirip;
    }
    public function getDirmac(){
        return $this->_dirmac;
    }
    public function getEmpleado(){
        return $this->_empleado;
    }
    public function setIdEquipo($idEquipo){
        $this->_idEquipo=$idEquipo;
    }
    public function setDescripcion($Descripcion){
        $this->_descripcion=$Descripcion;
    }
    public function setDirip($Dirip){
        $this->_dirip=$Dirip;
    }
    public function setDirmac($Dirmac){
        $this->_dirmac=$Dirmac;
    }
    public function setEmpleado(empleado $empleado){
        $this->_empleado= new empleado();
 
    }
    public function getAll(){
        $SQL="select * from equipo";
        $bd=new BaseDeDatos();
        $result=mysql_query($SQL);
        if(!$result) {
            die('No se ha podido ejecutar la consulta');
        }
        $aItems=array();
        // Buscamos todas las filas afectadas (Todos los empleados encotnrados)
 
        while($row = mysql_fetch_object($result))
        {
            $e=new equipo();
            $e->setIdEquipo($row->idequipo);
            $e->setDescripcion($row->descripcion);
            $e->setDirip($row->ip);
            $e->setDirmac($row->mac);
            $e->setEmpleado(new empleado());
            $aItems[] = $e;
    }
    return $aItems;
    }
    public function buscar($id){
        $bd= new BaseDeDatos();
        $SQL="select * from equipo where idequipo='$id'";
        $result=mysql_query($SQL);
        $row=mysql_fetch_object($result);
        $this->setIdEquipo($row->idequipo);
        $this->setDescripcion($row->descripcion);
        $this->setEmpleado($row->idempleado);
        $this->setDirip($row->dirip);
        $this->setDirmac($row->dirmac);
    }
    public function modificar(){
        $bd=new BaseDeDatos();
        $id=$this->getIdEquipo();
        $SQL="update equipo set descripcion='".$_POST['Descripcion']."',empleado= '".$_POST['empleado']."',dirip='".$_POST['dirip']."','".$_POST['dirip']."'where idequipo='$id'";
        mysql_query($SQL);
    }
    public function eliminar(){
        $bd=new BaseDeDatos();
        $id=$this->getIdEquipo();
        $SQL="delete from equipo where idequipo='$id'";
        mysql_query($SQL);
    }
}
 
?>

El caso es que no se como hacer, ya que a un equipo le corresponde un empleado, y necesito hacer el getter y el setter para el empleado, osea es un objeto y no un string, lo que hice no esta bien, en la tabla que muestra el navegador tengo ver/editar, que me da el siguiente error:

Catchable fatal error: Argument 1 passed to equipo::setEmpleado() must be an instance of empleado, string given, called in C:\xampp\htdocs\sge\equipo\includes\Equipo.php on line 70 and defined in C:\xampp\htdocs\sge\equipo\includes\Equipo.php on line 37

Por lo que entiendo me esta diciendo que tengo que pasarle un empleado especifico, y no unos nuevo, pero bueno no se si me pueden ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Asignar un objeto como propiedad de la clase de otro objeto

Publicado por xve (5520 intervenciones) el 06/01/2014 17:49:29
Hola Caruso, lo que te esta diciendo, es que tienes que pasar un objeto de la clase empleado, no un id de empleado o texto...

Entiendo que dispones de una clase empleado, verdad?

Si es así, pasar un objeto seria como:
1
2
objetoEmpleado=new emplado()
$this->setEmpleado(objetoEmpleado);

Coméntanos si te sirve, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Asignar un objeto como propiedad de la clase de otro objeto

Publicado por Caruso (27 intervenciones) el 06/01/2014 18:18:35
El codigo de empleado es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
 
class empleado {
    private $_idEmpleado;
    private $_apellido;
    private $_legajo;
    private $_nombre;
 
    public function setIdEmpleado($idEmpleado){
        $this->_idEmpleado=$idEmpleado;
    }
    public function setApellido($apellido){
        $this->_apellido=$apellido;
    }
    public function setLegajo($legajo){
        $this->_legajo=$legajo;
    }
    public function setNombre($nombre){
        $this->_nombre=$nombre;
    }
    public function getIdEmpleado(){
        return $this->_idEmpleado;
    }
    public function getApellido(){
        return $this->_apellido;
    }
    public function getNombre(){
        return $this->_nombre;
    }
    public function getLegajo(){
        return $this->_legajo;
    }
    public function __construct($apellido,$idEmpleado,$legajo,$nombre){
        $this->_apellido=$apellido;
        $this->_idEmpleado=$idEmpleado;
        $this->_legajo=$legajo;
        $this->_nombre=$nombre;
    }
    public function insertar(){
        $bd=new BaseDeDatos();
        $this->_idEmpleado=$bd->getUltimoIdInsertadio();
        $SQL="insert into empleado (idEmpleado,apellido,nombre,legajo) values";
        $SQL.="('$this->_idEmpleado','$this->_apellido',$this->_legajo,'$this->_nombre')";
 
        mysql_query($SQL) or die (mysql_error());
 
                 }
    public function getAll(){
 
 
        $SQL="select * from empleado";
        $bd=new BaseDeDatos();
        $result=mysql_query($SQL);
        if(!$result) {
            die('No se ha podido ejecutar la consulta');
        }
 
        // Buscamos todas las filas afectadas (Todos los empleados encotnrados)
 
        while($row = mysql_fetch_object($result))
        {
            $e=new empleado();
            $e->setIdEmpleado($row->idEmpleado);
            $e->setNombre($row->nombre);
            $e->setApellido($row->apellido);
            $e->setLegajo($row->legajo);
 
            // Por cada empleado (fila) agregaremos datos al array que devolveremos
            $aItems[] = $e;
        }
 
        // Devolvemos el array
        return $aItems;
    }
    public function buscar($id){
        $bd= new BaseDeDatos();
        $SQL="select * from empleado where idEmpleado='$id'";
        $result=mysql_query($SQL);
        $row=mysql_fetch_object($result);
        $this->setIdEmpleado($row->idEmpleado);
        $this->setApellido($row->apellido);
        $this->setNombre($row->nombre);
        $this->setLegajo($row->legajo);
 
    }
    public function modificar(){
        $bd=new BaseDeDatos();
        $id=$this->getIdEmpleado();
        $SQL="update empleado set apellido='".$_POST['apellido']."',nombre= '".$_POST['nombre']."',legajo='".$_POST['legajo']."'where idEmpleado='$id'";
        mysql_query($SQL);
    }
    public function eliminar(){
        $bd=new BaseDeDatos();
        $id=$this->getIdEmpleado();
        $SQL="delete from empleado where idEmpleado='$id'";
        mysql_query($SQL);
    }
    }
?>

Y me da mucho erroes, disculpa mi ignorancia, ajja


Warning: Missing argument 1 for empleado::__construct(), called in C:\xampp\htdocs\sge\equipo\includes\Equipo.php on line 55 and defined in C:\xampp\htdocs\sge\empleado\includes\Empleado.php on line 33

Warning: Missing argument 2 for empleado::__construct(), called in C:\xampp\htdocs\sge\equipo\includes\Equipo.php on line 55 and defined in C:\xampp\htdocs\sge\empleado\includes\Empleado.php on line 33

Warning: Missing argument 3 for empleado::__construct(), called in C:\xampp\htdocs\sge\equipo\includes\Equipo.php on line 55 and defined in C:\xampp\htdocs\sge\empleado\includes\Empleado.php on line 33

Warning: Missing argument 4 for empleado::__construct(), called in C:\xampp\htdocs\sge\equipo\includes\Equipo.php on line 55 and defined in C:\xampp\htdocs\sge\empleado\includes\Empleado.php on line 33

Notice: Undefined variable: apellido in C:\xampp\htdocs\sge\empleado\includes\Empleado.php on line 34

Notice: Undefined variable: idEmpleado in C:\xampp\htdocs\sge\empleado\includes\Empleado.php on line 35

Notice: Undefined variable: legajo in C:\xampp\htdocs\sge\empleado\includes\Empleado.php on line 36

Notice: Undefined variable: nombre in C:\xampp\htdocs\sge\empleado\includes\Empleado.php on line 37

Notice: Use of undefined constant empleado - assumed 'empleado' in C:\xampp\htdocs\sge\equipo\includes\Equipo.php on line 38

Osea falta llamar alas variables del constructor??

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Asignar un objeto como propiedad de la clase de otro objeto

Publicado por Caruso (27 intervenciones) el 06/01/2014 21:11:57
Osea al constructor hay que pasarle parametros que tienen que tener valores asociados, para eso tendria que hacer una consulta con el idempleado que tengo en la tabla equipo y asignar a cada parametro su valor. Voy a seguir probando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar