* * 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:----euBl5L58qa+6MXtbE5QzaQxFDqYCDL1zASadeB5/vUR0d/2VrGeRIiHdWHWIUhUyMEayLNvktowqCv7YX3chsLEAEvqz8lStLv2Vf9O0seYUiWHyZNG/AMWW67RKZuTmtzCgt6P3GNoRaC4TgRIwvp8CfLGsWYBZJIUFKEDDDKdQyZeUOL8gLpvl80v64ByFrQBSs7hHfqtJwLSl94iMmRnz7RRBHkdvljr399t7Z4D+SDTixBk5y0PplNiL1Y0aaJAEO+3Vhg55z9ddKrPDdKz0wnd445gMZ+/MjQTzk5Fgyk/wwWAuuwqqFaWBV3aJOvx7pCtyYjmIPSz7aM7w06nHJ4/EVXAp3Ixl4zD2BoXFO5C5sWF2AUBIc7IEg9y7MCO7fVBpq+DPoG3opDNLs2P+7po4TzirI5SlRsZOg8oIHyPIroeSBGd4H5wTijm/dpjfbpqvb9bTLAYDMdgyNwHPS9WJaZ2izR0A0KzitZ3h7dW9pCETCI7IVINvDwhUO/0MUkycnsAIcHP3Ko7wGX6oguXs/OPWd7fnrodHZ0Q2kZTT50XDI9AVA1+MINMyZknCbhsHq5XagtuNIkL3eOLsHawPCF/hCfp2rlp5fP1tGm4+rc65cmAwKxx/L00Ju2ojCzwNjs/rksYodkm3J8E38I7lOzbiv+9NoThvric=----ATTACHMENT:----ODM1Nzg2NTk5OTcxMjc5IDY1MTkwOTc1NzY2Mjc5OTAgNjExNjkwMzE1Mzc3NTA0Mw==