コード例 #1
0
 /**
  * @param Expr\Closure $node
  *
  * @return string
  */
 public function convert(Expr\Closure $node)
 {
     $methodName = $this->dispatcher->getMetadata()->getClass() . $this->dispatcher->getLastMethod();
     if (isset(self::$converted[$methodName])) {
         self::$converted[$methodName]++;
     } else {
         self::$converted[$methodName] = 1;
     }
     $name = $methodName . "Closure" . $this->N2L(count(self::$converted[$methodName]));
     $this->logger->logNode(sprintf('Closure does not exist in Zephir, class "%s" with __invoke is created', $name), $node, $this->dispatcher->getMetadata()->getFullQualifiedNameClass());
     return "new " . $name . '(' . $this->dispatcher->pCommaSeparated($node->uses) . ')';
 }
コード例 #2
0
 private function addAsTmp(array $createAsTmp, $varname)
 {
     if (!isset(self::$createdVars[$this->dispatcher->getLastMethod()])) {
         self::$createdVars[$this->dispatcher->getLastMethod()] = array();
     }
     if (isset(self::$createdVars[$this->dispatcher->getLastMethod()][$varname])) {
         self::$createdVars[$this->dispatcher->getLastMethod()][$varname]++;
         $createAsTmp[$varname] = self::$createdVars[$this->dispatcher->getLastMethod()][$varname];
     } else {
         self::$createdVars[$this->dispatcher->getLastMethod()][$varname] = 1;
         $createAsTmp[$varname] = 1;
     }
     return $createAsTmp;
 }