* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace FFMpeg\FFProbe; use Doctrine\Common\Cache\Cache; use FFMpeg\Driver\FFProbeDriver; class OptionsTester implements OptionsTesterInterface { /** @var FFProbeDriver */ private $ffprobe; /** @var Cache */ private $cache; public function __construct(FFProbeDriver $ffprobe, Cache $cache) { $this->ffprobe = $ffprobe; $this->cache = $cache; } /** * {@inheritdoc} */ public function has($name) { $id = sprintf('option-%s', $name); if ($this->cache->contains($id)) { return $this->cache->fetch($id); } $output = $this->retrieveHelpOutput(); $ret = (Boolean) preg_match('/^'.$name.'/m', $output); $this->cache->save($id, $ret); return $ret; } private function retrieveHelpOutput() { $id = 'help'; if ($this->cache->contains($id)) { return $this->cache->fetch($id); } $output = $this->ffprobe->command(array('-help', '-loglevel', 'quiet')); $this->cache->save($id, $output); return $output; } }