0

私のウェブサイトの多くは同じ資産を共有しており、クレジット カードもその 1 つです。そこで、すべてのクレジット カード アイコンを含むスプライトを作成しました。

私の情報ファイルには、次のような変数があります。

$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 つの主要なクレジット カードだけではありません。これは自動車業界向けで、ライト、グッドイヤー、カーケア、GE、シェルなど、他にもたくさんのカードがあります。主要な 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 に答える