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'];
以上です。