在PHP中更改静态函数中静态变量的值
在php中,如果静态类方法中有一个静态变量:在PHP中更改静态函数中静态变量的值,php,static,Php,Static,在php中,如果静态类方法中有一个静态变量: class Functions { public static function fetch_id() { static $id; .... } } 我可以从外部更改静态$id的值吗?即,是否有可能做到: Functions::$id = 'something new'; 即使有可能,这也不是一个好主意,因为很难判断谁、在哪里、何时更改了值。毕竟,局部变量是局部变量 如果需要全局访问,可以将其放在全局
class Functions {
public static function fetch_id() {
static $id;
....
}
}
我可以从外部更改静态$id的值吗?即,是否有可能做到:
Functions::$id = 'something new';
即使有可能,这也不是一个好主意,因为很难判断谁、在哪里、何时更改了值。毕竟,局部变量是局部变量 如果需要全局访问,可以将其放在全局上下文中,或者提供一种设置/获取该局部变量的方法 如果不希望总是传递新值,可以在该方法中使用If语句,如下所示:
class Functions {
public static function fetch_id($arg=null) {
static $id=null;
if($arg!==null){
$id=$arg;
return null;
}
if( $id===null ){
return false;
}
return $id;
}
}
你不能从外部看到函数的局部变量,不管它们是静态的还是非静态的。因此,如果不向$id传递新值,就不可能更改$id。
Functions::fetch_id('something new')
。当然不能。(除了读取函数中的db或其他内容)真正的问题是,为什么要通过函数参数以外的任何方式更改函数中变量的值。