Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problemas con self::

Estas en el tema de Problemas con self:: en el foro de Frameworks y PHP orientado a objetos en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/11/2010, 10:01
Avatar de Xirant  
Fecha de Ingreso: noviembre-2010
Mensajes: 21
Antigüedad: 13 años, 5 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 :)
  #2 (permalink)  
Antiguo 09/11/2010, 10:34
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Problemas con self::

Saludos

Sino estoy mal es porq ue no puedes utilizar $this en un metodo private


Código PHP:

  
private function calculaDescuento($pRebajaFinal){

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

  } 
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 09/11/2010, 10:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Tema movido desde PHP a Frameworks y PHP orientado a objetos

self:: se usa en un ámbito estatico, si tu quieres mandar llamar a un miembro de tu clase tienes que usar el operador $this->

Saludos.
  #4 (permalink)  
Antiguo 09/11/2010, 10:58
Avatar de Xirant  
Fecha de Ingreso: noviembre-2010
Mensajes: 21
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Problemas con self::

Muchas gracias Gator :) (siento haber colocado en mal lugar el post :oS)

Voy a probar inmediatamente. En serio, gracias
  #5 (permalink)  
Antiguo 09/11/2010, 12:34
Avatar de Xirant  
Fecha de Ingreso: noviembre-2010
Mensajes: 21
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Problemas con self::

Solucionado ya, creo que no es exactamente como solicitan que esté hecho, pero lo que es el resultado que se extrae por pantalla es lo pedido (que algo es algo!), mil gracias de nuevo!
  #6 (permalink)  
Antiguo 09/11/2010, 13:33
Avatar de Xirant  
Fecha de Ingreso: noviembre-2010
Mensajes: 21
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Problemas con self::

Gracias también a ti Nano :o)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:34.