*/
public class XDebugVariable extends XDebugElement implements IVariable {
private String fName;
+ private String fNameFull;
private XDebugStackFrame fFrame;
private XDebugAbstractValue fValue;
private String fFacet;
* @param frame owning stack frame
* @param name variable name
*/
- public XDebugVariable(XDebugStackFrame frame, Node property) throws DebugException {
+ public XDebugVariable(XDebugStackFrame frame, Node property, XDebugVariable parent) throws DebugException {
super((XDebugTarget) frame.getDebugTarget());
+
+ this.fParent = parent;
+
if (frame != null ) {
fFrame = frame;
}
- fName = PHPDebugUtils.getAttributeValue(property,"name");
+ if (parent == null) {
+ fName = "$" + PHPDebugUtils.getAttributeValue(property,"name"); // Prepend the variable 'short' name with the php variable prefix '$'
+ }
+ else {
+ fName = PHPDebugUtils.getAttributeValue(property,"name"); // If this is the root variable don't prepend prefix '$'
+ }
+
+ fNameFull = PHPDebugUtils.getAttributeValue(property,"fullname"); // The fullname has the '$' prepended, but it is the fully qualified name
+ // e.g. $myvar->child->a_variable. The fullname would be suitable to take for
+ // the setting a watch expression
+
if ("".equals(fName)) {
fName = PHPDebugUtils.getAttributeValue(property,"address");
}
else if (typeName.equals("string") )
fValue = new XDebugStringValue(frame, property);
else if (typeName.equals("array") )
- fValue = new XDebugArrayValue(frame, property);
+ fValue = new XDebugArrayValue(frame, property, this);
else if (typeName.equals("object") )
- fValue = new XDebugObjectValue(frame, property);
+ fValue = new XDebugObjectValue(frame, property, this);
else if (typeName.equals("resource") )
fValue = new XDebugResourceValue(frame, property);
else
return fName;
}
+ /*
+ * @return The fully qualified name of the variable
+ */
+ public String getNameFull () {
+ return fNameFull;
+ }
+
/* (non-Javadoc)
* @see org.eclipse.debug.core.model.IVariable#getReferenceTypeName()
*/