2011-12-24 87 views
6

我有一個PHP中有許多方法和變量的類。每次我需要一種方法在同一個班級中打電話給另一個人時,我必須添加$this->。 (!),這會產生一些嚴重清晰源,如:

$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; 

有沒有辦法避免$this->無處不在?

+3

非常好的雙關語:) – Marlon 2011-12-24 22:22:55

+0

如何讓每個計算方法修改相應的屬性? – BoltClock 2011-12-24 22:23:29

+0

@BoltClock並不總是會這樣做。每個計算都可以在其他地方重複使用。我已經讀過X,Y和Z以避免傳遞更多的三個變量。 – fernacolo 2011-12-24 22:25:29

回答

6

不,不可能用PHP的內置OOP概念來避免這種構造。

PHP,如JavaScript,Python和Perl - 但不像Java和並不總是像Ruby - 總是需要一個明確的接收器 - 或者,$this「當前情況」 - 訪問的成員。語法只是PHP用來表示這種結構的形式,並且可能嚴重受到「作爲語言的遲到者」並且必須適應它的影響。這也讓人聯想到Perl/C語法。

雖然位置可以改變或位點的數量可以是可還原的,在一天結束時,訪問成員的方法。

快樂編碼。

+0

快樂編碼和聖誕快樂:) – NikiC 2011-12-25 00:21:35

0

你可以將其設置爲即使使用C其他

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

++的東西我更喜歡使用this雖然對你的行爲是一類成員的清晰度。雖然在PHP中不是可選的。

2

你可以在每個方法

extract(get_object_vars($this)); 

這樣做雖然,只會讓你的變量,而不是方法,也不是一成不變的性質。而且他們不會被引用,所以只對閱讀有用。

+0

你救了我一個PHP咆哮。 – clankill3r 2017-03-22 18:43:59

相關問題