在PHP中更改静态函数中静态变量的值

在PHP中更改静态函数中静态变量的值,php,static,Php,Static,在php中,如果静态类方法中有一个静态变量: class Functions { public static function fetch_id() { static $id; .... } } 我可以从外部更改静态$id的值吗?即,是否有可能做到: Functions::$id = 'something new'; 即使有可能,这也不是一个好主意,因为很难判断谁、在哪里、何时更改了值。毕竟,局部变量是局部变量 如果需要全局访问,可以将其放在全局

php中,如果静态类方法中有一个静态变量:

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或其他内容)真正的问题是,为什么要通过函数参数以外的任何方式更改函数中变量的值。