Foros del Web » Programando para Internet » PHP »

PHP OO Por que pasa esto?

Estas en el tema de Por que pasa esto? en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 14/12/2010, 11:06
Avatar de efedefernan  
Fecha de Ingreso: diciembre-2007
Ubicación: Cantabria
Mensajes: 91
Antigüedad: 16 años, 10 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
  #2 (permalink)  
Antiguo 14/12/2010, 11:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Por que pasa esto?

Es parte de la compatibilidad de PHP5 con PHP4, que te permite hacer eso, el no migrar esos cambios provocaría que muchos scripts no se ejecutaran con PHP5.

Saludos.

Etiquetas: Ninguno
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 21:30.