src/PhpToZephir/Converter/Printer/Stmt/ClassMethodPrinter.php
public function convert(Stmt\ClassMethod $node)
    {
        $types = $this->typeFinder->getTypes(
            $node,
            $this->dispatcher->getMetadata()
        );
        foreach ($node->params as $param) {
            if ($param->byRef === true) {
                $this->logger->logIncompatibility(
                    'reference',
                    sprintf('Reference not supported in parametter (var "%s")', $param->name),
                    $param,
                    $this->dispatcher->getMetadata()->getClass()
                );
            }
        }

        if ($node->byRef) {
            $this->logger->logIncompatibility(
                'reference',
                'Reference not supported',
                $node,
                $this->dispatcher->getMetadata()->getClass()
            );
        }

        $this->dispatcher->setLastMethod($node->name);

        $stmt = $this->dispatcher->pModifiers($node->type).'function '.$node->name.'(';
        $varsInMethodSign = array();

        if (isset($types['params']) === true) {
            $params = array();
            foreach ($types['params'] as $type) {
                $varsInMethodSign[] = $type['name'];
                $stringType = $this->printType($type);
                $params[] = ((!empty($stringType)) ? $stringType.' ' : '').''.$type['name'].(($type['default'] === null) ? '' : ' = '.$this->dispatcher->p($type['default']));
            }

            $stmt .= implode(', ', $params);
        }

        $stmt .= ')';
        $stmt .= $this->printReturn($node, $types);

        $stmt .= (null !== $node->stmts ? "\n{".$this->printVars($node, $varsInMethodSign).
             $this->dispatcher->pStmts($node->stmts)."\n}" : ';')."\n";

        return $stmt;
    }
public function convert(Stmt\ClassMethod $node)
    {
        $types = $this->typeFinder->getTypes(
            $node,
            $this->dispatcher->getMetadata()
        );
        foreach ($node->params as $param) {
            if ($param->byRef === true) {
                $this->logger->logIncompatibility(
                    'reference',
                    sprintf('Reference not supported in parametter (var "%s")', $param->name),
                    $param,
                    $this->dispatcher->getMetadata()->getClass()
                );
            }
        }

        if ($node->byRef) {
            $this->logger->logIncompatibility(
                'reference',
                'Reference not supported',
                $node,
                $this->dispatcher->getMetadata()->getClass()
            );
        }

        $this->dispatcher->setLastMethod($node->name);

        $stmt = $this->dispatcher->pModifiers($node->type).'function '.$node->name.'(';
        $varsInMethodSign = array();

        if (isset($types['params']) === true) {
            $params = array();
            foreach ($types['params'] as $type) {
                $varsInMethodSign[] = $type['name'];
                $stringType = $this->printType($type);
                $params[] = ((!empty($stringType)) ? $stringType.' ' : '').''.$type['name'].(($type['default'] === null) ? '' : ' = '.$this->dispatcher->p($type['default']));
            }

            $stmt .= implode(', ', $params);
        }

        $stmt .= ')';
        $stmt .= $this->printReturn($node, $types);

        $stmt .= (null !== $node->stmts ? "\n{".$this->printVars($node, $varsInMethodSign).
             $this->dispatcher->pStmts($node->stmts)."\n}" : ';')."\n";

        return $stmt;
    }
public function convert ( Stmt \ ClassMethod $ node ) { $ types = $ this -> typeFinder -> getTypes ( $ node , $ this -> dispatcher -> getMetadata ( ) ) ; foreach ( $ node -> params as $ param ) { if ( $ param -> byRef === true ) { $ this -> logger -> logIncompatibility ( 'reference' , sprintf ( 'Reference not supported in parametter (var "%s")' , $ param -> name ) , $ param , $ this -> dispatcher -> getMetadata ( ) -> getClass ( ) ) ; } } if ( $ node -> byRef ) { $ this -> logger -> logIncompatibility ( 'reference' , 'Reference not supported' , $ node , $ this -> dispatcher -> getMetadata ( ) -> getClass ( ) ) ; } $ this -> dispatcher -> setLastMethod ( $ node -> name ) ; $ stmt = $ this -> dispatcher -> pModifiers ( $ node -> type ) . 'function ' . $ node -> name . '(' ; $ varsInMethodSign = array ( ) ; if ( isset ( $ types [ 'params' ] ) === true ) { $ params = array ( ) ; foreach ( $ types [ 'params' ] as $ type ) { $ varsInMethodSign [ ] = $ type [ 'name' ] ; $ stringType = $ this -> printType ( $ type ) ; $ params [ ] = ( ( ! empty ( $ stringType ) ) ? $ stringType . ' ' : '' ) . '' . $ type [ 'name' ] . ( ( $ type [ 'default' ] === null ) ? '' : ' = ' . $ this -> dispatcher -> p ( $ type [ 'default' ] ) ) ; } $ stmt .= implode ( ', ' , $ params ) ; } $ stmt .= ')' ; $ stmt .= $ this -> printReturn ( $ node , $ types ) ; $ stmt .= ( null !== $ node -> stmts ? "\n{" . $ this -> printVars ( $ node , $ varsInMethodSign ) . $ this -> dispatcher -> pStmts ( $ node -> stmts ) . "\n}" : ';' ) . "\n" ; return $ stmt ; }
@param Stmt\ClassMethod $node

@return string
@param Stmt \ ClassMethod $node