Source of file AbstractWriter.php
Size: 2,367 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/Config/Writer/AbstractWriter.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\Config\Writer; use Traversable; use Zend\Config\Exception; use Zend\Stdlib\ArrayUtils; abstract class AbstractWriter implements WriterInterface { /** * toFile(): defined by Writer interface. * * @see WriterInterface::toFile() * @param string $filename * @param mixed $config * @param bool $exclusiveLock * @return void * @throws Exception\InvalidArgumentException * @throws Exception\RuntimeException */ public function toFile($filename, $config, $exclusiveLock = true) { if (empty($filename)) { throw new Exception\InvalidArgumentException('No file name specified'); } $flags = 0; if ($exclusiveLock) { $flags |= LOCK_EX; } set_error_handler( function ($error, $message = '', $file = '', $line = 0) use ($filename) { throw new Exception\RuntimeException(sprintf( 'Error writing to "%s": %s', $filename, $message ), $error); }, E_WARNING ); try { file_put_contents($filename, $this->toString($config), $flags); } catch (\Exception $e) { restore_error_handler(); throw $e; } restore_error_handler(); } /** * toString(): defined by Writer interface. * * @see WriterInterface::toString() * @param mixed $config * @return string * @throws Exception\InvalidArgumentException */ public function toString($config) { if ($config instanceof Traversable) { $config = ArrayUtils::iteratorToArray($config); } elseif (!is_array($config)) { throw new Exception\InvalidArgumentException(__METHOD__ . ' expects an array or Traversable config'); } return $this->processConfig($config); } /** * @param array $config * @return string */ abstract protected function processConfig(array $config); } |