1 29 30 package com.caucho.quercus.expr; 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.util.L10N; 36 37 40 public class FieldVarGetExpr extends AbstractVarExpr { 41 private static final L10N L = new L10N(FieldVarGetExpr.class); 42 43 protected final Expr _objExpr; 44 protected final Expr _nameExpr; 45 46 public FieldVarGetExpr(Location location, Expr objExpr, Expr nameExpr) 47 { 48 super(location); 49 _objExpr = objExpr; 50 51 _nameExpr = nameExpr; 52 } 53 54 public FieldVarGetExpr(Expr objExpr, Expr nameExpr) 55 { 56 _objExpr = objExpr; 57 58 _nameExpr = nameExpr; 59 } 60 61 68 public Value evalArg(Env env) 69 { 70 Value value = _objExpr.evalArg(env); 71 72 return value.getFieldArg(env, _nameExpr.evalString(env).intern()); 73 } 74 75 82 public Value evalRef(Env env) 83 { 84 Value value = _objExpr.evalObject(env); 86 87 return value.getFieldRef(env, _nameExpr.evalString(env).intern()); 88 } 89 90 97 public Value eval(Env env) 98 { 99 Value obj = _objExpr.eval(env); 100 101 return obj.getField(env, _nameExpr.evalString(env).intern()); 102 } 103 104 111 public void evalAssign(Env env, Value value) 112 { 113 Value obj = _objExpr.evalObject(env); 114 115 obj.putField(env, _nameExpr.evalString(env).intern(), value); 116 } 117 118 125 public Value evalArray(Env env) 126 { 127 Value obj = _objExpr.evalObject(env); 128 129 return obj.getFieldArray(env, _nameExpr.evalString(env).intern()); 130 } 131 132 139 public Value evalObject(Env env) 140 { 141 Value obj = _objExpr.evalObject(env); 142 143 return obj.getFieldObject(env, _nameExpr.evalString(env).intern()); 144 } 145 146 153 public void evalUnset(Env env) 154 { 155 Value obj = _objExpr.eval(env); 156 157 obj.removeField(_nameExpr.evalString(env).intern()); 158 } 159 160 public String toString() 161 { 162 return _objExpr + "->{" + _nameExpr + "}"; 163 } 164 } 165 166 | Popular Tags |