0

我的许多网站共享相同的资产,信用卡就是其中之一。所以我创建了一个包含所有信用卡图标的精灵。

在我的信息文件中,我有一个像这样的变量:

$credit_cards = array("visa", "mastercard", "discover", "amex");

然后在我显示图标的页脚中,我有这样的东西:

<?php
if (in_array("visa", $credit_cards)) {
    echo "<span class='card-visa'></span>";
}
if (in_array("mastercard", $credit_cards)) {
    echo "<span class='card-mastercard'></span>";
}
if (in_array("discover", $credit_cards)) {
    echo "<span class='card-discover'></span>";
}
if (in_array("amex", $credit_cards)) {
    echo "<span class='card-amex'></span>";
}
?>

所以在我的起始模板上,我所要做的就是编辑信息文件并选择我想要显示的信用卡。如果将来客户想要添加或删除他们不再接受的卡,我只需将其从阵列中取出。

您可能会认为这很疯狂,但它不仅仅是 4 大信用卡。这是针对汽车行业的,还有很多其他的卡片,例如 wright、goodyear、carcare、GE、shell 等。我只是粘贴了 4 个主要卡片的片段。

有一个更好的方法吗?我知道上面的解决方案真的很混乱,我觉得那里必须有一个更清洁的解决方案。我只需要一些关于你认为最好的建议。

谢谢!

4

2 回答 2

9
foreach ($credit_cards as $card) {
    echo "<span class='card-$card'></span>";
}

这是一致的命名方案得到回报的地方。

于 2012-11-30T13:51:23.050 回答
0

不确定您所说的“更好”是什么意思,但您至少可以排除共享代码:

<?php
function print_card($card) {
    if (in_array($card, $GLOBALS['credit_cards'])) {
        echo "<span class='card-$card'></span>";
    }
}

print_card('visa');
print_card('mastercard');
print_card('discover');
print_card('amex');
?>
于 2012-11-30T13:54:40.540 回答