PHP-使用PHP简化冗余HTML格式



我发现自己经常重复HTML代码来格式化项目,如列表、表格和其他重复保存格式的区域(即:员工照片)。我知道必须有一些方法来简化使用重复格式的部分的HTML输出,但我不确定Array是否适用,或者是否有我还没有发现的更好的方法。

例如,我最近为Macon Mall开发了一个商店列表目录。这是代码的一部分:

<ul>
   <li>Belk<br /><span class="both">Upper &amp; Lower Level</span><br />(478) 477-2355</li>
   <li>JCPenney<br /><span class="both">Upper &amp; Lower Level</span><br />(478) 477-8400</li>
   <li>Macy's<br /><span class="both">Upper &amp; Lower Level</span><br />(478) 471-3847</li>
   <li>Sears<br /><span class="both">Upper &amp; Lower Level</span><br />(478) 471-5555</li>
</ul>

如何利用PHP的强大功能简化输入过程?

我希望我已经说清楚了。如果没有,请随意提问。谢谢大家的帮助!

<?php
$stores = array(
    array(
        'name' => 'Belk',
        'level' => 'Upper & Lower Level',
        'number' => '(478) 477-2355'
    ),
    array(
        'name' => 'JCPenney',
        'level' => 'Upper & Lower Level',
        'number' => '(478) 477-8400'
    ),
    array(
        'name' => 'Macy's',
        'level' => 'Upper & Lower Level',
        'number' => '(478) 471-3847'
    ),
    array(
        'name' => 'Sears',
        'level' => 'Upper & Lower Level',
        'number' => '(478) 471-5555'
    )
);
?>
<ul>
    <?php foreach( $stores as $store): ?>
        <li><?= $store['name']?><br /><span class="both"><?= htmlspecialchars( $store['level']) ?></span><br /><?= $store['number']?></li>
    <?php endforeach; ?>
</ul>

这听起来像是在你的限制范围内尽你所能。CMS可能会探索一些东西。

如果你想尝试一些新的东西,我建议你尝试一下PHP的闭包功能。您将从示例中看到,从代码中完全删除HTML是多么容易。我打算围绕这个(表单等)开发一个库,但核心概念非常简单。从这个功能开始(现在不用担心它是如何工作的):

function h($code , $id="", $class=""){
    if ($id !== "") $id = " id = "$id"" ;
    $class =  ($class !== "")? " class ="$class"":"";
    $open = "<$code$id$class>";  
    $cls = trim(substr($code,0,strpos($code.' ',' ')));
    $close = "</$cls>"; 
    return function ($inner = "") use ($open, $close){
        return "n$openn$innern$closen";};
}

现在这个代码:

//Create two simple tags (Why not an entire page layout!)
$tags = array('ul','li');
foreach ($tags as $element)
   $$element = h( $element);
//Create the span tag with its class...
$span=h("span", "", "both");
//Creating an optional div with an id
$div = h("div", "test");
//Constant linebreak
$br = "<br />";
//more optional tags
$bold = h('strong');
$italic =  h('i');

//现在这是您的"关闭"HTML!

echo $ul(
   $li("belk".$br.$span("Upper &amp; Lower Level").$br."(478) 477-2355").
   $li("JCPenney".$br.$span("Upper &amp; Lower Level").$br."(478) 477-2355").
   $li("Macys".$br.$span("Upper &amp; Lower Level").$br."(478) 477-2355").
   $li("Sears".$br.$span("Upper &amp; Lower Level").$br."(478) 477-2355")
);

首先,您注意到没有结束标记!这是因为闭合功能就像一个小面包,用两半闭合汉堡!注意关闭功能

h()

返回一个函数!闭包获取环境的快照(在本例中,打开和关闭标记及其属性),当再次调用时,它会记住将它们放在正确的位置。

谁说我们可以到此为止!你可以嵌套所有你想要的HTML,一切都会正确!有了这种技术,您就不必用原始HTML弄脏视图。没有什么可以阻止您创建接收数组并直接围绕每个元素映射HTML的函数。

最新更新