package php.runtime.env.message; import php.runtime.common.Messages; import php.runtime.env.CallStackItem; import php.runtime.env.Environment; import php.runtime.exceptions.support.ErrorType; abstract public class SystemMessage { private final Messages.Item message; private final Object[] args; private final CallStackItem trace; public SystemMessage(CallStackItem trace, Messages.Item message, Object... args){ this.message = message; this.args = args; this.trace = trace; } public SystemMessage(Environment environment, Messages.Item message, Object... args){ this.message = message; this.args = args; this.trace = environment.peekCall(0); } public CallStackItem getTrace() { return trace; } public String getMessage(){ return message.fetch(args); } public String getDebugMessage(){ return getType().getTypeName() + ": " + getMessage() + " in '" + trace.trace.getFileName() + "'" + " on line " + (trace.trace.getStartLine() + 1) + " at pos " + (trace.trace.getStartPosition() + 1); } abstract public ErrorType getType(); }