%PDF- %PDF-
| Direktori : /home/tjamichg/cursos.tjamich.gob.mx/vendor/zendframework/zend-config/src/Processor/ |
| Current File : /home/tjamichg/cursos.tjamich.gob.mx/vendor/zendframework/zend-config/src/Processor/Constant.php |
<?php
/**
* @see https://github.com/zendframework/zend-config for the canonical source repository
* @copyright Copyright (c) 2005-2017 Zend Technologies USA Inc. (http://www.zend.com)
* @license https://github.com/zendframework/zend-config/blob/master/LICENSE.md New BSD License
*/
namespace Zend\Config\Processor;
class Constant extends Token implements ProcessorInterface
{
/**
* Replace only user-defined tokens
*
* @var bool
*/
protected $userOnly = true;
/**
* Constant Processor walks through a Config structure and replaces all
* PHP constants with their respective values
*
* @param bool $userOnly True to process only user-defined constants,
* false to process all PHP constants; defaults to true.
* @param string $prefix Optional prefix
* @param string $suffix Optional suffix
* @param bool $enableKeyProcessing Whether or not to enable processing of
* constant values in configuration keys; defaults to false.
* @return \Zend\Config\Processor\Constant
*/
public function __construct($userOnly = true, $prefix = '', $suffix = '', $enableKeyProcessing = false)
{
$this->setUserOnly((bool) $userOnly);
$this->setPrefix((string) $prefix);
$this->setSuffix((string) $suffix);
if (true === $enableKeyProcessing) {
$this->enableKeyProcessing();
}
$this->loadConstants();
}
/**
* @return bool
*/
public function getUserOnly()
{
return $this->userOnly;
}
/**
* Should we use only user-defined constants?
*
* @param bool $userOnly
* @return self
*/
public function setUserOnly($userOnly)
{
$this->userOnly = (bool) $userOnly;
return $this;
}
/**
* Load all currently defined constants into parser.
*
* @return void
*/
public function loadConstants()
{
if ($this->userOnly) {
$constants = get_defined_constants(true);
$constants = isset($constants['user']) ? $constants['user'] : [];
$this->setTokens($constants);
} else {
$this->setTokens(get_defined_constants());
}
}
/**
* Get current token registry.
* @return array
*/
public function getTokens()
{
return $this->tokens;
}
/**
* Override processing of individual value.
*
* If the value is a string and evaluates to a class constant, returns
* the class constant value; otherwise, delegates to the parent.
*
* @param mixed $value
* @param array $replacements
* @return mixed
*/
protected function doProcess($value, array $replacements)
{
if (! is_string($value)) {
return parent::doProcess($value, $replacements);
}
if (false === strpos($value, '::')) {
return parent::doProcess($value, $replacements);
}
// Handle class constants
if (defined($value)) {
return constant($value);
}
// Handle ::class notation
if (! preg_match('/::class$/i', $value)) {
return parent::doProcess($value, $replacements);
}
$class = substr($value, 0, -7);
if (class_exists($class)) {
return $class;
}
// While we've matched ::class, the class does not exist, and PHP will
// raise an error if you try to define a constant using that notation.
// As such, we have something that cannot possibly be a constant, so we
// can safely return the value verbatim.
return $value;
}
}