【发布时间】:2012-06-25 05:37:39
【问题描述】:
让我先说一下,我来自 Java 背景。
PHP 中静态类成员的范围是什么? 即:请求、会话、服务器生命周期等
我目前的理解是,一切都是请求,除非它卡在会话中。我在Language Guide 中没有找到任何可以反驳或确认的内容。
示例
class MyKlass {
public static $K_PAGE_SIZE = 50;
public static $K_WITH_SPRINKLES = true;
}
if (isset($_GET['NO_SPRINKLES'])) {
MyKlass::$K_WITH_SPRINKLES = false;
}
var_dump(MyKlass::$K_WITH_SPRINKLES);
案例 1
如果我要访问包含此代码且查询行中没有任何内容的页面,我应该会看到
bool(true)
案例 2
如果我要访问带有此代码和查询行中的?NO_SPRINKLES=true 的页面,我应该会看到
bool(false)
案例 3
如果我访问查询行中带有?NO_SPRINKLES=true 的页面,然后访问没有它的页面,我应该总是看到 bool(true) 对吗?
案例 4
使用?NO_SPRINKLES=true 访问该页面后,其他访问该页面的人仍应看到 bool(true) 正确吗?
【问题讨论】:
-
是的.. 这就是它应该工作的方式......当然,如果你这样做了
?NO_SPRINKLES=,你也会得到错误,因为你正在测试密钥的存在,而不是值。 -
创建这个写得很好的问题的时间本可以用于实际测试它;)
-
@Dvir Azulay,绝对正确,但我发帖的目的是双重的。一、文档与他人共享。二,看看是否有人指出文档中的某些内容或提供比“这个实验通过了我的测试,所以我假设它是真的”更详细的解释
标签: php oop scope static-members