/** * @param $variableName * @param $isClassVariable * @return Variable */ function getScopedVariableForScope($variableName, $isClassVariable) { if ($isClassVariable == TRUE) { return NULL; //Class variables would not use a global variable } $cVar = cvar($variableName); if (array_key_exists($cVar, $this->scopedVariables) == TRUE) { return $variableName; } return NULL; }
function getScopedVariableForScope($variableName, $variableFlags) { $cVar = cvar($variableName); if (array_key_exists($cVar, $this->scopedVariables) == TRUE) { //$variableFlag = $this->scopedVariables[$cVar]; $variable = $this->scopedVariables[$cVar]; //if($variableFlag & DECLARATION_TYPE_STATIC){ if ($variable->isStatic() == true) { return $this->name . "." . $variableName; } else { if ($variableFlags & DECLARATION_TYPE_CLASS) { return 'this.' . $variableName; } } return $variableName; } return NULL; }
/** * @param $variableName * @param $variableFlags * @return mixed */ function getScopedVariableForScope($variableName, $variableFlags) { $cVar = cvar($variableName); if (array_key_exists($cVar, $this->scopedVariables) == TRUE) { //$variableFlag = $this->scopedVariables[$cVar]; if ($variableFlags & DECLARATION_TYPE_STATIC) { return $this->name . "." . $variableName; } else { if ($variableFlags & DECLARATION_TYPE_CLASS) { if (strpos($variableName, "\$") !== FALSE) { //it's a variable variable like "this->$var"; return 'this[' . $variableName . ']'; } else { return 'this.' . $variableName; } } } return $variableName; } return NULL; }
/** * Adds a variable to the scope * * @param $variableName * @param $variableFlag * @return bool true if it was a new variable to this scope. */ function addScopedVariable($variableName, $variableFlag) { if ($variableFlag & DECLARATION_TYPE_CLASS) { if (!($variableFlag & DECLARATION_TYPE_PRIVATE)) { //In cases like "$this->variableName" variableName is never //added to the scope. return false; } } $cVar = cvar($variableName); if (PHPToJavascript::$TRACE == TRUE) { echo "Added variable {$variableName} to scope " . get_class($this) . " with flag {$variableFlag}\n"; } if (array_key_exists($cVar, $this->scopedVariables) == FALSE) { $variable = new Variable($cVar, $variableFlag); $this->scopedVariables[$cVar] = $variable; return TRUE; } return FALSE; }
function getScopedVariableForScope($variableName, $variableFlags) { $cVar = cvar($variableName); if (array_key_exists($cVar, $this->scopedVariables) == true) { //$variableFlag = $this->scopedVariables[$cVar]; if ($variableFlags & DECLARATION_TYPE_CLASS) { if ($variableFlags & DECLARATION_TYPE_PRIVATE) { return $variableName; } if ($variableFlags & DECLARATION_TYPE_STATIC) { return $variableName; } if ($variableFlags & DECLARATION_TYPE_PUBLIC) { //TODO should the 'this' be here, or in the T_OBJECTOPERATOR return 'this.' . $variableName; } } } if ($variableFlags & DECLARATION_TYPE_CLASS) { if ($variableFlags & DECLARATION_TYPE_STATIC) { return $variableName; } else { //Either a function or property set below where it is defined. // OR it could be a variable that is defined in the parent class' scope. return 'this.' . $variableName; } } return null; }