汎用PHPクラスライブラリ PEACH の ver 1.0.0 をリリースしました
詳しくはコチラを参照してください!
- ドキュメント
- XML, HTML 出力支援モジュール Markup
- ソースコードのダウンロード (ZIP)
- https://github.com/trashtoy/PEACH/archive/1.0.0.zip
What's new?
今回、新しく Markup というモジュールを作りました。文字通り HTML や XML の出力をサポートします。
例えば HTML を出力する場合のサンプルコードはこんな感じ。
<?php require_once("/path/to/PEACH/src/autoload.php"); Peach_Markup_Html::alias(); // 関数 tag() を定義 echo tag("p")->append("This is test")->write();
このコードは以下の文字列を出力します。
<p>This is test</p>
jQuery みたいにサクサク使えます。
<?php require_once("/path/to/PEACH/src/autoload.php"); Peach_Markup_Html::alias(); // 関数 tag() を定義 $div = tag("div")->attr("class", "test"); tag("p")->append("This is test")->appendTo($div); tag("ul") ->append(tag("li", ["id" => "first"])->append("Hogehoge")) ->append(tag("li", ["id" => "second"])->append("Fugafuga")) ->append(tag("li", ["id" => "third"])->append("Piyopiyo")) ->appendTo($div); echo $div->write(); ?>
このコードは以下を出力します。
<div class="test"> <p>This is test</p> <ul> <li id="first">Hogehoge</li> <li id="second">Fugafuga</li> <li id="third">Piyopiyo</li> </ul> </div>
インデントは、あたかも手書きでコーディングした感じに自動的に調整されます。改行場所を細かくカスタマイズすることもできます。
きっかけ
作ったきっかけなんですが、例えばこんな感じの PHP と HTML のインデントが入り混じったソースをメンテしていて嫌気が差したり
<?php if ($users): ?> <?php if ($isTable): ?> <table> <tr> <th>ID</th> <th>名前</th> </tr> <?php foreach ($users as $user): ?> <tr> <td><?php echo $user->getID() ?></td> <td><?php echo $user->getName() ?></td> </tr> <?php endforeach; ?> </table> <?php else: ?> <ul> <?php foreach ($users as $user): ?> <li><?php echo $user->getName(); ?></li> <?php endforeach; ?> </ul> <?php endif; ?> <?php endif; ?>
タグの属性の部分がこんな感じにごちゃごちゃしたり (条件に応じて readonly 属性を付与する部分とか、特に)
<p><input type="text" name="hoge" value="<?php echo $value; ?>"<?php if ($isPreview): ?> readonly<?php endif; ?>>
typo のせいで HTML が invalid になったり、などなど。
HTML と PHP を混在させずに、全部 PHP で出力させてしまえば良いのだ!と思い、自分にとって理想的な API を作りました。
欠点は WEB デザイナーさんが手を入れにくくなってしまうことかな。