你能在 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 因为您需要包含存储的文件)
假设我有一个 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 因为您需要包含存储的文件)