/** * @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) . ')'; }
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; }