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.vfs.Path; 36 37 40 public class IncludeOnceExpr extends UnaryExpr { 41 protected Path _dir; 42 protected boolean _isRequire; 43 44 public IncludeOnceExpr(Location location, Path sourceFile, Expr expr) 45 { 46 super(location, expr); 47 48 if (! sourceFile.getScheme().equals("string")) 50 _dir = sourceFile.getParent(); 51 } 52 53 public IncludeOnceExpr(Location location, Path sourceFile, Expr expr, boolean isRequire) 54 { 55 this(location, sourceFile, expr); 56 57 _isRequire = isRequire; 58 } 59 60 public IncludeOnceExpr(Path sourceFile, Expr expr) 61 { 62 this(Location.UNKNOWN, sourceFile, expr); 63 } 64 65 public IncludeOnceExpr(Path sourceFile, Expr expr, boolean isRequire) 66 { 67 this(Location.UNKNOWN, sourceFile, expr, isRequire); 68 } 69 70 77 public Value eval(Env env) 78 { 79 String name = _expr.evalString(env); 80 81 if (_dir != null) 83 return env.include(_dir, name, _isRequire, true); 84 else if (_isRequire) 85 return env.require_once(name); 86 else 87 return env.include_once(name); 88 } 89 90 public String toString() 91 { 92 return _expr.toString(); 93 } 94 } 95 96 | Popular Tags |