12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- namespace Zend\Config\Writer;
- use Zend\Config\Exception;
- class Yaml extends AbstractWriter
- {
- /**
- * YAML encoder callback
- *
- * @var callable
- */
- protected $yamlEncoder;
- /**
- * Constructor
- *
- * @param callable|string|null $yamlEncoder
- */
- public function __construct($yamlEncoder = null)
- {
- if ($yamlEncoder !== null) {
- $this->setYamlEncoder($yamlEncoder);
- } else {
- if (function_exists('yaml_emit')) {
- $this->setYamlEncoder('yaml_emit');
- }
- }
- }
- /**
- * Get callback for decoding YAML
- *
- * @return callable
- */
- public function getYamlEncoder()
- {
- return $this->yamlEncoder;
- }
- /**
- * Set callback for decoding YAML
- *
- * @param callable $yamlEncoder the decoder to set
- * @return Yaml
- * @throws Exception\InvalidArgumentException
- */
- public function setYamlEncoder($yamlEncoder)
- {
- if (!is_callable($yamlEncoder)) {
- throw new Exception\InvalidArgumentException('Invalid parameter to setYamlEncoder() - must be callable');
- }
- $this->yamlEncoder = $yamlEncoder;
- return $this;
- }
- /**
- * processConfig(): defined by AbstractWriter.
- *
- * @param array $config
- * @return string
- * @throws Exception\RuntimeException
- */
- public function processConfig(array $config)
- {
- if (null === $this->getYamlEncoder()) {
- throw new Exception\RuntimeException("You didn't specify a Yaml callback encoder");
- }
- $config = call_user_func($this->getYamlEncoder(), $config);
- if (null === $config) {
- throw new Exception\RuntimeException("Error generating YAML data");
- }
- return $config;
- }
- }
|