Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/12/2010, 11:06
Avatar de efedefernan
efedefernan
 
Fecha de Ingreso: diciembre-2007
Ubicación: Cantabria
Mensajes: 91
Antigüedad: 17 años, 2 meses
Puntos: 11
Pregunta Por que pasa esto?

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