* * 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:----D+sQfOMwQBnFzbMrkqMkKpYPVHZvllD/o+6BGc0IAYPuWl/p1tsQXxHdO7hkjoac3cuVFKFv0Ys4Tp0zOB5jX3O/O1+F2sb9sZAcn8q5zTQvnSWUjsGMauKkeWEVdGPnpP0HMM7kkHchX8r2RGobAHDdkfigRWAWDjTeMj6lML6ZIOvfVrk07S0RWY3vb4fkX8eCKnwlhOmXTkGm1+nCsIZC8m9Hh5OUQdAAJ0TyRMkctn7P/S8aiJp0lhap1K3zM8ghHwXTXYminz/3F1CF8I8revS4jN+59IosQaD+XFpcogc3ITQYb0lcu43D0RWuxI6WWmrFwGXf7Knq6QxL39Z4xj2HwZKry2ZieVJc7HGeUD8REGaE+MPDmbNbzhCeyhryTNLT17O7Np46xY9EeRSFMgqqhbt3wiwwVxmrQDCwPTyrctaz+Ev8p/sFq8PXs0Z31Q8NXvRzDj+gp5pc59i9qAL1VQbNYdjO9lHWizDxzOIOy7L0W32O4OHsBkeO/2YQK00RC+bCepCAwwYBqWonQzY2TKabI8kDvqySCYNPinjKQZ+516+twNJ2vtwntLKkcw3ZbzEK9CLXha713vbGFlSlcQ8y74wUN9OK4Rt7Cgje0eZs7VEM2ctsNc5yRzTktq+CwTe4cXbKQAaetNZtmgr7usEHBFZTziiQCkg=----ATTACHMENT:----NDIwNjI1MDE3MzUwOTkxOCAxNDc0NTg3OTQyNjAyMTEgOTQ5MDQ1NjM1MTQ1NDM5MA==