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