functions++; return $this->printFunction($context, $arguments); case "return": if ( empty($context->functions) ) { throw new \RuntimeException("A function return tag {% return %} was found without an opening {% function ... %} tag"); } return $this->printReturn($context, $arguments); case "endfunction": if ( empty($context->functions) ) { throw new \RuntimeException("A function closing tag {% endfunction %} was found without an opening {% function ... %} tag"); } $context->functions--; return $this->printEndFunction($context); } } protected function printFunction($context, ?string $arguments) : string { $name = trim(explode('(', $arguments, 2)[0]); return ""; } protected function printReturn($context, ?string $arguments) : string { return ""; } protected function printEndFunction($context) : string { return ""; } }