Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/11/2010, 10:01
Avatar de Xirant
Xirant
 
Fecha de Ingreso: noviembre-2010
Mensajes: 21
Antigüedad: 13 años, 6 meses
Puntos: 0
Problemas con self::

Hola!

Soy diseñadora web y (loca de mí) me he metido a un curso de experto universitario de desarrollo de aplicaciones web, y me estoy volviendo loca con un problema de POO, a ver si me podéis ayudar!

Estoy con las clases, de una clase Articulo a una clase hijo ArticuloRebajado. Todo va bien, pero hay que hacer una funcion privada llamada calculoDescuento (el precio del articulo * rebaja / 100) y que luego, en el __tooString se vea a través de self::

(Espero haberme explicado bien )

He probado mil maneras diferentes pero no lo consigo y ya es cuestión de estar hasta las ... en fin. Supongo que tengo la mitad del código mal puesto.

Este es el código:

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>

    <?php

   
function __autoload($Articulo) {
  
$file 'class.articulo.php';
  if (
file_exists($file)) require_once $file;
}

final class 
ArticuloRebajado extends Articulo
{

// Definimos el atributo que falta

protected $rebaja;
protected 
$rebajafinal;



public function 
getRebaja(){

       return 
$this->rebaja;

   }
    public function 
setRebaja($pRebaja){

       if(
is_numeric($pRebaja)) { $this->rebaja $pRebaja; }

       else { die(
$pRebaja ' NO es un numero');}
   }

 



// Se añade el constructor llamando al constructor de Articulo (padre)
// para ello usar el parent::

    
public function __construct($pNombre,$pPrecio,$pRebaja,$pRebajaFinal) {

        
$this->rebajafinal $pRebajaFinal;
        
$this->setRebaja($pRebaja);
    
//// lanzamos el constructor de la clase base articulo
    
parent::__construct($pNombre$pPrecio);
    return 
true;
  }


  private function 
calculaDescuento($pRebajaFinal){

      
self::$rebajafinal $pRebajaFinal ;
      
$pRebajaFinal = ($this->precio)*($this->rebaja)/100;

  }


  public function 
__toString()
   {

      
// llamamos al toString del padre (parent::)

      
$vista parent::__toString();

      
$vista .= 'La rebaja es del : ' $this->rebaja ' %<br>';

      
$vista .= 'El descuento es de: ' self::calculaDescuento() . ' €.';


      return 
$vista;


   }

  
//esta llave lo cierra todo
 
}


$objeto = new ArticuloRebajado("Bicicleta"352.1020);
echo 
$objeto;


?>


    </body>
</html>
Muchas gracias por delante, voy a echar un vistazo por la parte de CSS, que es la mía, a ver si puedo echar alguna mano :)