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 FieldGetExpr extends AbstractVarExpr { 41 private static final L10N L = new L10N(FieldGetExpr.class); 42 43 protected final Expr _objExpr; 44 protected final String _name; 45 46 public FieldGetExpr(Location location, Expr objExpr, String name) 47 { 48 super(location); 49 _objExpr = objExpr; 50 51 _name = name.intern(); 52 } 53 54 public FieldGetExpr(Expr objExpr, String name) 55 { 56 _objExpr = objExpr; 57 58 _name = name.intern(); 59 } 60 61 68 public Value eval(Env env) 69 { 70 Value obj = _objExpr.eval(env); 71 72 return obj.getField(env, _name); 73 } 74 75 82 public Value evalArg(Env env) 83 { 84 Value value = _objExpr.evalArg(env); 85 86 return value.getFieldArg(env, _name); 87 } 88 89 96 public Value evalRef(Env env) 97 { 98 Value value = _objExpr.evalObject(env); 100 101 return value.getFieldRef(env, _name); 102 } 103 104 111 public Value evalCopy(Env env) 112 { 113 Value obj = _objExpr.eval(env); 114 115 return obj.getField(env, _name).copy(); 116 } 117 118 125 public void evalAssign(Env env, Value value) 126 { 127 Value obj = _objExpr.evalObject(env); 128 129 obj.putField(env, _name, value); 130 } 131 132 139 public Value evalArray(Env env) 140 { 141 Value obj = _objExpr.evalObject(env); 142 143 return obj.getFieldArray(env, _name); 144 } 145 146 153 public Value evalObject(Env env) 154 { 155 Value obj = _objExpr.evalObject(env); 156 157 return obj.getFieldObject(env, _name); 159 } 160 161 168 public void evalUnset(Env env) 169 { 170 Value obj = _objExpr.eval(env); 171 172 obj.removeField(_name); 173 } 174 175 public String toString() 176 { 177 return _objExpr + "->" + _name; 178 } 179 } 180 181 | Popular Tags |