Chris@0: Chris@0: * Chris@0: * For the full copyright and license information, please view the LICENSE Chris@0: * file that was distributed with this source code. Chris@0: */ Chris@0: Chris@0: namespace Symfony\Component\HttpKernel\Config; Chris@0: Chris@0: use Symfony\Component\Config\Resource\SelfCheckingResourceInterface; Chris@0: Chris@0: /** Chris@0: * EnvParametersResource represents resources stored in prefixed environment variables. Chris@0: * Chris@0: * @author Chris Wilkinson Chris@0: */ Chris@0: class EnvParametersResource implements SelfCheckingResourceInterface, \Serializable Chris@0: { Chris@0: /** Chris@0: * @var string Chris@0: */ Chris@0: private $prefix; Chris@0: Chris@0: /** Chris@0: * @var string Chris@0: */ Chris@0: private $variables; Chris@0: Chris@0: /** Chris@0: * Constructor. Chris@0: * Chris@0: * @param string $prefix Chris@0: */ Chris@0: public function __construct($prefix) Chris@0: { Chris@0: $this->prefix = $prefix; Chris@0: $this->variables = $this->findVariables(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function __toString() Chris@0: { Chris@0: return serialize($this->getResource()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @return array An array with two keys: 'prefix' for the prefix used and 'variables' containing all the variables watched by this resource Chris@0: */ Chris@0: public function getResource() Chris@0: { Chris@0: return array('prefix' => $this->prefix, 'variables' => $this->variables); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function isFresh($timestamp) Chris@0: { Chris@0: return $this->findVariables() === $this->variables; Chris@0: } Chris@0: Chris@0: public function serialize() Chris@0: { Chris@0: return serialize(array('prefix' => $this->prefix, 'variables' => $this->variables)); Chris@0: } Chris@0: Chris@0: public function unserialize($serialized) Chris@0: { Chris@0: $unserialized = unserialize($serialized); Chris@0: Chris@0: $this->prefix = $unserialized['prefix']; Chris@0: $this->variables = $unserialized['variables']; Chris@0: } Chris@0: Chris@0: private function findVariables() Chris@0: { Chris@0: $variables = array(); Chris@0: Chris@0: foreach ($_SERVER as $key => $value) { Chris@0: if (0 === strpos($key, $this->prefix)) { Chris@0: $variables[$key] = $value; Chris@0: } Chris@0: } Chris@0: Chris@0: ksort($variables); Chris@0: Chris@0: return $variables; Chris@0: } Chris@0: }