0

假设我有一堂课:

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

调用它test::sayHi();

我可以sayHi()在课堂之外定义或者完全摆脱课堂吗?

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

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

4

2 回答 2

1

没有类的静态方法根本没有任何意义。静态关键字表明该方法对于类的所有实例都是相同的。这使您可以在类本身而不是在其实例之一上静态调用它。

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

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

于 2017-01-06T23:52:04.910 回答
0

OOP 中的函数默认是公共的,您可以将它们修改为私有的,例如:

private function test(){
    //do something
}

或者就像你说的,静态的,在公共的或私人的,比如:

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

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

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

于 2017-01-07T00:44:35.007 回答