Вход Регистрация
Файл: vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/SimpleXMLElement.php
Строк: 118
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentDependencyInjection;

use 
SymfonyComponentConfigUtilXmlUtils;

/**
 * SimpleXMLElement class.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
class SimpleXMLElement extends SimpleXMLElement
{
    
/**
     * Converts an attribute as a PHP type.
     *
     * @param string $name
     *
     * @return mixed
     */
    
public function getAttributeAsPhp($name)
    {
        return 
self::phpize($this[$name]);
    }

    
/**
     * Returns arguments as valid PHP types.
     *
     * @param string  $name
     * @param bool    $lowercase
     *
     * @return mixed
     */
    
public function getArgumentsAsPhp($name$lowercase true)
    {
        
$arguments = array();
        foreach (
$this->$name as $arg) {
            if (isset(
$arg['name'])) {
                
$arg['key'] = (string) $arg['name'];
            }
            
$key = isset($arg['key']) ? (string) $arg['key'] : (!$arguments max(array_keys($arguments)) + 1);

            
// parameter keys are case insensitive
            
if ('parameter' == $name && $lowercase) {
                
$key strtolower($key);
            }

            
// this is used by DefinitionDecorator to overwrite a specific
            // argument of the parent definition
            
if (isset($arg['index'])) {
                
$key 'index_'.$arg['index'];
            }

            switch (
$arg['type']) {
                case 
'service':
                    
$invalidBehavior ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE;
                    if (isset(
$arg['on-invalid']) && 'ignore' == $arg['on-invalid']) {
                        
$invalidBehavior ContainerInterface::IGNORE_ON_INVALID_REFERENCE;
                    } elseif (isset(
$arg['on-invalid']) && 'null' == $arg['on-invalid']) {
                        
$invalidBehavior ContainerInterface::NULL_ON_INVALID_REFERENCE;
                    }

                    if (isset(
$arg['strict'])) {
                        
$strict self::phpize($arg['strict']);
                    } else {
                        
$strict true;
                    }

                    
$arguments[$key] = new Reference((string) $arg['id'], $invalidBehavior$strict);
                    break;
                case 
'collection':
                    
$arguments[$key] = $arg->getArgumentsAsPhp($namefalse);
                    break;
                case 
'string':
                    
$arguments[$key] = (string) $arg;
                    break;
                case 
'constant':
                    
$arguments[$key] = constant((string) $arg);
                    break;
                default:
                    
$arguments[$key] = self::phpize($arg);
            }
        }

        return 
$arguments;
    }

    
/**
     * Converts an xml value to a PHP type.
     *
     * @param mixed $value
     *
     * @return mixed
     */
    
public static function phpize($value)
    {
        return 
XmlUtils::phpize($value);
    }
}
Онлайн: 1
Реклама