php 中的静态变量 gotcha
我来自 Java 背景,最近为一个项目切换到 php。 我在 php.ini 中发现了一种意外行为。
Value set to some static variable is not staying persistent across the requests.
我不确定这是否是预期的行为。因为在 java 中,您始终可以在请求中保留非常常用的变量或说诸如 dbname,hostname,username,password 之类的常量,这样您就不必总是从本地属性文件中读取它们。
这种行为正常吗?如果它是正常的,那么是否有任何替代方法可以让我在请求中保留分配给变量的值?
有人可以建议我在 php 中执行此操作的更好方法吗?
最佳答案
不,虽然静态变量将保留在当前请求中,但您需要将其添加到 session 中以在请求之间保持其值。
例子:
session_start();
class Car {
public static $make;
public function __construct($make) {
self::$make = $make;
}
}
$c = new Car('Bugatti');
echo '<p>' . Car::$make . '</p>';
unset($c);
if (!isset($_SESSION['make'])) {
echo '<p>' . Car::$make . '</p>';
$c = new Car('Ferrari');
echo '<p>' . Car::$make . '</p>';
}
$_SESSION['make'] = Car::$make;
echo '<p>' . $_SESSION['make'] . '</p>';
关于php - php 中的静态变量是否在请求中持续存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/520132/