我有一个在我的应用程序中声明的类,它有一个私有静态成员,如下所示:
class SomeClass{
private static myMember = array();
public static getterFunction(){}
public static setterFunction(){}
}
我的问题/担忧是多个请求(我的想法就像 Java 中的线程)将能够修改这个静态成员。 我对 php 范围和静态成员的理解是,它们在请求范围内,为每个新请求创建一个新变量,并在请求完成后销毁。 也就是说,这将是一件很难测试的事情(至少我想不出一个简单的方法),所以我宁愿安全而不是后悔。
我的评估正确吗? 我读过的 PHP 文档在细节方面非常糟糕,所以我还没有能够权威地回答......
没有数据(无)是持久的,或者在 PHP 脚本的不同实例之间共享,除非您明确这样做(例如使用会话、数据库、文件、共享内存)。每个PHP实例都是它自己的东西,每个新请求都会导致Web服务器启动一个单独的实例。
所以是的,你是对的。
在 PHP 中,默认情况下没有共享内存。每个请求都在单独的进程中处理,因此它们彼此不了解。
我希望我正确理解了你的问题。
例如:
您有一个简单的脚本.php文件,该文件在传递 GET 参数时在类中设置私有字段:
<?
class A {
private $x = 1;
public function setX($x) {$this->x = $x;}
public function getX() {return $this->x;}
}
$a = new A();
if (!empty($_GET['x'])) {
$a->setX($_GET['x']);
sleep(3);
}
echo $a->getX();
?>
您一次执行两个请求:
GET /script.php?x=5
GET /script.php
第二个请求将打印"1"。是的,你是对的!