[php] if () {}와 if ()의 차이점 : endif;

차이점이 있습니까?

if ($value) {

}

…과…

if ($value):

endif;

?



답변

그것들은 동일하지만 두 번째 코드는 코드에 MVC가 있고 코드에 많은 에코를 원하지 않는 경우 좋습니다. 예를 들어 내 .phtml파일 (Zend Framework)에서 다음과 같이 작성합니다.

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


답변

나는 개인적으로 대체 구문을 정말 싫어합니다. 중괄호에 대한 한 가지 좋은 점은 대부분의 IDE, vim 등이 모두 대괄호 강조 표시라는 것입니다. 내 텍스트 편집기에서 괄호를 두 번 클릭하면 청크 전체가 강조 표시되어 어디서 끝나고 쉽게 시작되는지 확인할 수 있습니다.

endif, endforeach 등을 강조 표시 할 수있는 단일 편집기를 모르겠습니다.


답변

나는 이것이 모든 것을 말한다고 생각한다.

이 대체 구문은 혼합 된 상황에서 가독성을 향상시키는 데 탁월합니다 (PHP 및 HTML 모두에 대해!).

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

HTML과 PHP를 혼합 할 때 대체 sytnax를 훨씬 쉽게 읽을 수 있습니다. 일반적인 PHP 문서에서는 전통적인 구문을 사용해야합니다.


답변

회사에서 HTML을 처리하는 기본 방법은 다음과 같습니다.

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

결국, 그것은 실제로 하나를 선택하고 고수하는 문제입니다.


답변

그것들은 실제로 기능적으로 동일합니다.

그러나 endif통신원으로부터 너무 멀어지면 if참조 의견을 제시하는 것이 훨씬 좋습니다. 열린 위치를 쉽게 찾을 수 있습니다. 어떤 언어인지에 관계없이 :

if (my_horn_is_red or her_umbrella_is_yellow)
{

    // ...

    // let's pretend this is a lot of code in the middle

    foreach (day in week) {
        sing(a_different_song[day]);
    }

    // ...

} //if my_horn_is_red

그것은 실제로 모든 유사한 “닫는 것”에 적용됩니다! 😉

또한 일반적으로 편집자는 중괄호를 더 잘 다루므로 열린 위치를 가리킬 수 있습니다. 그렇다고해서 설명적인 주석이 덜 유효한 것은 아닙니다.


답변

공식 문서에서 찾을 수 있습니다. PHP : 제어 구조의 대체 구문


답변

뷰 스크립트에서 ifs, fors 및 foreaches 를 함께 사용할 때 특히 명확하다고 생각합니다 .

<?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; ?>

반대로 :

<?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 } ?>

이것은 바닥 괄호에서 상단 선언을 볼 수없는 긴 제어문에 특히 유용합니다.