【PHP日記】

自分の知識不足を悟った末、なるべく1日一回、Webに関する知識を書いていくだけのブログ。

PHP雑学⑩ 【33日目】

PHPを学び始めた素人目線での、大事だったり大事じゃなかったりする雑知識メモ、その⑩です。


twigの『constant()』における名前空間

twigで定数を表示する関数である『constant()』関数を使うときは、phpファイル側でuseキーワードを使っていても名前空間を指定する必要があります。

// index.php
use exam\Bootstrap;
// index.html.twig
$link = constant('exam\\Bootstrap::ENTRY_URL');

constant()関数は、指定した定数の値を取得するための関数であり、その定数が名前空間内で定義されている場合は、完全修飾名(名前空間を含む完全な名前)を指定する必要があります。

この挙動は、constant()関数が文字列として渡された定数名を解析するので、その時点ではuse文による名前空間エイリアスが利用できないために起こります。



required属性を付与しても、php側での検証は必要

HTMLのinput要素にrequired属性が付与されている場合、その要素が空(未入力)の状態でフォーム送信を試みると、ブラウザはユーザーに入力を促す警告を表示し、フォームの送信をブロックします。

つまりそもそものフォームが送信されない、と言う挙動をとります。

<input type="radio" name="{{val}}" value="1" required>

ただし、この挙動はクライアントサイド(ブラウザ側)でのバリデーションの一部であり、ユーザーによって回避される可能性があるため、セキュリティ上の理由から、バックエンド側でも入力値の検証を行う必要があります。

if (isset($_POST[$val]) === true) {
    ...
}



value属性』で渡ってくる値はstringである

HTMLフォームから送信されるinputタグのvalue属性は基本的に「文字列」として扱われます。

たとえ入力された値が「数値」のみで構成されていても、送信されたデータは文字列としてPHPに渡されます。

なので、PHP側でこれらの値を数値に変換するには、以下のいずれかの方法を使います。

// intval関数、もしくはfloatval関数
$integerValue = intval($_POST['value']);
$floatValue = floatval($_POST['value']);
// 型キャスト
$integerValue = (int)$_POST['value'];
$floatValue = (float)$_POST['value'];



以上です。