當前位置: 首頁>>代碼示例>>PHP>>正文


PHP Variable::setClassTypes方法代碼示例

本文整理匯總了PHP中Zephir\Variable::setClassTypes方法的典型用法代碼示例。如果您正苦於以下問題:PHP Variable::setClassTypes方法的具體用法?PHP Variable::setClassTypes怎麽用?PHP Variable::setClassTypes使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在Zephir\Variable的用法示例。


在下文中一共展示了Variable::setClassTypes方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: assign


//.........這裏部分代碼省略.........
                             }
                             break;
                         case 'bool':
                             switch ($statement['operator']) {
                                 case 'assign':
                                     $symbolVariable->initVariant($compilationContext);
                                     $symbolVariable->setDynamicTypes('bool');
                                     if ($symbolVariable->isLocalOnly()) {
                                         $codePrinter->output('ZVAL_BOOL(&' . $variable . ', ' . $itemVariable->getName() . ');');
                                     } else {
                                         $codePrinter->output('ZVAL_BOOL(' . $variable . ', ' . $itemVariable->getName() . ');');
                                     }
                                     break;
                                 default:
                                     throw new CompilerException("Operator '" . $statement['operator'] . "' is not supported for variable type: " . $itemVariable->getType(), $statement);
                             }
                             break;
                         case 'array':
                             switch ($statement['operator']) {
                                 case 'assign':
                                     if ($variable != $resolvedExpr->getCode()) {
                                         $symbolVariable->setMustInitNull(true);
                                         $compilationContext->symbolTable->mustGrownStack(true);
                                         /* Inherit the dynamic type data from the assigned value */
                                         $symbolVariable->setDynamicTypes('array');
                                         $codePrinter->output('ZEPHIR_CPY_WRT(' . $variable . ', ' . $resolvedExpr->getCode() . ');');
                                     }
                                     break;
                                 default:
                                     throw new CompilerException("Operator '" . $statement['operator'] . "' is not supported for variable type: " . $resolvedExpr->getType(), $resolvedExpr->getOriginal());
                             }
                             break;
                         case 'variable':
                             switch ($statement['operator']) {
                                 case 'assign':
                                     if ($itemVariable->getName() != $variable) {
                                         $symbolVariable->setMustInitNull(true);
                                         $compilationContext->symbolTable->mustGrownStack(true);
                                         /* Inherit the dynamic type data from the assigned value */
                                         $symbolVariable->setDynamicTypes($itemVariable->getDynamicTypes());
                                         $symbolVariable->setClassTypes($itemVariable->getClassTypes());
                                         $codePrinter->output('ZEPHIR_CPY_WRT(' . $variable . ', ' . $itemVariable->getName() . ');');
                                         if ($itemVariable->isTemporal()) {
                                             $itemVariable->setIdle(true);
                                         }
                                     }
                                     break;
                                 case 'concat-assign':
                                     $compilationContext->headersManager->add('kernel/operators');
                                     $codePrinter->output('zephir_concat_self(&' . $variable . ', ' . $itemVariable->getName() . ' TSRMLS_CC);');
                                     break;
                                 case 'add-assign':
                                     $compilationContext->symbolTable->mustGrownStack(true);
                                     $compilationContext->headersManager->add('kernel/operators');
                                     $codePrinter->output('ZEPHIR_ADD_ASSIGN(' . $variable . ', ' . $itemVariable->getName() . ');');
                                     break;
                                 case 'sub-assign':
                                     $compilationContext->symbolTable->mustGrownStack(true);
                                     $compilationContext->headersManager->add('kernel/operators');
                                     $codePrinter->output('ZEPHIR_SUB_ASSIGN(' . $variable . ', ' . $itemVariable->getName() . ');');
                                     break;
                                 default:
                                     throw new CompilerException("Operator '" . $statement['operator'] . "' is not supported for variable type: " . $itemVariable->getType(), $statement);
                             }
                             break;
                         case 'string':
                             switch ($statement['operator']) {
                                 case 'assign':
                                     if ($itemVariable->getName() != $variable) {
                                         $symbolVariable->setMustInitNull(true);
                                         $compilationContext->symbolTable->mustGrownStack(true);
                                         /* Inherit the dynamic type data from the assigned value */
                                         $symbolVariable->setDynamicTypes($itemVariable->getDynamicTypes());
                                         $symbolVariable->setClassTypes($itemVariable->getClassTypes());
                                         $codePrinter->output('ZEPHIR_CPY_WRT(' . $variable . ', ' . $itemVariable->getName() . ');');
                                         if ($itemVariable->isTemporal()) {
                                             $itemVariable->setIdle(true);
                                         }
                                     }
                                     break;
                                 case 'concat-assign':
                                     $compilationContext->headersManager->add('kernel/operators');
                                     $codePrinter->output('zephir_concat_self(&' . $variable . ', ' . $itemVariable->getName() . ' TSRMLS_CC);');
                                     break;
                                 default:
                                     throw new CompilerException("Operator '" . $statement['operator'] . "' is not supported for variable type: " . $itemVariable->getType(), $statement);
                             }
                             break;
                         default:
                             throw new CompilerException("Unknown type: " . $itemVariable->getType(), $resolvedExpr->getOriginal());
                     }
                     break;
                 default:
                     throw new CompilerException("Unknown type: " . $resolvedExpr->getType(), $resolvedExpr->getOriginal());
             }
             break;
         default:
             throw new CompilerException("Unknown type: " . $type, $statement);
     }
 }
開發者ID:NumbDai,項目名稱:zephir,代碼行數:101,代碼來源:Variable.php


注:本文中的Zephir\Variable::setClassTypes方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。