symfonyではpropel-load-dataでyaml形式のデータをDBに読み込ませることができますが、次のようにテストデータをいくつも書き続けるのは面倒です。
article:
article_1:
id:
author_id: author_1
subject: タイトル1
text: 本文1
article_2:
id:
author_id: author_2
subject: タイトル2
text: 本文2
article_3:
id:
author_id: author_3
subject: タイトル3
text: 本文3
(以下たくさん)さらにスキーマに変更が加わって何十ヶ所も修正……となると大変なことになります。
yamlにはPHPコードを直接かけるので、for文で大量のデータを作るようにすると便利です。
article: <?php for($i = 1; $i <= 100; $i++): ?> article_<?php echo $i ?>: id: author_id: author_<?php echo $i ?> subject: タイトル<?php echo $i ?> text: 本文<?php echo $i ?> <?php endfor; ?>
ここで注意点が1つあります。行末にPHPコードが来る場合(上記例ではauthor_id、subject、textの行)、「?>」と改行文字の間に半角空白を1つ入れておかないとうまく動きません。
というのは、「?>」直後の改行コードはPHPパーサが削除してしまうため、つぎのようにyaml文法としておかしくなってしまうからです。
article:
article_1:
id:
author_id: author_1 subject: タイトル1 text: 本文1 article_2:
id:
author_id: author_2 subject: タイトル2 text: 本文2 article_3:
id:
author_id: author_3 subject: タイトル3 text: 本文3 article_4:
(以下省略)半角空白を挟み込むことで、改行コードを正しく出力させることができます。
仕組みとしてはob_start()とinclude()とob_get_clean()でyamlファイルをPHPパーサにかけているだけなので、for文に限らずいろんなことができます。
POSTED BY takekoshi ON 9 月 25th, 2007. PERMALINK

