| 
<?php
 /*
 Copyright (c) 2009 hamcrest.org
 */
 
 class GlobalFunctionFile extends FactoryFile
 {
 /**
 * @var string containing function definitions
 */
 private $functions;
 
 public function __construct($file)
 {
 parent::__construct($file, '    ');
 $this->functions = '';
 }
 
 public function addCall(FactoryCall $call)
 {
 $this->functions .= PHP_EOL . $this->generateFactoryCall($call);
 }
 
 public function build()
 {
 $this->addFileHeader();
 $this->addPart('functions_imports');
 $this->addPart('functions_header');
 $this->addCode($this->functions);
 $this->addPart('functions_footer');
 }
 
 public function generateFactoryCall(FactoryCall $call)
 {
 $code = "if (!function_exists('{$call->getName()}')) {";
 $code.= parent::generateFactoryCall($call);
 $code.= "}\n";
 
 return $code;
 }
 }
 
 |