gpt4 book ai didi

php - 在php中使用自定义类初始化静态成员

转载 作者:行者123 更新时间:2023-12-02 01:20:27 24 4
gpt4 key购买 nike

由于 PHP 中没有枚举,我尝试做这样的事情:

class CacheMode{    

public static $NO_CACHE = new CacheMode(1, "No cache");

private $id, $title;

public function getId(){
return $this->id;
}

public function getTitle(){
return $this->title;
}

private function __construct($id, $title){
$this->id = $id;
$this->title = $title;
}
}

问题是,如果运行脚本,我会收到解析错误:

Parse error: syntax error, unexpected T_NEW 

我用这个“解决了这个问题”:

class CacheMode{     
public static function NO_CACHE(){
return new CacheMode(1, __("No cache",'footballStandings'));
}

public static function FILE_CACHE(){
return new CacheMode(2, __("Filecache",'footballStandings'));
}

public static function VALUES(){
return array(self::NO_CACHE(), self::FILE_CACHE());
}

private $id, $title;

public function getId(){
return $this->id;
}

public function getTitle(){
return $this->title;
}

private function __construct($id, $title){
$this->id = $id;
$this->title = $title;
}
}

它有效,但我对此不太满意。谁能解释一下,为什么我不能执行 static $xyz = new XYZ();方法或有更好的解决方案来解决这个问题?

最佳答案

我知道这很烦人。我解决它像

class Foo {
public static $var;
}
Foo::$var = new BarClass;

它有点类似于java的“静态代码块”(或者无论它们被称为^^)

该文件无论如何只能包含一次(因为发生“类已定义”错误),因此您可以确定该类下面的代码也被执行一次。

关于php - 在php中使用自定义类初始化静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5606009/

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