RFC 3986、 HTML Living Standard に基づいた Mojo::URLで利用される、フォームパラメーターのためのコンテナです。">
名前

Mojo::Parameters - パラメーター

Mojo::ParametersRFC 3986HTML Living Standard に基づいた Mojo::URLで利用される、フォームパラメーターのためのコンテナです。

使い方

use Mojo::Parameters;

# 解析
my $params = Mojo::Parameters->new('foo=bar&baz=23');
say $params->param('baz');

# 構築
my $params = Mojo::Parameters->new(foo => 'bar', baz => 23);
push @$params, i => '♥ mojolicious';
say "$params";

属性

Mojo::Parametersは次の属性を実装しています。

charset

my $charset = $params->charset;
$params     = $params->charset('UTF-8');

パラメーターをデコードするために利用されるキャラクターセット。 デフォルトはUTF-8です。

# エンコードとデコードを無効にします
$params->charset(undef);

メソッド

Mojo::ParametersMojo::Baseのすべてのメソッドを継承しており、 次の新しいメソッドを実装しています。

append

$params = $params->append(foo => 'ba&r');
$params = $params->append(foo => ['ba&r', 'baz']);
$params = $params->append(foo => ['bar', 'baz'], bar => 23);
$params = $params->append(Mojo::Parameters->new);

パラメーターを追加します。

# "foo=bar&foo=baz"
Mojo::Parameters->new('foo=bar')->append(Mojo::Parameters->new('foo=baz'));

# "foo=bar&foo=baz"
Mojo::Parameters->new('foo=bar')->append(foo => 'baz');

# "foo=bar&foo=baz&foo=yada"
Mojo::Parameters->new('foo=bar')->append(foo => ['baz', 'yada']);

# "foo=bar&foo=baz&foo=yada&bar=23"
Mojo::Parameters->new('foo=bar')->append(foo => ['baz', 'yada'], bar => 23);

clone

my $params2 = $params->clone;

パラメーターを複製します。

every_param

my $values = $params->every_param('foo');

cに似ていますが、 同じ名前で共有されているすべての値を、 配列のリファレンスで返却します。 このメソッドは、パラメーターを正規化することに注意してください。

# 最初の値を取得
say $params->every_param('foo')->[0];

merge

$params = $params->merge(foo => 'ba&r');
$params = $params->merge(foo => ['ba&r', 'baz']);
$params = $params->merge(foo => ['bar', 'baz'], bar => 23);
$params = $params->merge(Mojo::Parameters->new);

パラメーターをマージします。 このメソッドはパラメーターを正規化することに注意してください。

# "foo=baz"
Mojo::Parameters->new('foo=bar')->merge(Mojo::Parameters->new('foo=baz'));

# "yada=yada&foo=baz"
Mojo::Parameters->new('foo=bar&yada=yada')->merge(foo => 'baz');

# "yada=yada"
Mojo::Parameters->new('foo=bar&yada=yada')->merge(foo => undef);

names

my $names = $params->names;

すべてのパラメーター名のリストを返却します。

# すべてのパラメーターの名前
say for @{$params->names};

new

my $params = Mojo::Parameters->new;
my $params = Mojo::Parameters->new('foo=b%3Bar&baz=23');
my $params = Mojo::Parameters->new(foo => 'b;ar');
my $params = Mojo::Parameters->new(foo => ['ba;r', 'b;az']);
my $params = Mojo::Parameters->new(foo => ['ba;r', 'b;az'], bar => 23);

新しいMojo::Parametersオブジェクトを生成するか、 必要であれば、パラメーターを解析します。

pairs

my $array = $params->pairs;
$params   = $params->pairs([foo => 'b&ar', baz => 23]);

パラメーターのペアを解析します。 このメソッドはパラメーターを正規化することに注意してください。

param

my $value = $params->param('foo');
$params   = $params->param(foo => 'ba&r');
$params   = $params->param(foo => qw(ba&r baz));
$params   = $params->param(foo => ['ba;r', 'baz']);

パラメーターの値にアクセスします。 同じ名前で共有する複数の値があり、 最後のひとつより多い値を取得したい場合は、 every_paramを使用することができます。 このメソッドはパラメーターを正規化することに注意してください。

params

my $array = $params->params;
$params   = $params->params([foo => 'b&ar', baz => 23]);

解析されたパラメーター。 このメソッドはパラメーターをノーマライズすることに注意してください。

parse

$params = $params->parse('foo=b%3Bar&baz=23');

パラメーターを解析します。

remove

$params = $params->remove('foo');

パラメーターを取り除きます。

# "bar=yada"
Mojo::Parameters->new('foo=bar&foo=baz&bar=yada')->remove('foo');

to_hash

my $hash = $params->to_hash;

パラメーターをハッシュに変換します。 このメソッドはパラメーターをノーマライズすることに注意してください。

# "baz"
Mojo::Parameters->new('foo=bar&foo=baz')->to_hash->{foo}[1];

to_string

my $str = $params->to_string;

パラメーターを文字列に変換します。

# "foo=bar&baz=23"
Mojo::Parameters->new->pairs([foo => 'bar', baz => 23])->to_string;

演算子

Mojo::Parametersは次の演算子をオーバーロードしています。

配列

my @pairs = @$params;

pairsのエイリアス。これはパラメーターを正規化することに注意していください。

say $params->[0];
say for @$params;

真偽値

my $bool = !!$params;

いつでも真です。

文字列化

my $str = "$params";

to_stringのエイリアス。

参考

Mojolicious, Mojolicious::Guides, http://mojolicio.us.

(Mojolicious 8.12を反映。2019年5月23日更新)