2011-12-24 26 views
6

私はPHPで多くのメソッドと変数を持つクラスを持っています。同じクラスの別のメソッドを呼び出すメソッドが必要になるたびに、$this->を追加する必要があります。 (!)は:どこでも$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; 

これは、次のようないくつかのひどく読みやすいソースを生成しますか?

+3

非常に素敵なパン:) – Marlon

+0

それぞれの計算メソッドをそれぞれのプロパティを変更するのはどうですか? – BoltClock

+0

@BoltClock必ずしもそうとは限りません。各計算は他の場所で再利用可能です。より多くの3つの変数を渡すことを避けるために、すでにX、Y、Zを読み込ませました。 – fernacolo

答えて

6

いいえ、PHPの組み込みのOOPという概念でその構造を避けることはできません。

のJavaScript、PythonやPerlのようなPHP、 - が、常にルビーのようなJavaとは異なり及びません - あるいは、「現在のインスタンス」の$this - - アクセスメンバーへは、常に明示的な受信機が必要です。構文は、PHPがこの構文を表すために使用するフォームのようなものであり、言語に「遅れている」こととそれに適合する必要がある可能性が非常に高いです。また、Perl/C構文を連想させる。

位置を変更することができる、またはサイトの数は、メンバーにアクセスする方法であることは、一日の終わりには、還元性であってもよいです。

ハッピーコーディング。それはあなただけは、変数、メソッドではない、また静的プロパティを取得してみましょうであろうが

+0

ハッピーコーディングとメリークリスマス:) – NikiC

0

あなたは私はあなたがクラスメンバに作用している明確にするためもののthisを使用することを好むとしても、C++で何か他のもの

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

に設定することができます。 PHPではオプションではありません。

2

あなたは、各メソッド

extract(get_object_vars($this)); 

でこれを行うことができます。そして、彼らは参考にはならないので、読書にのみ役立ちます。

+0

あなたは私にPHPの暴言を救った。 – clankill3r