2011-01-19 8 views

答えて

14

thisとHTMLブロック内に埋め込まれた場合に読みやすくなる傾向にあるそのalternateを参照されたいです。

121

読みやすくするために、次の構文を使用することをお勧めします。オープンタグにphpを省略

<? if ($condition): ?> 
    <p>Content</p> 
<? elseif ($other_condition): ?> 
    <p>Other Content</p> 
<? else: ?> 
    <p>Default Content</p> 
<? endif; ?> 

注意は、short_open_tagsは、コンフィギュレーション、which is the defaultで有効になっていることを必要とします。関連する中括弧のない条件構文は常に有効で、この指令に関係なく使用できます。

+3

この例では、ステートメントに「PHP」がありません。 –

+3

@AdamYoungersこれはshort_open_tagsと呼ばれていますが、あなたはそれに精通していないかもしれませんが、完全に有効です。 – coreyward

+3

私はそれらに精通していませんでした。私は上記を使用してみて、それは私のページを壊した。クイック検索と私はあなたのphp.iniファイルでこれを有効にする必要があります参照してください... http://stackoverflow.com/questions/2185320/how-to-enable-php-short-tags –

28
<?php if ($foo) { ?> 
    <div class="mydiv">Condition is true</div> 
<?php } else { ?> 
    <div class="myotherdiv">Condition is false</div> 
<?php } ?> 
0

人々が使用する複数の方法があり、それぞれに独自の場所があります。

<?php if($first_condition): ?> 
    /*$first_condition is true*/ 
<?php elseif ($second_condition): ?> 
    /*$first_condition is false and $second_condition is true*/ 
<?php else: ?> 
    /*$first_condition and $second_condition are false*/ 
<?php endif; ?> 

あなたのphp.iniの属性short_open_tag = true(これは通常、デフォルトのphp.iniファイルのline 141で発見された)で、あなたは<?phpから<?にあなたのPHPのオープンタグを置き換えることができます。 ほとんどのライブサーバー環境ではこれがオフになっています(Drupal、WordPress、Joomlaなどの多くのCMSを含む)。私はすでにDrupalでオープンハンドのタグをテストし、あなたのサイトを破壊することを確認しましたので、<?phpに固執してください。 short_open_tagは、すべてのサーバー構成ではデフォルトではオンになっていないため、未知のサーバー構成用に開発する場合はそのように仮定してはなりません。多くのホスティング会社はオフになっていますshort_open_tag

stackExchangeでのshort_open_tagのクイック検索は、830件の結果を示しています。 https://stackoverflow.com/search?q=short_open_tag これは、あまり遊ばないと何か問題を抱えている人が多いです。

いくつかのサーバー環境とアプリケーションでは、short_open_tagtrueに設定されていても、短い手続きのPHP公開タグでもコードがクラッシュします。

short_open_tagは、PHP6では削除されるので、ショートハンドタグは使用しないでください。

将来のすべてのPHPのバージョンは、短いカット "それはあなたが短い タグを使用しないで数年間のために推奨されています" short_open_tag

をドロップします代わりに完全なタグ の組み合わせを使用することができます。 XMLと 他の言語でこれらのタグを使用すると、サーバーは簡単に混乱し、間違ったコンテキストで間違ったコードを解析する になります。しかし、この短い カットはこのような長い間の機能でしたので、下位互換性のために現在は がサポートされていますが、 は使用しないことをお勧めします。「9:00 - php: "short_open_tag = On" not working

でJelmer 9月25日'12は、通常、あなたがそうのようにPHPを記述します。 allow_short_tagsディレクティブを使用することができるしている有効になっているが場合:また、並べ替えのタグは余分な構文を提供します: は

と同じですが、短いタグはクールに見えるかもしれませんが、そうではありません。 PHP6から削除されました。 「ショートタグがあったが、ために: Crozinは、私はZendのPHP 5の認定ガイドを引用したい、なぜ一部に答えるために午後10時12分 php short_open_tag problem

で8月24日'10に答えしかし、 は、XMLヘッダーと競合する大きな欠点を持っているため、 は、やや道端に陥っています。 - ふわふわ4月13日'11 14時40 Are PHP short tags acceptable to use?

あなたは、人々は、次の例を使用しても見ることができるで:これは動作します

<?php if($first_condition){ ?> 
    /*$first_condition is true*/ 
<?php }else if ($second_condition){ ?> 
    /*$first_condition is false and $second_condition is true*/ 
<?php }else{ ?> 
    /*$first_condition and $second_condition are false*/ 
<?php } ?> 

