Zephir\Stubs\Generator::buildMethod PHP Method

buildMethod() protected method

protected buildMethod ( ClassMethod $method, boolean $isInterface, string $indent ) : string
$method Zephir\ClassMethod
$isInterface boolean
$indent string
return string
    protected function buildMethod(ClassMethod $method, $isInterface, $indent)
    {
        $modifier = implode(' ', array_diff($method->getVisibility(), $this->ignoreModifiers));
        $methodParameters = $method->getParameters();
        $aliasManager = $method->getClassDefinition()->getAliasManager();
        $docBlock = new MethodDocBlock($method, $aliasManager, $indent);
        $parameters = array();
        if ($methodParameters) {
            foreach ($methodParameters->getParameters() as $parameter) {
                $paramStr = '';
                if (isset($parameter['cast'])) {
                    if ($aliasManager->isAlias($parameter['cast']['value'])) {
                        $cast = '\\' . $aliasManager->getAlias($parameter['cast']['value']);
                    } else {
                        $cast = $parameter['cast']['value'];
                    }
                    $paramStr .= $cast . ' ';
                } elseif (isset($parameter['data-type']) && $parameter['data-type'] == 'array') {
                    $paramStr .= 'array ';
                }
                $paramStr .= '$' . $parameter['name'];
                if (isset($parameter['default'])) {
                    $paramStr .= ' = ' . $this->wrapPHPValue($parameter);
                }
                $parameters[] = $paramStr;
            }
        }
        $function = trim($modifier . ' function', ' ') . ' ';
        $methodBody = $indent . $function . $method->getName() . '(' . implode(', ', $parameters) . ')';
        if ($isInterface || $method->isAbstract()) {
            $methodBody .= ';';
        } else {
            $methodBody .= ' {}';
        }
        return $docBlock . "\n" . $methodBody;
    }