我想知道是否有可能以某种方式在单例类中"重新初始化"一个常量。
例如:class Foo {
public static $instance = null;
private $status = null;
private function __construct() { }
public static function getInstance() {
if(!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
self::$instance->setUp();
}
return self::$instance;
}
// Function that will change the $status variable
private function bar() {
...
$this->status = TRUE;
}
private function setUp() {
...
$this->bar();
define("HELLO", $this->status);
}
public function baz() {
...
$this->bar();
}
}
所以如果我调用$foo->baz()它会重写我的HELLO常量
无论是否为单例类,常量都是全局的,常量。一旦define
d,它们就不能被定义或改变。如果需要更改值,请使用变量。在本例中,可能是static
类变量。
从你的注释来看,你似乎对常量的定义有一个误解。
:
define('FOO', rand());
每次脚本执行(每次访问页面)时,该常量将具有不同的值。
不可能:
define('FOO', 'bar');
define('FOO', 'baz');
常量不能在同一个请求中被改变