/**
  * @param FunctionTemplate $function
  * @return InvalidInterfaceFunctionScopeException
  */
 protected function createInvalidInterfaceFunctionScopeException(FunctionTemplate $function)
 {
     return new InvalidInterfaceFunctionScopeException(sprintf('%s - Interface functions must be public, added function %s has scope of %s.', get_class($this), $this->_determineExceptionValueOutput($function->getName()), (string) $function->getScope()));
 }
 /**
  * @param FunctionTemplate $function
  */
 public function addFunction(FunctionTemplate $function)
 {
     if (ScopeEnum::_PUBLIC === (string) $function->getScope()) {
         $this->_functions[$function->getName()] = $function;
     } else {
         throw $this->createInvalidInterfaceFunctionScopeException($function);
     }
 }
 /**
  * @covers \DCarbone\PHPClassBuilder\Template\Structure\FunctionTemplate::compile
  * @covers \DCarbone\PHPClassBuilder\Template\Structure\FunctionTemplate::parseCompileOpts
  * @covers \DCarbone\PHPClassBuilder\Template\Structure\FunctionTemplate::_buildParameters
  * @expectedException \DCarbone\PHPClassBuilder\Exception\InvalidCompileOptionValueException
  * @depends testCanOutputFunctionWithoutBody
  */
 public function testExceptionThrownWhenUsingInvalidIncludeBodyCompileOption()
 {
     $funcName = self::generateTestFunctionName();
     $func = new FunctionTemplate($funcName);
     $func->compile(array(CompileOpt::INC_BODY => 'woot!'));
 }
 /**
  * @param FunctionTemplate $function
  */
 public function addFunction(FunctionTemplate $function)
 {
     $this->_functions[$function->getName()] = $function;
 }