PHP类随机数



我想做的事情:

生成单个随机数,该随机数将传递给类内的函数。

换句话说,当调用$this->random时,one((和two((都应该返回相同的值

实际发生的情况:

我有多个随机数,因为rand((被多次调用

重要注意事项:

我想避免将号码存储在会话或SQL 中

我的代码看起来怎么样:

class Install
{
private $random= '';
public function __construct()
{
$this->random = rand(pow(10, 4-1), pow(10, 4)-1);
}
public function one()
{
echo $this->random; //example value = 3304
}
public function two()
{
echo $this-random; //example value = 2504
}
}

如果您只想在同一请求中对相同实例的两个函数调用之间有一个一致的随机数,那么您的代码将按原样运行。

如果您只是希望在不同请求中对同一实例的两个函数调用之间有一个一致的随机数,那么您需要使用某种形式的持久存储,如Session或DB。

如果您只想在对同一请求中的不同实例的两个函数调用之间有一个一致的随机数,那么您需要一个类静态变量。

class StaticRandom {
private static $rand = NULL;
public static function getRand() {
if( is_null(self::$rand) ) {
// this is also where you wouldput the session/DB bits if you
// want to persist across requests.
self::$rand = rand(pow(10, 4-1), pow(10, 4)-1);
}
return self::$rand;
}
public function instanceMethodOne() {
return self::getRand();
}
public function instanceMethodTwo() {
return self::getRand();
}
}
$a = new StaticRandom();
$b = new StaticRandom();
var_dump(
$a->instanceMethodOne(),
$b->instanceMethodTwo()
);

输出:

int(4188)
int(4188)

最新更新