PHP静态类成员范围

wma*_*but 1 php oop scope static-members

让我先说一下,我来自Java背景.

PHP中静态类成员的范围是什么?即:请求,会话,服务器生命周期等

我目前的理解是,一切都是请求,除非它被困在会话上.我在" 语言指南"中没有发现任何反驳或证实这一点的内容.

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);
Run Code Online (Sandbox Code Playgroud)

情况1

如果我要查看具有此代码的页面,查询行中没有任何内容,我应该看到

bool(true)
Run Code Online (Sandbox Code Playgroud)

案例2

如果我使用此代码访问页面并?NO_SPRINKLES=true在查询行中,我应该看到

bool(false)
Run Code Online (Sandbox Code Playgroud)

案例3

如果我?NO_SPRINKLES=true在查询行中访问该页面然后访问没有它的页面,我应该总是看到 bool(true) 对吗?

案例4

访问与该页面后?NO_SPRINKLES=true,其他人谁访问的页面还是要看 bool(true) 是否正确?

小智 5

除非您使用会话,否则PHP不会保留任何信息.因此,当您加载页面时,会在代码开头创建一个变量,并在代码结束时将其删除.

与班级及其成员相同.你可以根据需要编辑它们,它会保留信息,但是在脚本的最后,它会丢失.