<?php class Empleado { private $nombre; private $sueldo; function __construct($nombre, $sueldo) { $this->nombre = $nombre; } function paga() { return $this->sueldo / 12; } public function __get($propiedad) { if (property_exists($this, $propiedad)) { return $this->$propiedad; } else { throw new Exception("No existe la propiedad"); } } public function __set($property, $value) { if (property_exists($this, $property)) { if ($property == "sueldo") { if ($value > 600) { $this->sueldo = $value; } else { throw new Exception("Sueldo debe ser > 600"); } } elseif (!empty($value)) { $this->$property = $value; } } } } class comercial extends empleado { private $comision = .1; protected $ventas; public function __construct($nombre, $sueldo, $ventas) { parent::__construct($nombre, $sueldo); $this->ventas = $ventas; } function paga() { $p = parent::paga(); return $p + $this->ventas * $this->comision / 12; } }
index.php
$juan = new Empleado("Juan", 300); $p=new comercial("Juasdan", 300,9000); echo $p->nombre; echo $p->paga(); try { $juan->sueldo = 6000; echo $juan->sueldo; echo $juan->paga(); } catch (Exception $error) { echo $error->getMessage(); }