代码之家  ›  专栏  ›  技术社区  ›  JohnPan

Slim Route似乎重置了静态变量

  •  1
  • JohnPan  · 技术社区  · 6 年前

    我用一条很窄的路线打电话 RabbitBroker::setup() 并追踪其反应。

    setup方法将始终继续并执行init过程。它从不返回“已设置”消息。我试着用 RabbitBroker::$isSetup 而不是 self::$isSetup 不断忘记价值。。我疯了吗?

    class RabbitBroker
    {     
        private static $isSetup = false; 
    
        public static function setup() {
    
            if (self::$isSetup) return "Connection was set already setup";
    
            self::$isSetup = true;
    
            // do some init...
    
            return "Connection is now set by init"
        }
    
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   jmattheis zzz    6 年前

    您可能试图在请求之间共享静态变量的值。 PHP是无状态的(比如HTTP),因为如果出现这种情况,每个脚本执行都有自己的静态变量。

    因此,设置一个静态变量只为当前请求设置它,而不是为下面的请求设置它。