Вход Регистрация
Файл: monst/Xsolla/Guzzle/Service/Command/LocationVisitor/Request/AbstractRequestVisitor.php
Строк: 52
<?php

namespace GuzzleServiceCommandLocationVisitorRequest;

use 
GuzzleServiceCommandCommandInterface;
use 
GuzzleHttpMessageRequestInterface;
use 
GuzzleServiceDescriptionParameter;

abstract class 
AbstractRequestVisitor implements RequestVisitorInterface
{
    
/**
     * @codeCoverageIgnore
     */
    
public function after(CommandInterface $commandRequestInterface $request) {}

    
/**
     * @codeCoverageIgnore
     */
    
public function visit(CommandInterface $commandRequestInterface $requestParameter $param$value) {}

    
/**
     * Prepare (filter and set desired name for request item) the value for request.
     *
     * @param mixed                                     $value
     * @param GuzzleServiceDescriptionParameter     $param
     *
     * @return array|mixed
     */
    
protected function prepareValue($valueParameter $param)
    {
        return 
is_array($value)
            ? 
$this->resolveRecursively($value$param)
            : 
$param->filter($value);
    }

    
/**
     * Map nested parameters into the location_key based parameters
     *
     * @param array     $value Value to map
     * @param Parameter $param Parameter that holds information about the current key
     *
     * @return array Returns the mapped array
     */
    
protected function resolveRecursively(array $valueParameter $param)
    {
        foreach (
$value as $name => &$v) {
            switch (
$param->getType()) {
                case 
'object':
                    if (
$subParam $param->getProperty($name)) {
                        
$key $subParam->getWireName();
                        
$value[$key] = $this->prepareValue($v$subParam);
                        if (
$name != $key) {
                            unset(
$value[$name]);
                        }
                    } elseif (
$param->getAdditionalProperties() instanceof Parameter) {
                        
$v $this->prepareValue($v$param->getAdditionalProperties());
                    }
                    break;
                case 
'array':
                    if (
$items $param->getItems()) {
                        
$v $this->prepareValue($v$items);
                    }
                    break;
            }
        }

        return 
$param->filter($value);
    }
}
Онлайн: 4
Реклама