* @template-extends Traversable */ interface ParametersInterface extends ArrayAccess, Countable, Serializable, Traversable { /** * Constructor * * @param array|null $values */ public function __construct(?array $values = null); /** * From array * * Allow deserialization from standard array * * @param array $values * @return mixed */ public function fromArray(array $values); /** * From string * * Allow deserialization from raw body; e.g., for PUT requests * * @param string $string * @return mixed */ public function fromString($string); /** * To array * * Allow serialization back to standard array * * @return array */ public function toArray(); /** * To string * * Allow serialization to query format; e.g., for PUT or POST requests * * @return string */ public function toString(); /** * @param TKey $name * @param TValue|null $default * @return mixed */ public function get($name, $default = null); /** * @param TKey $name * @param TValue $value * @return ParametersInterface */ public function set($name, $value); }