1

小さなphpテンプレートパーサーをコーディングしたので、テンプレートを簡単に解析でき、テンプレート内の変数は次のようになります{variable_name}.

<title>{title}</title>

考えられる if/else ステートメントの構文を教えてください。

私は次のようなことを考えました:

{if {logged_in}: TRUE}
You're logged in...
{else}
You're not...
{/if}

と...

{if {logged_in}: TRUE}
You're logged in...
{/if}

上記は、基本的な if/else テンプレート構文を示しています (変数 Logged_in == true かどうかをチェックします)。サーバー側のコーディングの知識)。

乾杯!

4

6 に答える 6

0

テンプレートシステムを避けるべきだと言った人にとって、テンプレートには多くの利点があります。たとえば、機能が豊富な巨大なスイート(フォーラムソフトウェア、プロファイル、動的ユーザーコンテンツ、作品)を作成し、人々が情報の外観を編集できるようにしたいとします。PHPベースの直接アクセスを許可すると、非常に簡単に何かが壊れて、スクリプトがコンパイルされなくなる可能性があります。また、PHPを挿入して、コード内に隠された変数を取得したり、ソフトウェアを完全に屈服させたりすることもできます。テンプレートを使用すると、実行できることが制限されるため、テンプレートが壊れる可能性が制限されます。

私はテンプレートを使って多くの作業を行ったことがありませんが、私の経験では、どの式も通常、変数とは異なるカプセル化を持っています。たとえば、次のようになります。

<!-IF {value_which_should_be_true}->

value_which_should_be_trueはtrueです!ああ、そして{情報}

<!-ELSE->

value_which_should_be_trueは真実ではありませんでした...ああ、そして{different_information}

<!-ENDIF->

このようにして、\ {([A-Za-z0-9 _-] +)} \にpreg_replaceを使用し、値と唯一のものに$ values [$ 1]($ 1はpreg_replaceからの一致)の値を使用できます。 exec()を実行する必要があることは、コメントブロック内にあります。

于 2010-09-28T17:23:54.897 に答える
0

はい、成熟したテンプレート システムであるSmartyのようなものを使用したくないのはなぜですか? いつも使っていますが完璧です。

それでも自分のやり方でやりたいのであれば、デザイナーではなく、開発者に尋ねるべきだと思います。デザイナーは通常、html ファイル (場合によっては Photoshop ファイルのみ) を渡すだけで、変数や制御構造などに煩わされたくありません。また、開発者は、IF 内に関数や論理ステートメントなどの複雑なステートメントを望んでおり、必要としています。

ただし、構文は論理的に見え、使用できます。

于 2010-09-27T18:28:32.277 に答える
0

もちろん。
ここにあります:

<?if ($logged_in):?>
You're logged in...
<?else:?>
You're not...
<?endif?>

史上最高の構文。
ご覧のとおり、開始タグと終了タグが少し変更されています。
しかし、何も解析する必要はまったくありません -includeこのファイルだけです!
ところで、あなたの出力は次のようになります

<title><?=$title?></title>
于 2010-09-27T18:17:18.730 に答える
0

私はこれをお勧めします:

<title><?php echo $title ?></title>

<?php if( $logged_in ): ?>
You're logged in...
<?php else: ?>
You're not...
<?php endif; ?>

<?php if( $logged_in ): ?>
You're logged in as <?php echo $logged_in_username ?>
<?php endif; ?>

言い換えれば、テンプレートエンジンはまったくありません

学習経験としてそれを行っている場合を除き、テンプレート エンジンを気にせず、そのままの PHP を使用してください。

于 2010-09-27T18:17:58.837 に答える
0

中括弧には、評価される式を入れることができます

{if logged_in == TRUE}
  You're logged in...
{else}
  You're not...
{endif}

テンプレートを解析すると、中かっこで式を評価できます

{if foo == 10 + bar }
  do something
{else}
  do something else
{endif}

テンプレート ファイルに表示される可能性が低いため、一重中かっこを二重中かっこに変更することを検討することもできます。

于 2010-09-27T18:19:38.547 に答える
0

通常、条件式は $else などと呼ばれる変数を持つ可能性があるため、変数置換とは構文が異なります...

{% if logged_in == TRUE %}
You're logged in...
{% else %}
You're not...
{% endif %}

理にかなっています。次に、いくつかの標準に従い、 == を >= <= != などに置き換えることができます...巨大な新しい構文を学ぶ必要はありません:)

于 2010-09-27T18:22:12.883 に答える