が、それは次のように考えられていないとして、それは非常に眉をひそめていますあなたはこの形式を使うべきではありません。埋め込まれたタグを内部に持たないPHPコードブロックがあったPHPファイルがあった場合は、ブラケット形式を使用します。

次の例ブラケット方式

<?php 
if($first_condition){ 
    /*$first_condition is true*/ 
}else if ($second_condition){ 
    /*$first_condition is false and $second_condition is true*/ 
}else{ 
    /*$first_condition and $second_condition are false*/ 
} 
?> 

を使用するときに、自分のためにこのコードをやっている場合は、あなたが好きなものを行うことができます示していますが、あなたはそれが助言される仕事で、チームで作業している場合適切な状況のために正しい形式を使用してください。埋め込まれたhtml/phpスクリプトで大括弧を使用すると、誰もあなたのコードを整理したくないので、解雇するのに適しています。 ITの上司はコードの読みやすさと大学の教授の見分けやすさを気にします。速記は落胆(PHPの標準によって)されているかどうか、そのまだ不明duskwuffからのコメントに基づいて

UPDATE

。私はこの答えを更新して、より多くの情報を得るでしょう。しかし、移植性には悪いという簡略表記については、Web上で見つかった多くの文書に基づいています。私はまだ個人的にはそれを利用しないので利点はないし、あなたが設定されているすべてのWebホストではないオンに依存する必要があります。

+1

"PHP6で"? PHP 6は存在せず、決してありません。次のメジャーバージョンはPHP 7であり、short_open_tagsのステータスを変更する予定はありません。 – duskwuff

+0

@duskwuff PHP7にジャンプしてPHP6をスキップすることが正しいかもしれません。 PHP5では落胆しているようなshort_open_tagsを検討しており、廃止予定です。 –

+2

あなたは「落胆している」、「廃止される」という考えをどこから得ていますか?ドキュメンテーションには、これを示唆するものは全くありません。 http://php.net/manual/en/ini.core.php#ini.short-open-tag – duskwuff

7

編集:私は@パトリックの答えに書き留めたいと思っていますが、明らかにStackOverflowは私の評判が十分ではないと思います。私はこれが重要なメモであると感じています。ここに上陸している人々が学ぶためにそうしているからです。これが質問に答えることができないために削除された場合は、そのままにしてください。パトリックが彼の答えを訂正するかもしれないなら、これを削除することは害ではない。

これは古い質問/回答ですが、Bing検索では高いランク付けをしていますので、ここでPHP混乱した魂にこのコメントを追加するよう強く勧められます。@Patrickマクマホンの応答で

、ここでは第二のコメント($ first_conditionが偽で、$ second_conditionが真で)完全に正確ではありません。

<?php if($first_condition): ?> 
    /*$first_condition is true*/ 
<?php elseif ($second_condition): ?> 
    /*$first_condition is false and $second_condition is true*/ 
<?php else: ?> 
    /*$first_condition and $second_condition are false*/ 
<?php endif; ?> 

ELSEIF火事か$ first_condition真または偽である場合は、elseifステートメントが複数存在する場合は、それを追加します。

私はPHPの専門家でないので、私はそれがこのか、そのELSEそのまたはそこPHPでそれをコーディングする別の/より良い方法があるが、これは希望の場合のIF を言うために正しい方法だかどうかわかりませんELSE条件と比較してOR条件を探している人とは重要な違いです。

ソースはw3schools.comで、自分の経験です。

+0

本当ですか? else if(echo 'whaddup';} exit; '出力:"ここで "PHP 5.5では、次のようにテストしました: – Philipp

0
<?php if (date("H") < "12" && date("H")>"6") { ?> 
    src="<?php bloginfo('template_url'); ?>/images/img/morning.gif" 
<?php } elseif (date("H") > "12" && date("H")<"17") { ?> 
src="<?php bloginfo('template_url'); ?>/images/img/noon.gif" 
    <?php } elseif (date("H") > "17" && date("H")<"21") { ?> 
    src="<?php bloginfo('template_url'); ?>/images/img/evening.gif" 
    <?php } elseif (date("H") > "21" && date("H")<"24") { ?> 
    src="<?php bloginfo('template_url'); ?>/images/img/night.gif" 
    <?php }else { ?> 
    src="<?php bloginfo('template_url'); ?>/images/img/mid_night.gif" 
    <?php } ?> 
関連する問題