gpt4 book ai didi

php - 什么时候需要使用静态方法?

转载 作者:可可西里 更新时间:2023-10-31 22:12:17 24 4
gpt4 key购买 nike

我认为通常我们使用静态方法是因为我们不需要实例化对象。并且我们可以使用className::staticFunction来调用静态方法,bub今天发现:

test1.php

<?php
class Foo {
static public function helloWorld() {
print "Hello world " ;
}
}
Foo::helloWorld();

test2.php

<?php
class Foo {
public function helloWorld() {
print "Hello world " ;
}
}
Foo::helloWorld();

问题:

以上两个脚本都有效。我们没有将函数声明为static,我们仍然可以使用className::staticFunction 来调用该函数。为什么我们需要使用静态方法?

最佳答案

We did not declare function as static, we can still use className::staticFunction

您可能没有注意到 PHP 会提示第二种类型的调用:

PHP Strict Standards: Non-static method Foo::helloWorld() should not be called statically in php shell code on line 1

Strict Standards: Non-static method Foo::helloWorld() should not be called statically in php shell code on line 1

要使这些通知可见,您需要设置 error_reporting 的值到 -1,使用 ini_set() 或通过 php.ini 配置文件;顺便说一句,这是在开发过程中推荐的。

结论

静态调用的函数应声明为static function xyz()

更新

顺便说一句,使用范围解析运算符 :: 并不一定意味着您正在进行静态调用;考虑这个例子:

class Foo 
{
public function helloWorld()
{
print "Hello world ";
}

public function doSomething()
{
self::helloWorld();
}
}

$f = new Foo;
$f->doSomething();

这是有效的,因为使用 self:: 而不是 Foo:: 不会改变调用“模式”(除非你调用的方法被定义为静态)。

关于php - 什么时候需要使用静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18267013/

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