【发布时间】:2019-07-19 21:26:29
【问题描述】:
我在一个类中有一个方法,我想在其中初始化一个静态变量。
1/ 当我初始化变量,然后使用 $this 关键字将其影响为其他值时,它可以工作。例如:
class Test {
// ...
function test($input_variable)
{
static $my_static_variable = null;
if (!isset($my_static_variable))
$my_static_variable = $this->someFunction($input_variable);
// ... some further processing
}
}
2/ 但是,当我尝试使用$this 关键字直接初始化/构造变量时,出现语法错误:unexpected '$this' (T_VARIABLE):
class Test {
// ...
function test($input_variable)
{
static $my_static_variable = $this->someFunction($input_variable); // *** syntax error, unexpected '$this' (T_VARIABLE)
// ... some further processing
}
}
1/ 是初始化静态变量的好方法吗? 为什么不允许 2/,因为它应该做与 1/ 完全相同的事情?
我正在使用 PHP 5.5.21 (cli)(构建时间:2016 年 7 月 22 日 08:31:09)。
谢谢
【问题讨论】:
-
为什么需要在类方法中使用静态变量?请改用类属性:
protected $my_static_variable;,然后使用$this->my_static_variable = $this->someFunction();。 -
@MagnusEriksson 我想使用一个静态变量,所以每次调用之间都会保留它的值。
-
该值也将保留在类属性中。使用类属性的好处是您也可以从其他方法访问该变量,或者这不是您想要的?
-
@MagnusEriksson 是的,你是对的。我在下面写了一个解释。谢谢。
标签: php variables static initialization