2011-12-24 28 views
6

PHP'de birçok yöntem ve değişken içeren bir sınıfa sahibim. Aynı sınıfta bir başkasını aramak için bir yönteme ihtiyacım olduğunda, $this->'u eklemeliyim. (!): Her yerde $this-> önlemek için bir yol var mı

$nextX = $this->calculateNextX($this->DX, $this->DY, $this->DZ); 
$nextY = $this->calculateNextY($this->DX, $this->DY, $this->DZ); 
$nextZ = $this->calculateNextZ($this->DX, $this->DY, $this->DZ); 
$this->X = $nextX; 
$this->Y = $nextY; 
$this->Z = $nextZ; 

Bu gibi bazı kötü okunaklı kaynağı üretir?

+3

Çok güzel pun :) – Marlon

+0

Her hesaplama yöntemine sahip olmak ilgili özelliği değiştirmeye ne dersiniz? – BoltClock

+0

@BoltClock Her zaman böyle olmaz. Her hesap başka yerlerde yeniden kullanılabilir. Daha fazla üç değişken geçirmekten kaçınmak için X, Y ve Z okumalarını zaten yaptım. – fernacolo

cevap

6

Hayır, PHP'nin yerleşik OOP nosyonuyla bu yapıdan kaçınmak mümkün değildir. JavaScript, Python ve Perl gibi

PHP - Java aksine ve her zaman Ruby gibi ama - ya, "Mevcut örnek" için $this - - Erişim üyelerine daima açık alıcısı gerektirir. Sözdizimi, PHP'nin bu kurguyu belirtmek için kullandığı biçimdir ve muhtemelen dile "geç gelme" olmaktan ve ona uymaktan çok etkilenmiştir. Ayrıca Perl/C sözdizimini de hatırlatır.

yer değiştirilebilir veya üye erişme yöntemi olduğu nokta sayısı, günün sonunda, indirgenebilir olabilirken.

Mutlu kodlama. O sadece değişkenleri, değil yöntemleri, ne de statik özelliklerini almak olanak verse de

+0

Mutlu kodlama ve mutlu noeller :) – NikiC

0

Sen bile C

$a = $this; 
$a->stuff(); 

başka bir değere ayarlayabilirsiniz ++ sana bir sınıf üyesinde hareket ediyoruz netlik için olsa this kullanmayı tercih ediyorum. PHP'de isteğe bağlı değil.

2

Her yöntemin

extract(get_object_vars($this)); 

bu yapabilirdi. Ve referans olmazlar, bu yüzden sadece okumak için yararlıdır.

+0

Bana bir php rant kaydettiniz. – clankill3r

İlgili konular