当前位置: 首页>>代码示例>>PHP>>正文


PHP Variable::separate方法代码示例

本文整理汇总了PHP中Zephir\Variable::separate方法的典型用法代码示例。如果您正苦于以下问题:PHP Variable::separate方法的具体用法?PHP Variable::separate怎么用?PHP Variable::separate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Zephir\Variable的用法示例。


在下文中一共展示了Variable::separate方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: assign

 /**
  * Compiles x--
  *
  * @param string $variable
  * @param ZephirVariable $symbolVariable
  * @param CompilationContext $compilationContext
  * @param array $statement
  */
 public function assign($variable, ZephirVariable $symbolVariable, CompilationContext $compilationContext, $statement)
 {
     if (!$symbolVariable->isInitialized()) {
         throw new CompilerException("Cannot mutate variable '" . $variable . "' because it is not initialized", $statement);
     }
     if ($symbolVariable->isReadOnly()) {
         throw new CompilerException("Cannot mutate variable '" . $variable . "' because it is read only", $statement);
     }
     $codePrinter = $compilationContext->codePrinter;
     switch ($symbolVariable->getType()) {
         case 'int':
         case 'uint':
         case 'long':
         case 'ulong':
         case 'double':
         case 'char':
         case 'uchar':
             $codePrinter->output($variable . '--;');
             break;
         case 'variable':
             /**
              * Variable is probably not initialized here
              */
             if ($symbolVariable->hasAnyDynamicType('unknown')) {
                 throw new CompilerException("Attempt to increment uninitialized variable", $statement);
             }
             /**
              * Decrement non-numeric variables could be expensive
              */
             if (!$symbolVariable->hasAnyDynamicType(array('undefined', 'int', 'long', 'double', 'uint'))) {
                 $compilationContext->logger->warning('Possible attempt to decrement non-numeric dynamic variable', 'non-valid-decrement', $statement);
             }
             $compilationContext->headersManager->add('kernel/operators');
             if ($symbolVariable->isLocalOnly()) {
                 $codePrinter->output('zephir_decrement(&' . $variable . ');');
             } else {
                 $symbolVariable->separate($compilationContext);
                 $codePrinter->output('zephir_decrement(' . $variable . ');');
             }
             break;
         default:
             throw new CompilerException("Cannot decrement variable: " . $symbolVariable->getType(), $statement);
     }
 }
开发者ID:NumbDai,项目名称:zephir,代码行数:52,代码来源:Decr.php

示例2: assign

 /**
  * Compiles x++
  *
  * @param string $variable
  * @param ZephirVariable $symbolVariable
  * @param CompilationContext $compilationContext
  * @param array $statement
  *
  * @throws CompilerException
  */
 public function assign($variable, ZephirVariable $symbolVariable, CompilationContext $compilationContext, $statement)
 {
     if (!$symbolVariable->isInitialized()) {
         throw new CompilerException("Cannot mutate variable '" . $variable . "' because it is not initialized", $statement);
     }
     if ($symbolVariable->isReadOnly()) {
         /**
          * @TODO implement increment of objects members
          */
         throw new CompilerException("Cannot mutate variable '" . $variable . "' because it is read only", $statement);
     }
     $codePrinter =& $compilationContext->codePrinter;
     switch ($symbolVariable->getType()) {
         case 'int':
         case 'uint':
         case 'long':
         case 'ulong':
         case 'double':
         case 'char':
         case 'uchar':
             $codePrinter->output($variable . '++;');
             break;
         case 'variable':
             /**
              * Update non-numeric dynamic variables could be expensive
              */
             if (!$symbolVariable->hasAnyDynamicType(array('undefined', 'long', 'double'))) {
                 $compilationContext->logger->warning('Possible attempt to increment non-numeric dynamic variable', 'non-valid-increment', $statement);
             }
             $compilationContext->headersManager->add('kernel/operators');
             if (!$symbolVariable->isLocalOnly()) {
                 $symbolVariable->separate($compilationContext);
             }
             $symbol = $compilationContext->backend->getVariableCode($symbolVariable);
             $codePrinter->output('zephir_increment(' . $symbol . ');');
             break;
         default:
             throw new CompilerException("Cannot increment: " . $symbolVariable->getType(), $statement);
     }
 }
开发者ID:phalcon,项目名称:zephir,代码行数:50,代码来源:Incr.php


注:本文中的Zephir\Variable::separate方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。