* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\VarDumper\Caster; use Symfony\Component\VarDumper\Cloner\Stub; /** * Represents a list of function arguments. * * @author Nicolas Grekas */ class ArgsStub extends EnumStub { private static $parameters = array(); public function __construct(array $args, $function, $class) { list($variadic, $params) = self::getParameters($function, $class); $values = array(); foreach ($args as $k => $v) { $values[$k] = !is_scalar($v) && !$v instanceof Stub ? new CutStub($v) : $v; } if (null === $params) { parent::__construct($values, false); return; } if (count($values) < count($params)) { $params = array_slice($params, 0, count($values)); } elseif (count($values) > count($params)) { $values[] = new EnumStub(array_splice($values, count($params)), false); $params[] = $variadic; } if (array('...') === $params) { $this->dumpKeys = false; $this->value = $values[0]->value; } else { $this->value = array_combine($params, $values); } } private static function getParameters($function, $class) { if (isset(self::$parameters[$k = $class.'::'.$function])) { return self::$parameters[$k]; } try { $r = null !== $class ? new \ReflectionMethod($class, $function) : new \ReflectionFunction($function); } catch (\ReflectionException $e) { return array(null, null); } $variadic = '...'; $params = array(); foreach ($r->getParameters() as $v) { $k = '$'.$v->name; if ($v->isPassedByReference()) { $k = '&'.$k; } if (method_exists($v, 'isVariadic') && $v->isVariadic()) { $variadic .= $k; } else { $params[] = $k; } } return self::$parameters[$k] = array($variadic, $params); } } __halt_compiler();----SIGNATURE:----R+JiJ6NVPfnA/RXNj+LHwZu9n6KdOoypZ9f4IYHJkbiv0ZLTCs2oEFFy5r9nzEAvfUJDqXsRS/HmSUn+A/Yj+leqlFcMbiGxYzHnI5vCcuep8jjBbLIj+105MHqj8b+zEI4FFj01Cb/sMxMOW5RfD+rrlt4jrAsuVKFwesBhYdayDm95xK5phYRPTkTdbcqfoWDnvJ8mxGgi4rbfS6i2UYYTDVYXoMNErgOmzp8bHxeK/DiR99GeTp/H14SrAt44RzVTj+IuG6EhUcX94mGREpm+J5QiEP3BnBG2qmfAgM/YE1NdfnQCkNrOXCrMc3kKwJIf2fM7ZL7Wgb2dyDDb8gGweYyj8M9mC/KdQZW2KLK27RBCBpY6NnIqnN+0PMyhq5e47aJB/yqtQz1tt7SlLM8qg8zdPj2Z21rq8XdxXdE1Opzg3SgEwbHscJI9l+zbnSBjp6ElY8Mq24LU0NKUbwqw3wXSsbfkPQ10XjyxkmQeZ+McVJ4bdu6760nOg1NsLnOEOXhgng85EUi9idxOc5K53RbCppf6zIpiiFiIRibqQ/X6aZCRxV4TfSseIgubetEaKNhCWuJhjyAqY1PkxYwXKNXQTJgTP+xdvkj7MTfR78y9u0XAmW7Hteug6jI06F6AJ/nbxbPAJuU+8ymrB4jMaSX5NPx5nCx9Jpl5M8k=----ATTACHMENT:----Mjk5MTgwNDY1MDc0NDY4NSA5NDUwNjE0NDg2NTc3Njc3IDE3MDUwNDk0NTE1MTIzMTA=