	protected function getTempFile($path = '') {
		static $cache = array();
		static $rmfunc;
		
		$key = '';
		if ($path !== '') {
			$key = $this->id . '#' . $path;
			if (isset($cache[$key])) {
				return $cache[$key];
			}
		}
		
		if ($tmpdir = $this->getTempPath()) {
			if (!$rmfunc) {
				$rmfunc = create_function('$f', 'is_file($f) && unlink($f);');
			}
			$name = tempnam($tmpdir, 'ELF');
			if ($key) {
				$cache[$key] = $name;
			}
			register_shutdown_function($rmfunc, $name);
			return $name;
		}
		
		return false;
	}
The software constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component.