2011-01-29 12 views
22

¿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?

+1

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

Respuesta

46

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(); 
+4

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

+4

+1 ¡Ejemplo muy bueno y pedagógico! Los principiantes a menudo confunden la clase y la instancia (objeto). –

+0

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

Cuestiones relacionadas