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
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Asignar un objeto como propiedad de la clase de otro objeto

Publicado por xve (6935 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