gpt4 book ai didi

php - PHP中的静态方法与非静态方法有什么区别吗?

转载 作者:IT王子 更新时间:2023-10-29 00:03:53 26 4
gpt4 key购买 nike

class t {
public function tt()
{
echo 1;
}
}
t::tt();

看到了吗?非静态函数也可以在类级别调用。那么如果我在public之前添加一个static关键字有什么不同呢?

最佳答案

除此之外,如果您尝试在您的方法中使用 $this,如下所示:

class t {
protected $a = 10;
public function tt() {
echo $this->a;
echo 1;
}
}
t::tt();

静态调用非静态方法时会出现 fatal error :

Fatal error: Using $this when not in object context in ...\temp.php on line 11

即你的例子有点太简单了,与实际情况不符;-)


另请注意,您的示例应该给您一个严格的警告(quoting):

Calling non-static methods statically generates an E_STRICT level warning.

而且它确实做到了(至少,对于 PHP 5.3):

Strict Standards: Non-static method t::tt() should not be called statically in ...\temp.php on line 12
1

所以:不太好 ;-)


不过,静态调用非静态方法看起来不像任何一种好的做法(这可能是它引发严格警告的原因),因为静态方法与非静态方法的含义不同-static :静态方法不引用任何对象,而非静态方法在调用类的实例上工作。


再次重申:即使 PHP 允许您做某事(可能出于历史原因——比如与旧版本的兼容性),这并不意味着您应该这样做!

关于php - PHP中的静态方法与非静态方法有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2439036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com