[PHP]代替構文を使ってみる

HTMLタグを書き出すクラスを作ってみたけど、結局テンプレートのHTMLコードを用意してincludeした方が今回は楽そうなので、使わない事にしました。

あ、案件はポシャッたんですけど、途中まで作ってるやつは最後まで仕上げようかと。

echoの代替

テンプレートのHTMLコードの中でPHPの変数の値を使いたい時、毎回「<?php echo $text; ?>」なんて書くの面倒ですよね。

そんな時に使えるのが代替構文で、上記の様な記述は「<?= $text?>」で記述できます。

foreach等の代替

繰り返しや条件文も代替の構文があります。

中括弧を使わず「<?php foreach($array as $item): ?>」と「<?php endforeach; ?>」の間に処理したいコードを記述します。

中括弧の代わりに「:」と「end…;」で囲う感じでしょうか。

この例ですと、繰り返し処理の中で「<?= $item?>」とすると、$array内の要素を使う事ができます。

foreachの他にif、for、whileといった処理に使えます。

簡単な例を。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>代替構文</title>
</head>

<?php
$text = "変数の値だよ";
$idList = array();
$idList[] = "id_0";
$idList[] = "id_1";
$idList[] = "id_2";
?>

<body>
 <p><?= $text?></p>
 <ul>
<?php foreach($idList as $id): ?>
  <li id="<?= $id?>"><?= $id?>だよ!</li>
<?php endforeach; ?>
 </ul>
</body>
</html>

「<?php foreach…」等の前にインデントがあると出力された結果に変なインデントが入ってしまうので、インデントを無くしておくと良いかもしれません。

上記の記述で実行すると以下の様に出力されます。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>代替構文</title>
</head>

<body>
 <p>変数の値だよ</p>
 <ul>
  <li id="id_0">id_0だよ!</li>
  <li id="id_1">id_1だよ!</li>
  <li id="id_2">id_2だよ!</li>
 </ul>
</body>
</html>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>