El siguiente código es de una clase simple.
¿ Mis preguntas son las siguientes?
¿Por qué puedo definir un metodo que utiliza un atributo que no está definido en la clase ("$this->descuento") y no devuelve un error al usarlo?
Y
¿ Por que se puede asignar a un objeto un atributo que no existe en la clase?
la linea de codigo es "$articulo1->descuento=10;"
CLASE:
Código:
<?php
class articulo{
//ATRIBUTOS
public $nombre;
public $precio;
//CONSTRUCTOR
public function __construct($nombre,$precio){
$this->nombre=$nombre;
$this->precio=$precio;
}
//METODOS
public function damedatos() {
echo "NOMBRE: ".$this->nombre."<br/>";
echo "PRECIO: ".$this->precio."<br/>";
}
public function descuento()
{
echo "PRECIO CON ".$this->descuento."€ DESCUENTO: ".($this->precio-$this->descuento);
}
}
//INSTANCIO EL OBJETO
$articulo1= new articulo("libro",20);
// LLAMO AL METODO
$articulo1->damedatos();
//ASIGNO UN ATRIBUTO QUE NO ESTÄ DEFINIDO EN LA CLASE.
// LA CLASE SI SE COMENTA ESTA LINEA FUNCIONA IGUAL PERO SIN HACER EL DESCUENTO.
$articulo1->descuento=10;
//LAMO AL METODO QUE UTILIZA UN ATRIBUTO QUE NO ESTÁ DEFINIDO.
$articulo1->descuento();
?>
Espero alguna respuesta.
GRACIAS