【发布时间】:2020-10-12 15:52:10
【问题描述】:
我想将我的静态变量的值设置为一个函数。但是 __construct 永远不会与静态调用一起运行。那么我可以做些什么来设置这个变量,以便我可以在课堂上多次重复使用它呢?
function sayhey(){
return 'hey';
};
// my class i do control
class Class1 {
private static $myvar;
public function __construct(){
self::$myvar = sayhey();
}
public static function func1(){
echo '<pre>'; print_r(self::$myvar); echo '</pre>';
}
}// end class
// how can i make this work if the __construct never runs for static calls?
Class1::func1();
// obviously this works
//$class1 = new Class1();
//$class1->func1();
【问题讨论】:
-
如果你有一个静态类但需要一个构造函数,你不认为你有一些糟糕的设计吗?也许类不应该是静态的?
-
@u_mulder 没有静态类,它是静态属性。
-
他遇到的问题是静态属性的初始值必须是常数,不能动态计算。
-
我的错,应该是 - 方法不应该是静态的。