1 29 30 package com.caucho.quercus.program; 31 32 import com.caucho.quercus.Location; 33 import com.caucho.quercus.env.Env; 34 import com.caucho.quercus.env.Value; 35 import com.caucho.quercus.env.Var; 36 import com.caucho.quercus.expr.Expr; 37 import com.caucho.quercus.expr.VarExpr; 38 39 42 public class StaticStatement extends Statement { 43 protected VarExpr _var; 44 protected Expr _initValue; 45 protected String _staticName; 46 47 50 public StaticStatement(Location location, VarExpr var, Expr initValue) 51 { 52 super(location); 53 54 _var = var; 55 _initValue = initValue; 56 } 57 58 public Value execute(Env env) 59 { 60 try { 61 if (_staticName == null) 62 _staticName = env.createStaticName(); 63 64 Var var = env.getStaticVar(_staticName); 65 66 env.setValue(_var.getName(), var); 67 68 if (! var.isset() && _initValue != null) 69 var.set(_initValue.eval(env)); 70 71 } 72 catch (RuntimeException e) { 73 rethrow(e, RuntimeException .class); 74 } 75 76 return null; 77 } 78 } 79 80 | Popular Tags |