테스트 사이트 - 개발 중인 베타 버전입니다

<?php 질문 드리겠읍니다 채택완료

jazzcoke 3년 전 조회 4,219

안녕하세요 선배님들

</p>

<p><?php</p>

<p>    if(!$userid) {</p>

<p>?>                </p>

<p>                <span><a href="form.php">회원가입</a> </span></p>

<p>                <span> | </span></p>

<p>                <span><a href="login_form.php">로그인</a></span></p>

<p><?php</p>

<p>    } else {</p>

<p>                $logged = $username."(".$userid.")";</p>

<p>?></p>

<p>                <span><?=$logged?> </span></p>

<p>                <span> | </span></p>

<p>                <span><a href="logout.php">로그아웃</a> </span></p>

<p>                <span> | </span></p>

<p>                <span><a href="modify_form.php">정보수정</a></span></p>

<p><?php</p>

<p>    }</p>

<p>?></p>

<p>

 

제 질문은 두가지입니다.

1. <?php  ?>구문을 왜 저렇게 나눈건지 궁금합니다.<?php 열고 닫는 부분이 왜 if 함수 중괄호 다음에 오나요?

2.if문의 중괄호의 위치도 왜 저런지 궁금합니다. 

댓글을 작성하려면 로그인이 필요합니다.

답변 6개

채택된 답변
+20 포인트
3년 전

html 표현에 대한 유지보수를 유연하게 하기 위해서 입니다.

개발자가 직접 html 을 만지지 않고 디자이너나 퍼블리셔에게 전달받아 작업한다고 하면

</p>

<p><?php

    if(!$userid) {

        echo '<span><a href="form.php">회원가입</a> </span>';

        echo '<span> | </span>';

        echo '<span><a href="login_form.php">로그인</a></span>';

    } else {

        $logged = $username."(".$userid.")";

        echo '<span>' . $logged . ' </span>';

        echo '<span> | </span>';

        echo '<span><a href="logout.php">로그아웃</a> </span>';

        echo '<span> | </span>';

        echo '<span><a href="modify_form.php">정보수정</a></span>';

    }

?></p>

<p>

 

또는

 

</p>

<p><?php

    $outs = '';</p>

<p>    if(!$userid) {

        $outs .= '<span><a href="form.php">회원가입</a> </span>';

        $outs .= '<span> | </span>';

        $outs .= '<span><a href="login_form.php">로그인</a></span>';

    } else {

        $logged = $username."(".$userid.")";

        $outs .= '<span>' . $logged . ' </span>';

        $outs .= '<span> | </span>';

        $outs .= '<span><a href="logout.php">로그아웃</a> </span>';

        $outs .= '<span> | </span>';

        $outs .= '<span><a href="modify_form.php">정보수정</a></span>';

    }</p>

<p>    echo $outs;

?></p>

<p>

 

이런 방식일 경우 프론트단 수정이 일어나게 되면 손이 그만큼 많이 갑니다.

 

추가로 히어닥이라는 문법도 있으니 필요할때 사용하면 유용합니다.

https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

</p>

<p><?php

    $outs = <<<HEREDOC

    <span><a href="form.php">회원가입</a> </span>

    <span> | </span>

    <span><a href="login_form.php">로그인</a></span>

    HEREDOC;</p>

<p>    echo $outs;

?></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

j
jazzcoke
3년 전
답변감사합니다ㅠㅠ잘배웠읍니다!!

댓글을 작성하려면 로그인이 필요합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

j
jazzcoke
3년 전
답변 감사합니다!!!댓글이 안써져서 늦었네요

댓글을 작성하려면 로그인이 필요합니다.

s
sinbi Expert
3년 전

설명은 다른 분들이 잘 해주셨고,

코드 가독성 위해 이런 방식 선호합니다.

 

</p>

<p><?php if(!$userid) {?>                

    <span><a href="form.php">회원가입</a> </span>

    <span> | </span>

    <span><a href="login_form.php">로그인</a></span>

<?php } else { ?>

    <span><?php echo $username."(".$userid.")";?> </span>

    <span> | </span>

    <span><a href="logout.php">로그아웃</a> </span>

    <span> | </span>

    <span><a href="modify_form.php">정보수정</a></span>

<?php } ?>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

j
jazzcoke
3년 전
답변 감사합니다!!!댓글이 안써져서 늦었네요ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

코드오타쿠

php문과 HTML 구문을 구분하기 위해서입니다.
JSP랑 굉장히 유사한 구조에요.

다만 코드의 가독성이 떨어지기는 합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

j
jazzcoke
3년 전
답변 감사합니다!!!댓글이 안써져서 늦었네요ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

플래토
3년 전

웹개발언어의 구조적인 차이를 이해하셔야 합니다.

 

서버사이드 스크립트와 (php / jsp / python 등등)

클라이언트사이드 스크립트(html / css / javascript)

의 처리시점이 다릅니다.

</p>

<p><?php </p>

<p>// php로직</p>

<p>if (true) {</p>

<p>?></p>

<p><html>.............</p>

<p><table></p>

<p><?php</p>

<p>  } else {</p>

<p>?></p>

<p><html></p>

<p><?php </p>

<p>  } </p>

<p>?></p>

<p> </p>

<p>// 인경우에</p>

<p> </p>

<p><?php 로 시작해서 ?></p>

<p>로 종료되는 지점은 PHP코드 서버에서 실행되는 내용 이고</p>

<p>?> 밖의 내용은 웹브라우저에서 실행되는 사항입니다.

 

위의 내용의 차이로 인해서 나오는 구조적인 모양이고

실제 처리는 다르게 작동하니..

<?php

 

?>

를 다 합쳐서 로직을 판단하시면됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

j
jazzcoke
3년 전
답변 감사합니다!!!댓글이 안써져서 늦었네요ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

단순하게? php 문 안에 html 태그를 넣지 못하니 열고 닫고 구분지어서 하는거 아닐가요?

php문 안에 html도 같이 넣어 하려면 코딩방식도 바꾸고 해야 해서 그런거 아닌가요

 

 

번외로 그누 게시판 어디서 본거같은데  순수 php 만으로 된 소스는 

?>  마지막 닫히는 부분은 생략 가능한걸로 알고 있습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

j
jazzcoke
3년 전
답변감사합니다!!!!댓글이 안써져서 늦었네요ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인