# Type names Template( TextInterpolation(PhpOpen), FunctionDefinition(function, Name, ParamList, NamedType(Name), Block), FunctionDefinition(function, Name, ParamList, NamedType(QualifiedName(NamespaceName(Name), Name)), Block)) # Primitive types Template( TextInterpolation(PhpOpen), FunctionDefinition(function, Name, ParamList, NamedType(Name), Block), FunctionDefinition(function, Name, ParamList, NamedType(Name), Block), FunctionDefinition(function, Name, ParamList, NamedType(Name), Block)) # Optional types Template( TextInterpolation(PhpOpen), FunctionDefinition(function, Name, ParamList, OptionalType(LogicOp, NamedType(array)), Block), FunctionDefinition(function, Name, ParamList, OptionalType(LogicOp, NamedType(Name)), Block)) # Union types Template( TextInterpolation(PhpOpen), FunctionDefinition(function, Name, ParamList( Parameter( UnionType(NamedType(Name),LogicOp,NamedType(Name),LogicOp,NamedType(null)), VariableName)), UnionType(OptionalType(LogicOp, NamedType(Name)),LogicOp,NamedType(Name)), Block)) # Mixed type Template( TextInterpolation(PhpOpen), FunctionDefinition(function, Name, ParamList( Parameter( UnionType(NamedType(Name),LogicOp,NamedType(Name)), VariableName ) ), NamedType(Name), Block ) ) # Static type Template( TextInterpolation(PhpOpen), FunctionDefinition(function, Name, ParamList( Parameter(NamedType(Name),VariableName)), NamedType(Name), Block))