2011-01-29 26 views
22

PHP'de Nesne ve Sınıf arasındaki fark nedir? Çünkü soruyorum, ikisini de anlamıyorum.PHP'de nesne ve sınıf arasındaki fark nedir?

Bana bir iyi örnek arasındaki farkı söyler misiniz?

+1

Sınıflar PHP'de gereklidir:

Burada daha değişmez bir örnek gerekirse aslında binaların bahsediyor başka pasajı bu. [Prototip tabanlı dillerde (JavaScript, Lua)] (http://en.wikipedia.org/wiki/Prototype-based_programming) aslında sadece nesneye ihtiyacınız var. Bu yüzden sınıflara duyulan ihtiyaç hakkında kafa karışıklığı mantıksız değildir. – mario

cevap

46

Temel PHP OOP'ta read the manual'un olduğunu varsayalım.

için kullandığınız bir sınıf,'un özelliklerini, yöntemlerini ve nesnelerin davranışını tanımlar. Nesneler, bir sınıftan oluşturduğunuz şeylerdir. Bir sınıfı planı olarak düşünün ve bir nesneyi (sınıf) takip ederek oluşturduğunuz gerçek bina olarak düşünün. burada

// 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(); 

nesneler (A ve B) ayrıdır (Evet,. Planı/bina benzetme ölüme yapılmıştır biliyorum) ama MyClass sınıfın her iki nesnelerdir. Blueprint/bina benzetmesine geri dönerek, iki farklı bina inşa etmek için aynı planı kullandığını düşünün. o yaşlı ve daha statik cepten paradigmasını takip ettiklerinden

// 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, nesneleri, başvuru veya tanıtıcılarla aynı şekilde ele alır; bu, her değişkenin tüm nesnenin bir kopyası yerine bir nesne başvurusu içerdiği anlamına gelir +1 – kjy112

+4

+1 Çok iyi ve pedagojik örnek! Yeni başlayanlar genellikle sınıfı ve örneği (nesne) karıştırırlar. –

+0

Özel $ number_of_floors = 5; 've' private $ color; 'Nesne değişkenleri/özellikleri 'olarak adlandırılan bir sorum var? 'Public function __construct ($ paint)' 'Class constructor' olarak adlandırılır. Yani, neden "Sınıf kurucusu" ile aynı değil, "Nesne değişkenleri/özellikleri" yerine "Sınıf değişkeni/özellikleri" olarak adlandırılır. – codenext

İlgili konular