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 ThisExpr extends AbstractVarExpr { 42 private static final L10N L = new L10N(ThisExpr.class); 43 44 protected final InterpretedClassDef _quercusClass; 45 46 public ThisExpr(Location location, InterpretedClassDef quercusClass) 47 { 48 super(location); 49 _quercusClass = quercusClass; 50 } 51 52 public ThisExpr(InterpretedClassDef quercusClass) 53 { 54 _quercusClass = quercusClass; 55 } 56 57 60 @Override 61 public Expr createFieldGet(ExprFactory factory, String name) 62 { 63 return new ThisFieldExpr(_quercusClass, name); 64 } 65 66 73 public Value eval(Env env) 74 { 75 return env.getThis(); 76 } 77 78 85 public Value evalArg(Env env) 86 { 87 return env.getThis(); 88 } 89 90 97 public Value evalRef(Env env) 98 { 99 return env.getThis(); 100 } 101 102 109 public void evalAssign(Env env, Value value) 110 { 111 env.error("can't assign $this"); 112 } 113 114 121 public void evalUnset(Env env) 122 { 123 env.error("can't unset $this"); 124 } 125 126 public String toString() 127 { 128 return "$this"; 129 } 130 } 131 132 | Popular Tags |