【发布时间】:2010-07-27 15:47:16
【问题描述】:
为什么 PHP 要求您显式编写 $this?如果您必须在这里使用$this,我会理解:
function foo($bar) {
$this->bar = $bar;
}
但您必须用如下所示的冗长代码显式编写它:
$this->var3 = globalFun($this->var, $this->var2[$this->anotherVar], $this->method());
相对于:
$var3 = globaFun($var, $var2[$anotherVar], method());
那么$this的意义何在?
额外的奖励问题:
为什么我们必须区分静态引用和实例?我们为什么需要:
static function getValue() {
return self::value;
}
如果有问题的变量/方法是静态的,PHP 不能在运行时发现吗?现在,如果我想将方法从静态更改为非静态,我必须将所有 self:: 替换为 $this->(反之亦然)。
如果我们有一个 $this,它的行为就像在 Java 中一样,那不是更好吗?
【问题讨论】:
-
这不应该有主观标签吗?例如,我个人喜欢 $(尤其是在 Perl 中),当我看到它在其他语言中丢失时,我感到非常不安。
-
是的,IMO 我喜欢 $ 前缀,因为它可以更直观地表示变量。在代码等中快速扫描它们。(目测和以编程方式搜索)。国际海事组织。
-
@Null 因为 PHP 在设计上不是对象。 PHP 中的 OO 是一个(补丁,错误?)
-
接近票数是怎么回事?这根本不是主观的。这是一个严肃的技术问题。我提到了美元符号,但这个问题完全不相关。
-
这个问题绝不是主观的,也不是争论的。这是关于 PHP 的创建者做出的特定设计选择;以及这种方法的优点是什么。
标签: php language-design