まず、PHPはテンプレートエンジンです。私の経験では、PHPの上にレイヤーを重ねるテンプレートエンジンは、最も単純なケースにのみ適していて、簡単に大きくなりすぎてしまいます。
第二に、元のコードは他の方法と同じくらい優れています。関数に抽象化するために明白なことを述べるリスクがあります。
function output_block($BACKGROUND, $LINK, $IMAGELINK, $DESCRIPTION, $PRICE)
{
echo "<div id='contentblock' style='background-image:url(images/$BACKGROUND.png);'>
<div id='picture'><a href='$LINK'><img src='$IMAGELINK'/></a></div>
<div id='description'><p>$DESCRIPTION</p></div>
<div id='price'><p class=price>$PRICE</p></div>
</div>";
}
フレームワークを採用してさらに改善したい場合は、管理者構成ページ全体を以下に示します。すべてのHTML接着剤はフレームワークによって提供されます。次のコードは実際のものですが、フレームワークがどのように多くのグランジ作業を提供できるかを実際に示しています。
以下の例では、単一のエンティティを編集する場合は、をに変更しTableViewEdit
、FormView
反復可能なリストではなくエンティティのインスタンスを提供します。
$entity = new CbfConfig(); // Database entity
$page = new AdminWebPage("Site Configuration"); // Page for output
/*
* build the view
*/
$vil = new ViewItemList();
$col = &$vil->add(new ViewItem("description","Description"));
$col->get_output_transform()->allow_edit(false); // this field cannot be editted
$col = &$vil->add(new ViewItem("value","Value"));
$v1 = new TableViewEdit($entity, $vil,"admin_values"); // present as standard editable table
/*
* output the page
*/
$page->begin();
$iterable_list = CbfConfig::site_begin();
$page->add_body($v1->get_output($iterable_list,'admin_config'));
$page->end();