<?php 질문 드리겠읍니다

<?php 질문 드리겠읍니다

QA

<?php 질문 드리겠읍니다

본문

안녕하세요 선배님들


<?php
    if(!$userid) {
?>                
                <span><a href="form.php">회원가입</a> </span>
                <span> | </span>
                <span><a href="login_form.php">로그인</a></span>
<?php
    } else {
                $logged = $username."(".$userid.")";
?>
                <span><?=$logged?> </span>
                <span> | </span>
                <span><a href="logout.php">로그아웃</a> </span>
                <span> | </span>
                <span><a href="modify_form.php">정보수정</a></span>
<?php
    }
?>

 

제 질문은 두가지입니다.

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

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

이 질문에 댓글 쓰기 :

답변 6

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

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


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

 

또는

 


<?php
    $outs = '';
    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>';
    }
    echo $outs;
?>

 

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

 

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

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


<?php
    $outs = <<<HEREDOC
    <span><a href="form.php">회원가입</a> </span>
    <span> | </span>
    <span><a href="login_form.php">로그인</a></span>
    HEREDOC;
    echo $outs;
?>

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

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

 

 

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

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

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

 

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

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

의 처리시점이 다릅니다.


<?php 
// php로직
if (true) {
?>
<html>.............
<table>
<?php
  } else {
?>
<html>
<?php 
  } 
?>
 
// 인경우에
 
<?php 로 시작해서 ?>
로 종료되는 지점은 PHP코드 서버에서 실행되는 내용 이고
?> 밖의 내용은 웹브라우저에서 실행되는 사항입니다.

 

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

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

<?php

 

?>

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

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

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

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

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

 


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

https://www.codingfactory.net/10115

답변을 작성하시기 전에 로그인 해주세요.
전체 10,639
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT