Fark () {} if arasında if (): endif;

17 Cevap

Arasında herhangi bir fark var mı ...

if ($value) {

}

... Ve ...

if ($value):

endif;

?

17 Cevap

Bunlar aynı ama siz kodu MVC var ve kod yankılanırken bir şey var istemiyorsanız ikinci bir harika. Örneğin, benim .phtml dosya (Zend Framework) ben böyle bir şey yazacağım:

<?php if($this->value): ?>
Hello
<?php elseif($this->asd): ?>
Your name is: <?= $this->name ?>
<?php else: ?>
You don't have a name.
<?php endif; ?>

Ben şahsen gerçekten alternatif sözdizimi nefret ediyorum. Parantezi hakkında güzel bir şey vb çoğu IDE, vim, tüm dirsek vurgulama olması. Benim metin editörü ben çift bir kuşak tıklayın ve o biter ve çok kolay başlar nerede görebiliyorum, böylece bütün yığın vurgular.

Ben endif vurgulamak tek bir editör, endforeach, vb bilmiyorum

Ben bu tüm demek düşünüyorum:

this alternative syntax is excellent for improving legibility (for both PHP and HTML!) in situations where you have a mix of them.

http://ca3.php.net/manual/en/control-structures.alternative-syntax.php

HTML, bir PHP karıştırma zaman alternatif sytnax okumak için çok daha kolaydır. Normal PHP belgelerinde geleneksel sözdizimi kullanılmalıdır.

Firmamızda, HTML işleme için tercih edilen yoldur:

<? if($condition) { ?>
   HTML content here
<? } else { ?>
   Other HTML content here
<? } ?>

Sonunda, gerçekten birini seçerek ve onunla yapışmasını meselesidir.

Eğer resmi belgelerde bulabilirsiniz İşte burada: PHP: Alternative syntax for control structures

Her ikisi de aynıdır.

But: If you want to use PHP as your templating language in your view files(the V of MVC) you can use this alternate syntax to distinguish between php code written to implement business-logic (Controller and Model parts of MVC) and gui-logic. Of course it is not mandatory and you can use what ever syntax you like.

ZF bu yaklaşımı kullanır.

I think that it really depends on your personal coding style. If you're used to C++, Javascript, etc., you might feel more comfortable using the {} syntax. If you're used to Visual Basic, you might want to use the if : endif; syntax.

Ben bir kesin bir diğerinden daha okumak daha kolay olduğunu söyleyebiliriz emin değilim - bu kişisel bir tercihtir. Ben genellikle böyle bir şey yapın:

<?php
if ($foo) { ?>
   <p>Foo!</p><?php
} else { ?>
   <p>Bar!</p><?php
}  // if-else ($foo) ?>

Bundan daha okumak daha kolay olsun:

<?php
if ($foo): ?>
   <p>Foo!</p><?php
else: ?>
   <p>Bar!</p><?php
endif; ?>

görüş meselesidir. Bazı 2. yol daha kolay hissediyorum neden görebilirsiniz - ama sen Javascript ve C + + tüm hayatınızı programlama değil sadece. :)

Eğer mümkünse ben ne olursa olsun yeni bir seçenek, ilk seçeneği kullanabilirsiniz. Sözdizimi, standart ve herkes bunu biliyor. Ayrıca geriye dönük uyumludur.

İki sözdizimlerinin arasında teknik bir fark yoktur. Sözdimi yeni değildir; hatta daha erken belki de en az kadar geri PHP 4 gibi desteklenen, ve oldu.

endwhile, örneğin, sadece bir while bloğu kesebilirler, bir kuşak karşılaşırsanız, bu olabilir oysa: açıkça yapısı bitmeyen kontrol eden devletler, çünkü alternatif formu tercih olabilir şey kapanış.

Diğer C-benzeri sözdizimlerinden içinde parantez için özel destek olan bir editör kullanmak eğer olsa, geleneksel sözdizimi tercih edebilirsiniz. Vim, örneğin, eşleşen parantez ve ayracı ayrılmış blokların başlar ve biter gezinmek için birkaç tuş vuruşlarını destekler. Alternatif dizimi, bu düzenleyici özelliği kıracak.

Bunlar işlevsel olarak, gerçekten her ikisi de aynıdır.

Ama endif uzak alma eğer if Ben buna bir yorum vermek için çok daha pratik olduğunu düşünüyorum. Ne olursa olsun bir dil öyle:

if (my_coat_is_blue) {

    // ...
    // let's pretend this is a lot of code in the middle
    foreach (day in week) {
        sing(a_different_song[day]);
    }
    // ...

} //if my_coat_is_blue

Ben kıvırcık parantez kullanırdık ama şimdi bir gün ben, çünkü kod okunabilirliği ve erişilebilirlik bu kısa-el alternatif sözdizimi kullanmayı tercih.

Sonunda sadece aşağıdaki satırı ve sonra başladığı tahmin zorunda arıyor olmak istemiyorum:

