예제 #1
0
 /**
  * @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;
 }
예제 #3
0
 /**
  * @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;
 }
예제 #4
0
 /**
  * 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;
 }
예제 #5
0
 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;
 }