php中静态方法有什么作用,PHP中的静态方法与非静态方法有什么不同吗?

这篇博客讨论了在PHP中静态调用非静态方法时出现的错误和警告,强调了这种方法不被推荐的原因。文章指出,静态方法不依赖于对象实例,而非静态方法则在类的实例上操作。尽管PHP允许这种调用,但这样做可能会导致严格标准警告,并且不符合最佳编程实践。作者建议遵循面向对象编程的原则,正确使用静态和非静态方法。
摘要由CSDN通过智能技术生成

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

class t {

protected $a = 10;

public function tt() {

echo $this->a;

echo 1;

}

}

t::tt();

当静态调用非静态方法时,会发生致命错误:

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

所以:不是那么好;-)

静态地调用一个非静态方法并不像任何一种良好的做法(这可能是为什么它引发严格的警告),因为静态方法与非静态方法的含义不同:静态方法不引用任何对象,而非静态方法在调用的类的实例上工作.

再一次:即使PHP允许你做某事(也许由于历史原因 – 如与旧版本的兼容性),这并不意味着你应该这样做!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值