PHP / HTML 혼합 코드를 올바르게 들여 쓰는 방법은 무엇입니까?
PHP와 HTML을 혼합 할 때 사용할 적절한 들여 쓰기 스타일은 무엇입니까? 출력 된 HTML이 올바른 들여 쓰기를 갖도록 들여 쓰기를합니까, 아니면 PHP / HTML 믹스가 적절하게 형식화되어 보이도록 (따라서 읽기가 더 쉽습니다)?
예를 들어 foreach
테이블 행을 출력 하는 루프 가 있다고 가정 합니다. 아래 중 어느 것이 맞습니까?
PHP / HTML 혼합이 올바른 것 같습니다.
<table>
<?php foreach ($rows as $row): ?>
<tr>
<?php if ($row->foo()): ?>
<?php echo $row ?>
<?php else: ?>
Something else
<?php endif ?>
</tr>
<?php endforeach ?>
</table>
출력 된 HTML이 올바로 보입니다.
<table>
<?php foreach ($rows as $row): ?>
<tr>
<?php if ($row->foo()): ?>
<?php echo $row ?>
<?php else: ?>
Something else
<?php endif ?>
</tr>
<?php endforeach ?>
</table>
이 상황에 직면했을 때 (아주 자주) 사용할 표준 스타일이 없다는 것을 알게되었습니다. "정답"이 없을 수도 있다는 것을 알고 있지만 다른 개발자의 의견을 듣고 싶습니다.
PHP와 HTML은 각각 들여 쓰기를하여 소스 형식과 출력 형식에 관계없이 소스 형식에 대해 정확해야합니다.
<table>
<?php foreach ($rows as $row): ?>
<tr>
<?php if ($row->foo()): ?>
<?php echo $row ?>
<?php else: ?>
Something else
<?php endif ?>
</tr>
<?php endforeach ?>
</table>
나는 종종이 질문을 숙고했지만, HTML 출력이 어떻게 생겼는지 누가 신경 쓰는지 깨달았습니다. 사용자는 어쨌든 HTML을 보지 않아야합니다. 그것은위한거야 당신이 읽고, 그리고 아마도 몇 가지 다른 개발자. 소스 코드를 가능한 한 깨끗하게 유지하고 출력이 어떻게 보이는지 잊어 버리십시오.
출력을 디버그해야하는 경우 Chrome 개발자 도구, Firebug 또는 F12 도구를 사용하세요.
나는 일반적으로 줄의 시작 부분에 여는 php 태그를 넣지 만 html 형식과 일치하도록 태그 안에있는 모든 것을 들여 씁니다. 그러나 짧은 개방형 태그를 사용하기 때문에 간단한 echo 문에는이 작업을 수행하지 않습니다. 모든 선언을 찾기 위해 파일을 탐색 할 때 더 간단하다고 생각합니다.
<table>
<? foreach ($foo as $bar): ?>
<tr>
<? foreach ($bar as $baz): ?>
<td><?=$baz?></td>
<? endforeach ?>
</tr>
<? endforeach ?>
</table>
- 질문에 대한 직접적인 대답 : HTML 출력을 자주 읽어야하는 경우 들여 쓰기가 잘 된 HTML을 출력하는 것이 좋습니다. 그러나 더 일반적인 경우는 PHP 소스 코드를 읽어야한다는 것이므로 소스를 쉽게 읽을 수있는 것이 더 중요합니다.
- 언급 한 두 가지 옵션의 대안 : chaos ' 또는 tj111의 대답을 참조하십시오 .
- 내 생각에는 더 나은 방법 : HTML과 PHP를 혼합하지 말고 대신 템플릿 엔진을 사용하십시오.
가독성을 높이기 위해 항상 약간의 공백을 사용할 수 있습니다. 혼돈의 들여 쓰기를 기반으로 :
<table>
<?php foreach ($rows as $row): ?>
<tr>
<?php if ($row->foo()): ?>
<?php echo $row ?>
<?php else: ?>
Something else
<?php endif ?>
</tr>
<?php endforeach ?>
</table
당신이있는 경우이의 유일한 단점은 많은 혼합 코드를 더 스크롤하게하는만큼이 두 번 문서를 만들 수 있습니다. 이처럼 혼합 된 코드가 많더라도 템플릿 엔진을 고려할 수 있습니다.
프로덕션 환경에서 마크 업 들여 쓰기에 대해 신경 쓰지 마십시오. Tidy 또는 다른 HTML 정화기를 사용해서는 안됩니다. 드물 긴 하지만 HTML 입력을 허용하는 경우 ( 대신 Markdown 사용을 고려)와 같은 유효한 사용 사례가 있습니다 .
대부분의 경우 HTML 미화 필터는 코드의 근본적인 문제를 숨기기 위해 남용됩니다. 하지마. 마크 업을 수동으로 수정하십시오.
개발 환경에서만 코드를 들여 쓰기해야하는 경우 위 중 하나를 사용할 수 있습니다. 그러나 이러한 라이브러리는 마크 업을 수정하려고 시도합니다 (주된 목적이며 들여 쓰기는 부산물 임). 정규식 기반 들여 쓰기 도구 Dindent를 작성 했습니다 .
Dindent는 다음과 같이 마크 업을 변환합니다.
<!DOCTYPE html>
<html>
<head></head>
<body>
<script>
console.log('te> <st');
function () {
test; <!-- <a> -->
}
</script>
<div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<div><table border="1" style="background-color: red;"><tr><td>A cell test!</td>
<td colspan="2" rowspan="2"><table border="1" style="background-color: green;"><tr> <td>Cell</td><td colspan="2" rowspan="2"></td></tr><tr>
<td><input><input><input></td></tr><tr><td>Cell</td><td>Cell</td><td>Ce
ll</td></tr></table></td></tr><tr><td>Test <span>Ce ll</span></td></tr><tr><td>Cell</td><td>Cell</td><td>Cell</td></tr></table></div></div>
</body>
</html>
이에:
<!DOCTYPE html>
<html>
<head></head>
<body>
<script>
console.log('te> <st');
function () {
test; <!-- <a> -->
}
</script>
<div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<div>
<table border="1" style="background-color: red;">
<tr>
<td>A cell test!</td>
<td colspan="2" rowspan="2">
<table border="1" style="background-color: green;">
<tr>
<td>Cell</td>
<td colspan="2" rowspan="2"></td>
</tr>
<tr>
<td>
<input>
<input>
<input>
</td>
</tr>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Ce ll</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Test <span>Ce ll</span></td>
</tr>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</table>
</div>
</div>
</body>
</html>
Dindent will not attempt to sanitise or otherwise interfere with your code beyond adding indentation. This is to make your development/debugging easier. Not for production.
참고URL : https://stackoverflow.com/questions/1155799/how-to-properly-indent-php-html-mixed-code
'Program Tip' 카테고리의 다른 글
Java에서 null이 아닌 빈 문자열이 아닌지 확인 (0) | 2020.11.28 |
---|---|
WebClient + HTTPS 문제 (0) | 2020.11.28 |
C #을 사용하여 전역 단축키 설정 (0) | 2020.11.28 |
내 cabal 패키지는 FUBAR입니다. (0) | 2020.11.28 |
파이썬에 상응하는 auto.arima () (0) | 2020.11.28 |