class global_class extends Timemine
{
private $DBPrefix = '';
public function __construct()
{
global $DBPrefix;
// Load settings
self::loadsettings();
$this->database = $db;
$this->DBPrefix = $DBPrefix;
.
.
$DBPrefix
在外面被声明为私有,但在函数内部重新声明?全球化。
它是否正确?
谢谢。
答案 0 :(得分:1)
$DBPrefix
实际上没有重新申报。变量有两个版本。第一个(private $DBPrefix = '';
)是一个成员变量,第二个(global $DBPrefix
)是构造函数的局部范围变量(它指的是变量的第三个全局版本,但让'把它放在一边)。有关更多信息,请参阅有关variable scope的PHP文档
然后使用以下行将成员变量的值设置为与本地范围变量相同的值:$this->DBPrefix = $DBPrefix;
因此在此行之后两个版本具有相同的值。从技术上讲,您的代码是正确的。
但是,使用global
通常很糟糕。最好在构造函数中传递$DBPrefix
,如:
public function __construct($DBPrefix) {
// Load settings
self::loadsettings();
$this->database = $db;
$this->DBPrefix = $DBPrefix;
}