Açıkça PHP özelliklerini bildirmek için önemli mi?

4 Cevap

PHP basit bir blog yazma uygulama oluşturmak için bir öğretici takip ve ek yeteneklere sahip ki bu eğitimde sınıfları değiştirdiniz. Bu çok çıplak kemikleri uygulamayı değiştirme, ancak ben bir ilginç durum karşısında çalıştırmak, bana PHP nasıl çalıştığını daha iyi bir anlayış vermiştir.

Projemde sınıfların böyle bir public $id, public $author, public $post olarak yaklaşık yarım düzine sınıf özelliklere sahiptir. Bu özellikler buluyorum ancak bu sınıfın başında ilan ben doğru bu özellikleri app hala fonksiyonları biri ama tüm kaldırırsanız. Vardır

Bu sınıf hala bu gibi bu özellik değişkenleri atar eğer bir sınıfın başından itibaren böyle public $datePosted olarak mal beyanında çıkarmanın yanlış olduğunu: `$ this-> datePosted = $ someVariableName; '

4 Cevap

Eğer beyan edilmiş access bir sınıf özelliği çalışırsanız, PHP bir uyarı verecektir:

class Foo { }

var $fu = new Foo();
echo $fu->baz;

Notice: Undefined property: Foo::$baz in blah.php on line 4

Önce bir değere ayarlarsanız ($fu->baz = 'blah') sonra şikayet olmaz, ama bu harika bir durum değil.

Sen kesinlikle tüm sınıf değişkenleri bildirmek gerekir (tabii biraz eğlenmek istediğiniz sürece magic methods) ...

Bu üyeler açıkça yerine kamu üyeleri olarak onları atanmış değil çünkü sadece varsaymak daha kamu olarak tanımlanmış olduğunu kodunuzu okuyan herkes için çok daha net.

Ayrıca, $this->$datePosted yanlış, bu gibi olmalıdır:

$this->datePosted = $someVariable;

Eğer bir hata ile karşılaşan neden olabilmektedir.

PHP sınıf üyesi tanımlarını nasıl işlediği konusunda gerçekten gevşek. Sen technically onlara bildirmek zorunda değilsiniz. Ancak should, iki büyük nedenlerinden için:

  • Sınıfları ile çalışırken onların editörün kod intellisense (otomatik tamamlama) yararlanabilirsiniz eğer akıllı IDE (Eclipse, Aptana, Zend Studio) ile İnsanlar seveceksiniz. Bu özellik gerçekten yazım hataları içeren hata karşı önlemeye yardımcı olur. Eğer alanları beyan yoksa, IDE sınıf 'alanlarını belirleme gerçek bir yol vardır.

  • Düzgün tanımlı alanları bir eksikliği görürseniz Birisi sadece derlenmiş bir dil (C + +) ile çalışma yaptırılır olasılıkla senden sonra bir tetikçi gönderir. Onları bildirmek için sadece iyi bir uygulamadır. Için hiçbir neden yok.

Eğer beyanı kaldırmak ve kod önce buna yazma için bu değişkeni okur eğer Ayrıca, bir hata gibi olacak

PHP Notice: Undefined property: A::$unexistent in C:\temp\test.php on line 8

Notice: Undefined property: A::$unexistent in C:\temp\test.php on line 8