你能在 class 之外定义静态方法吗?

Can you define a static method outside of a class?

假设我有一个 class:

class test {
    public static function sayHi() {
        echo 'hi';
    }
}

通过test::sayHi();

调用

我可以在 class 之外定义 sayHi() 或者干脆去掉 class 吗?

public static function sayHi() {
      echo 'hi';
}

我只需要这个功能来封装脚本的代码。 也许答案不是静态方法而是普通函数 def?

没有 class 的静态方法根本没有任何意义。 static 关键字表示此方法对于 class 的所有实例都是相同的。这使您能够在 class 本身而不是其实例之一上静态地调用它..好吧..。

如果方法的内容是自包含的,意味着它不需要class的任何其他静态变量或方法,您可以简单地省略class并将代码放在一种全局方法。使用全局方法被认为是一种不好的做法。

所以我的建议是只保留 class,即使其中只有一个方法。这样您仍然可以自动加载文件,而不必自己要求它。

OOP 中的函数默认是public,你可以将它们修改为私有的,比如:

private function test(){
    //do something
}

或者像你说的,静态的,在 public 或私有的,比如:

private static function test(){
   //do something
}

但是如果您不使用 OOP,默认情况下函数是全局的并且 public,您不能将它们的访问权限更改为私有。这不是它们应该的工作方式,因为如果您将它们的类型更改为私有,您将永远无法访问该功能。此外,static 不起作用,因为它是 OOP 的另一个 属性...

然后,您可以简单地创建该函数并从您想要的任何地方访问它(显然在哪里可用 :P 因为您需要包含存储的文件)