¿Cuál es la diferencia entre objeto y clase en PHP? Pregunto porque, realmente no veo el punto para los dos.Diferencia entre objeto y clase en PHP?
¿Puede decirme la diferencia con un buen ejemplo?
¿Cuál es la diferencia entre objeto y clase en PHP? Pregunto porque, realmente no veo el punto para los dos.Diferencia entre objeto y clase en PHP?
¿Puede decirme la diferencia con un buen ejemplo?
Supongo que tiene read the manual en PHP básico OOP.
Una clase es lo que usa para definir las propiedades, los métodos y el comportamiento de los objetos. Los objetos son las cosas que crea fuera de una clase. Piense en una clase como anteproyecto, y un objeto como el edificio real que construye siguiendo el plano (clase). (sí, ya sé la analogía anteproyecto/edificio se ha hecho a la muerte.)
// Class
class MyClass {
public $var;
// Constructor
public function __construct($var) {
echo 'Created an object of MyClass';
$this->var = $var;
}
public function show_var() {
echo $this->var;
}
}
// Make an object
$objA = new MyClass('A');
// Call an object method to show the object's property
$objA->show_var();
// Make another object and do the same
$objB = new MyClass('B');
$objB->show_var();
Los objetos aquí son distintos (A y B), pero son los dos objetos de la clase MyClass
. Volviendo a la analogía del plan/construcción, piense que se trata de utilizar el mismo modelo para construir dos edificios diferentes.
Aquí hay otro fragmento que realmente habla de edificios si necesita un ejemplo más literal:
// Class
class Building {
// Object variables/properties
private $number_of_floors = 5; // Each building has 5 floors
private $color;
// Constructor
public function __construct($paint) {
$this->color = $paint;
}
public function describe() {
printf('This building has %d floors. It is %s in color.',
$this->number_of_floors,
$this->color
);
}
}
// Build a building and paint it red
$bldgA = new Building('red');
// Build another building and paint it blue
$bldgB = new Building('blue');
// Tell us how many floors these buildings have, and their painted color
$bldgA->describe();
$bldgB->describe();
PHP trata los objetos de la misma manera que las referencias o identificadores, lo que significa que cada variable contiene una referencia de objeto en lugar de una copia del objeto completo +1 – kjy112
+1 ¡Ejemplo muy bueno y pedagógico! Los principiantes a menudo confunden la clase y la instancia (objeto). –
Tengo una pregunta por qué 'private $ number_of_floors = 5;' y 'private $ color;' se llaman 'Object variables/properties'? La 'función pública __construct ($ pintura)' se llama 'Class constructor'. Entonces, ¿por qué no lo mismo que 'Class constructor'? Se llaman' Class variable/properties' en lugar de 'Object variables/properties'. – codenext
Las clases son necesarias en PHP, ya que sigue el paradigma de programación orientada a objetos mayores y más estática. En [lenguajes basados en prototipos (JavaScript, Lua)] (http://en.wikipedia.org/wiki/Prototype-based_programming) realmente solo necesita objetos. Entonces la confusión sobre la necesidad de clases no es irracional. – mario