Skip to content
Extraits de code Groupes Projets
TestingEnvironmentVariablesDefinitionSource.php 1,24 ko
Newer Older
  • Learn to ignore specific revisions
  • <?php
    /**
     * Piwik - free/libre analytics platform
     *
     * @link http://piwik.org
     * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
     */
    
    namespace Piwik\Tests\Framework;
    
    use DI\Definition\Source\DefinitionSource;
    use DI\Definition\ValueDefinition;
    
    /**
     * PHP DI definition source that accesses variables defined in TestingEnvironmentVariables.
     */
    class TestingEnvironmentVariablesDefinitionSource implements DefinitionSource
    {
        /**
         * @var TestingEnvironmentVariables
         */
        private $vars;
    
        /**
         * @var string
         */
        private $prefix;
    
        /**
         * @param TestingEnvironmentVariables $vars
         * @param string $prefix
         */
        public function __construct(TestingEnvironmentVariables $vars, $prefix = 'test.vars.')
        {
            $this->vars = $vars;
            $this->prefix = $prefix;
        }
    
        /**
         * {@inheritdoc}
         */
        public function getDefinition($name)
        {
            if (strpos($name, $this->prefix) !== 0) {
                return null;
            }
    
            $variableName = $this->parseVariableName($name);
    
            return new ValueDefinition($name, $this->vars->$variableName);
        }
    
        private function parseVariableName($name)
        {
            $parts = explode('.', $name, 3);
            return @$parts[2];
        }
    }