有没有办法避免$ this->到处?

时间:2011-12-24 22:21:23

标签: php oop class

我在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 个答案:

答案 0 :(得分:6)

不,用PHP内置的OOP概念来避免这种结构是不可能的。

PHP,就像JavaScript,Python和Perl一样 - 但与Java不同,并不总是像Ruby一样 - 总是需要一个明确的接收器 - 或者$this用于“当前实例” - 访问会员。语法只是PHP碰巧用来表示这种结构的形式,并且很可能受到“成为语言的后来者”并且不得不适应它的影响。它也让人联想到Perl / C语法。

虽然位置可以更改或网站数量可以减少,但在一天结束时, 是访问成员的方法。

快乐的编码。

答案 1 :(得分:2)

您可以在每种方法中执行此操作

extract(get_object_vars($this));

虽然这只会让你获得变量,而不是方法,也不会获得静态属性。而且它们不会被引用,所以只对阅读有用。

答案 2 :(得分:0)

您可以将其设置为其他内容

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

即使在C ++中,我更喜欢使用this,但为了清楚起见,您正在使用类成员。但它在PHP中不是可选的。