<?php } ?>

Teknik olarak ve fonksiyonel olarak da aynıdır.

Tüm okumak için sadece çok kolay olduğundan ben şahsen, yansımaları, girinti ve bol geleneksel sözdizimi tercih bağlıdır.

<?php
    if($something){
        doThis();
    }else{
        echo '<h1>Title</h1>
            <p>This is a paragraph</p>
            <p>and another paragraph</p>';
    }
?>

Ben alt sözdizimi farklı uç maddelerine temizleyici katılıyorum, ama ben gerçekten metin editörü vurgulayarak yardımı olmadan onlarla ilgili zor bir zaman var ve ben sadece bu gibi "özet" kod görmeye alışık değilim:

<?php if( $this->isEnabledViewSwitcher() ): ?>
<p class="view-mode">
    <?php $_modes = $this->getModes(); ?>
    <?php if($_modes && count($_modes)>1): ?>
    <label><?php echo $this->__('View as') ?>:</label>
    <?php foreach ($this->getModes() as $_code=>$_label): ?>
        <?php if($this->isModeActive($_code)): ?>
            <strong title="<?php echo $_label ?>" class="<?php echo strtolower($_code); ?>"><?php echo $_label ?></strong>&nbsp;
        <?php else: ?>
            <a href="<?php echo $this->getModeUrl($_code) ?>" title="<?php echo $_label ?>" class="<?php echo strtolower($_code); ?>"><?php echo $_label ?></a>&nbsp;
        <?php endif; ?>
    <?php endforeach; ?>
    <?php endif; ?>
</p>
<?php endif; ?>

Sana if s bir karışımını kullanarak yaparken özellikle daha net olduğunu düşünüyorum, for s ve görünümü alfabelerde foreach es:

<?php if ( $this->hasIterable ): ?>
    <h2>Iterable</h2>
    <ul>
    <?php foreach ( $this->iterable as $key => $val ):?>
        <?php for ( $i = 0; $i <= $val; $i++ ): ?>
        <li><?php echo $key ?></li>
        <?php endfor; ?>
    <?php endforeach; ?>
    </ul>
<?php elseif ( $this->hasScalar ): ?>
    <h2>Scalar</h2>
    <?php for ( $i = 0; $i <= $this->scalar; $i++ ): ?>
    <p>Foo = Bar</p>
    <?php endfor; ?>
<?php else: ?>
    <h2>Other</h2>
    <?php if ( $this->otherVal === true ): ?>
    <p>Spam</p>
    <?php else: ?>  
    <p>Eggs</p>  
    <?php endif; ?>
<?php endif; ?>

: zıt olarak

<?php if ( $this->hasIterable ){ ?>
    <h2>Iterable</h2>
    <ul>
    <?php foreach ( $this->iterable as $key => $val ){?>
        <?php for ( $i = 0; $i <= $val; $i++ ){ ?>
        <li><?php echo $key ?></li>
        <?php } ?>
    <?php } ?>
    </ul>
<?php } elseif ( $this->hasScalar ){ ?>
    <h2>Scalar</h2>
    <?php for ( $i = 0; $i <= $this->scalar; $i++ ){ ?>
    <p>Foo = Bar</p>
    <?php } ?>
<?php } else { ?>
    <h2>Other</h2>
    <?php if ( $this->otherVal === true ){ ?>
    <p>Spam</p>
    <?php } else { ?>  
    <p>Eggs</p>  
    <?php } ?>
<?php } ?>

Bu alt mesnedinden üst beyanını görmek mümkün olmayabilir uzun kontrol deyimleri için özellikle yararlıdır.

Şahsen ben iki ayrı bölümlerde gibi ama aynı PHP içinde bunu yapma tercih:

<?php 
          if(question1) { $variable_1=somehtml; }
 else{    $variable_1=someotherhtml; 
} 
if(question2) {
 $variable_2=somehtml2;

 }

   else{ 
$variable_2=someotherhtml2; 

}


etc.
$output=<<<HERE
htmlhtmlhtml$variable1htmlhtmlhtml$varianble2htmletcetcetc
HERE;
echo $output;

?>

But mayby it is slower?

Ben "Eğer başka" koşulları için kıvırcık parantez kullanmak için kullanılır. ": Endif (xxx) durumunda;" Ancak, ben buldum kod ağır herhangi editörleri okumak sarılmış ve daha kolay eğer daha anlamsal olduğunu.

Tabii ki, çok editörler tanımak ve kıvırcık parantez seçildiğinde kod parçalarını vurgulamak yeteneğine sahiptirler. Çift (örneğin, NetBeans): Bazıları da "endif if (xxx)" iyi yapmak

, Ama küçük durumu kontrol için (örneğin, kod sadece bir satır) çok farklılıklar yoktur: "endif (xxx) ise" Şahsen, ben tavsiye ederim.

Ben bu bir tercih meselesi olduğunu düşünüyorum. Ben şahsen kullanmak:

if($something){
       $execute_something;
}