特殊文字を HTML エンティティに変換しない

Rampart では、テンプレートを使用してデータを出力する際、
セットされたデータには自動的に hsc が適用され、
特殊文字が HTML エンティティに変換されます。

しかし、敢えて特殊文字をそのまま表示したい場合もあります。
そんなときに使用するメソッドが
setNoHsc, setNoHscFromArray です。

$ramp->setNoHsc(key, val);
$ramp->setNoHsc(key, val, length);

$ramp->setNoHscFromArray(array);
$ramp->setNoHscFromArray(array, key1, key2, key3...);

「このメソッドでセットされた変数の値には hsc を自動適用しない」
という点以外は、
set, setFromArray と使い方や機能などは同じです。

// 次の例では、
// "key" の値は HTML エンティティ変換され
// "<br />" が出力される。
// (つまり、改行タグではなく <br /> と表示される)

echo $ramp->set("key", "<br />");
echo $ramp->getHsc("key");


// 次の例では、
// "key" の値は HTML エンティティ変換されず
// "<br />" がそのまま出力される。
// (つまり、改行タグとして表示される)

echo $ramp->setNoHsc("key", "<br />");
echo $ramp->getHsc("key");

getHsc は本来 hsc を適用した値を返しますが、
setNoHsc 系メソッドを使用すると
「このメソッドでセットされた変数の値には hsc を自動適用しない」
と指定したことになるので、hsc は適用されず、
セットした値がそのまま返ります。

テンプレートを使用した出力でも同様に、
setNoHsc 系メソッでセットされたデータは
特殊文字がそのまま出力されます。

補足

次の例のように、手動で hsc を適用すれば、
当然ですが、HTMLエンティティ変換されます。 echo $ramp->setNoHsc("key", "<br />");
$val = $ramp->getHsc("key");
// $val は HTML エンティティ変換されず
// "<br />" のまま。


echo $ramp->hsc($val);
// $val は HTML エンティティ変換され、
// "&lt;br /&gt;" が出力される。
// (つまり、改行タグではなく <br /> と表示される)