Temas > Programacion > Php > Operador instanceof en php
Julio

Operador instanceof
Cuando tenemos una lista de objetos de distinto tipo y queremos
saber si un objeto es de una determinada clase el lenguaje PHP nos
provee del operador instanceof.
Confeccionaremos un problema que contenga un vector con objetos
de la clase Empleado y Gerente. Luego calcularemos cuanto ganan en
total los empleados y los gerentes.
<html>
<head>
<title>Pruebas</title>
</head>
<body>
<?php
abstract class Trabajador {
    protected $nombre;
    protected $sueldo;
    public function __construct($nom,$sue)
    {
        $this->nombre=$nom;
        $this->sueldo=$sue;
    }
    public function retornarSueldo()
    {
        return $this->sueldo;
    }
}
class Empleado extends Trabajador {
}
class Gerente extends Trabajador {
}
$vec[]=new Empleado(`juan`,1200);
$vec[]=new Empleado(`ana`,1000);
$vec[]=new Empleado(`carlos`,1000);
$vec[]=new Gerente(`jorge`,25000);
$vec[]=new Gerente(`marcos`,8000);
$suma1=0;
$suma2=0;
for($f=0;$f<count($vec);$f++)
{
    if ($vec[$f] instanceof Empleado)
        $suma1=$suma1+$vec[$f]->retornarSueldo();
    else
        if ($vec[$f] instanceof Gerente)
            $suma2=$suma2+$vec[$f]->retornarSueldo();
}
echo `Gastos en sueldos de Empleados:`.$suma1.`<br>`;
echo `Gastos en sueldos de Gerentes:`.$suma2.`<br>`;
?>
</body>
</html>
Hemos planteado tres clases, la clase Trabajador es una clase
abstracta:
abstract class Trabajador {
...
}
Las clases Empleado y Gerente son subclase de la clase Trabajador
y en este caso por simplicidad no agregan ninguna funcionalidad a la
clase padre:
class Empleado extends Trabajador {
}
class Gerente extends Trabajador {
}
Ahora veamos la parte que nos interesa, primero creamos 5 objetos,
3 de la clase Empleado y 2 de la clase Gerente:
$vec[]=new Empleado(`juan`,1200);
$vec[]=new Empleado(`ana`,1000);
$vec[]=new Empleado(`carlos`,1000);
$vec[]=new Gerente(`jorge`,25000);
$vec[]=new Gerente(`marcos`,8000);
Como podemos ver los 5 objetos se almacenan en un vector. Ahora
tenemos que ver cuanto se gasta en sueldos pero separando lo que
ganan los empleados y los gerentes:
$suma1=0;
$suma2=0;
for($f=0;$f<count($vec);$f++)
{
   if ($vec[$f] instanceof Empleado)
       $suma1=$suma1+$vec[$f]->retornarSueldo();
   else
       if ($vec[$f] instanceof Gerente)
           $suma2=$suma2+$vec[$f]->retornarSueldo();
}
Mediante el operador instanceof preguntamos por cada elemento del
vector y verificamos si se trata de una instancia de la clase Empleado o
de la clase Gerente.
Finalmente mostramos los acumuladores:
echo `Gastos en sueldos de Empleados:`.$suma1.`<br>`;
echo `Gastos en sueldos de Gerentes:`.$suma2.`<br>`;













¿Has olviado tu contraseña?

Pulsa aquí para registrate




Google






LunMarMieJueVieSabDom
    123
45678910
11121314151617
181920 21222324
252627282930 

Jueves 21 de Noviembre 2024
Semana 47

..............................................................................................................................................................................................................................................
(Contacto)..
Esta web utiliza cookies para obtener datos estadísticos de la navegación de sus usuarios. Política de privacidad y Aviso legal