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.quercus.program.InterpretedClassDef; 36 import com.caucho.util.L10N; 37 38 41 public class ThisFieldExpr extends AbstractVarExpr { 42 private static final L10N L = new L10N(ThisFieldExpr.class); 43 44 protected final InterpretedClassDef _quercusClass; 45 46 protected final String _name; 47 48 public ThisFieldExpr(Location location, InterpretedClassDef quercusClass, String name) 49 { 50 super(location); 51 _quercusClass = quercusClass; 52 53 _name = name.intern(); 54 } 55 56 public ThisFieldExpr(InterpretedClassDef quercusClass, String name) 57 { 58 _quercusClass = quercusClass; 59 60 _name = name.intern(); 61 } 62 63 70 public Value eval(Env env) 71 { 72 Value obj = env.getThis(); 73 74 return obj.getField(env, _name); 75 } 76 77 84 public Value evalCopy(Env env) 85 { 86 Value obj = env.getThis(); 87 88 return obj.getField(env, _name).copy(); 89 } 90 91 98 public Value evalRef(Env env) 99 { 100 Value obj = env.getThis(); 101 102 return obj.getFieldRef(env, _name); 103 } 104 105 112 public Value evalArg(Env env) 113 { 114 Value obj = env.getThis(); 115 116 return obj.getFieldArg(env, _name); 117 } 118 119 126 public void evalAssign(Env env, Value value) 127 { 128 Value obj = env.getThis(); 129 130 obj.putField(env, _name, value); 131 } 132 133 140 public Value evalArray(Env env) 141 { 142 Value obj = env.getThis(); 143 144 return obj.getFieldArray(env, _name); 145 } 146 147 154 public Value evalObject(Env env) 155 { 156 Value obj = env.getThis(); 157 158 return obj.getFieldObject(env, _name); 159 } 160 161 168 public void evalUnset(Env env) 169 { 170 Value obj = env.getThis(); 171 172 obj.removeField(_name); 173 } 174 175 public String toString() 176 { 177 return "$this->" + _name; 178 } 179 } 180 181 | Popular Tags |