/** * @param string $string * @return string */ public function parse($string = null) { if (is_null($string)) { $string = $this->config->get('storage_filename'); } $filename = $string; $unique = uniqid(); $hash = md5(implode(' ', $this->config->getFolders()) . ' ' . implode(' ', $this->config->getFiles())); $host = gethostname(); $search = ['{unique}', '{hash}', '{host}']; $replace = [$unique, $hash, $host]; $filename = str_replace($search, $replace, $filename); $filename = preg_replace_callback('/\\{date:([^\\}]*)\\}/', function ($hit) { return date($hit[1]); }, $filename); $filename .= '.' . $this->config->get('extension'); return strtolower($filename); }