PHP에 대하여

그전에도 PHP는 썼었다.

홈페이지를 처음 만들던 때가 생각난다. 무려 대학교 4학년 때였다. 처음으로 어떤 연구실에 인턴으로 들어가서 고정 아이피가 달린 컴퓨터를 받았다. 도메인도 없이 IP주소로 접근하여 무언가를 했었다. 오래되어 무얼 했는지 잘 기억은 안 나지만 아마 그때도 일기를 적었던 것 같다. 지금처럼.

웹페이지를 만드는 가장 손쉬운 방법은 아파치를 깔고 HTML 파일을 만드는 것이었다. 페이지를 동적으로 생성하려면 PHP 모듈을 추가하고 PHP를 쓰는 것이었고. 그 당시에 그랬다. 그런데 여전히 그렇다. Nginx나 Node.js 같은 새 툴들이 속속 등장하고 있지만 여전히 초보자에게 가장 쉬운 방법은 파일 하나를 만들어 다음 한 줄을 적는 것일 것이다.

<?php echo "Hello world"; ?>

웹서버에서 사용하는 언어와 직접적인 관계는 없지만, 재미로 보자.

Most Popular Programming Languages 1965 - 2019
youtu.be/Og847HVwRSI

그렇다고 PHP가 다른 언어에 비해 좋다고 생각하는 건 아니다. 당연히. 부족한 것도 많고 불만도 많다. 그럼에도 떠나기는 쉽지 않다. '첫 단추를 잘못 끼워서 망한 걸까?'

PHP를 벗어나려면?

무엇일 필요할까 생각해 보자. 지금까지 많이많이 생각했지만 다시 생각해 보자. (지식 부족으로 Apache를 떠나야 할 이유는 아는 게 없으니 걔는 일단 그냥 두자.)

템플릿 엔진

템플릿 엔진이 있어야 한다. 결국은 HTML코드를 만들어야 하는 것인데 템플릿이 없는 건 너무 고통스럽다. PHP를 쓰며 내가 가장 감사히 여긴 부분은 이런 거다. 이 얼마나 직관적인가!

<ul>
  <?php foreach ($list as $elem): ?>
  <li><?= $elem ?></li>
  <?php endforeach; ?>
<ul>

'하지만! 템플릿 엔진이라면 누구나 있다?!'

원래 생각했던 건 "OCaml에는 편안한 템플릿 엔진이 없다. 이거 봐라." 라고 하는 것이었는데 구글링 하던 도중 엄청난 걸 발견해 버렸다.

Alexander Markov가 만든 ECaml. (Jane Street의 ECaml이 아니다.)
http://komar.in/en/code/ecaml

% List.iter (fun s ->
<li><%= s %></li>
% ) ["hello"; "from"; "list"]

엄청 간단한 아이디어다. %이 안 붙은 줄은 프린트 함수 호출로 변환된다. 무려 type-safe하다!

% let f buf ~title ~content = (
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
    <title><%= title %></title>
  </head>
  <body>
    <p><%= content %></p>
  </body>
</html>
% )

유지보수는 되지 않고 있으나 소스코드가 공개되어 있으니 언젠가 필요하면 고쳐 쓸 수 있을 것 같다. 와!

웹관련 라이브러리 지원

아직 좋아하기는 이르다. 웹서버는 여러 자잘한 것들이 필요하다.

사실 OCaml에도 대부분 있다. 찾아서 설치하고, 메뉴얼 읽고, 돌리고를 하는 것이 정말 끈닷넷의 미래(나의 행복한 취미 코딩)를 위해 적절한 것이냐는 게 문제다. 이미 끈닷넷은 예전에 Ocsigen으로도 돌려 보고, CodeIgniter도 써 보고, Laravel도 써 보고, Ur/Web도 썼었다. 하지만 결국 평범한 PHP로 돌아왔다. (끈닷넷 인생에 절반은 포팅) 환경이 덜 성숙했거나, 쓰기 불편한 것이 그 이유였다.

PHP를 계속 잘 쓰려면!

글쎄다. 아직 거기까지는 생각 못했다. 이러지도 못하고 저러지도 못하는 바보같은 나.


PHP 팁: 최근에 안 건데 expression을 문자열 안에 끼워 넣을 수 있다.

echo "Hello {$name}!";

짜잔~

2020-03-31 씀.