프레임워크 전성 시대다. 서버 사이드 웹 개발 언어마다 프레임워크가 넘쳐난다. 프레임워크를 통해 통일성을 만들어 내고 보다 빠르고 편리하게 웹 개발을 하려는 시도가 한창이다. 하지만 과유불급이란 말처럼 이런 시도가 지나쳐 오히려 프레임워크를 배우는데 학습 비용이 너무 들어간다던지, 기능이 많아지면서 프레임워크 자체가 무거워져 실행 속도가 느려진다던지 하는 문제가 나타나고 있다.

이런 상황에서 다시 작고 가벼움을 강조한 마이크로 프레임워크들이 등장했다. 루비(Ruby)의 Sintra, 그리고 그것에 영향을 받은 파이썬(Python)의 Flask가 대표적인 마이크로 프레임워크다. 이런 흐름을 따라 PHP에도 마이크로 프레임워크가 등장하기 시작했는데, 여기서는 그 중 하나인 슬림(Slim)을 소개하고자 한다.

슬림은 “PHP: The Right Way“라는 글로 유명한 조쉬 록하트(Josh Lockhart)가 개발한 마이크로 프레임워크다. 조쉬 록하트가 라라벨(Laravel)을 보고 슬림 개발을 중단 할까 고민했지만 다행이도 계속 소소하게 개발이 이뤄지고 있다. 여담이지만 그만큼 라라벨은 대단한 프레임워크다. 루비에 루비 온 레일즈(Ruby on Rails), 파이썬에 장고(Django)가 있다면 PHP에는 라라벨이 있다고 할 수 있다.

슬림은 마이크로 프레임워크답게 작지만 깔끔하게 웹 개발에 편리한 기능들을 포함하고 있기 때문에 적당한 규모의 웹 개발에 안성맞춤이다. 컴포저(Composer)를 이용하면 손쉽게 설치 할 수 있다. (설치법)

1
2
3
4
5
6
7
8
9
<?php
require 'vendor/autoload.php';

$app = new \Slim\Slim();
$app->get('/', function () {
    echo "Hello World.";
});
$app->run();
?>

슬림은 라우트(Route)를 통해 접근을 처리하게 된다. 우선 컴포저를 통해 Slim 패키지를 로드한다. (Line 2) 그 뒤 Slim 인스턴스를 생성하고 (Line 4), 생성한 인스턴스에 GET 메소드(Method)에 루트 URI(/)에 대응하는 익명 함수(Anonymous function)를 매개변수로 전달한다. (Line 5 ~ 7) 마지막으로 Slim 인스턴스의 run() 메소드를 호출하는 것으로 슬림 동작을 마친다. (Line 8)

슬림의 라우트는 GET, POST, PUT, DELETE 메소드에 대응 할 수 있으므로 RESTful API를 개발 할 때도 잘 어울린다. 이 외에도 작지만 정갈히 뽑아낸 유용한 웹 개발 관련 기능들이 다수 포함되어 있다.

본격적인 웹 개발을 위해서는 라라벨과 같은 풀스택 프레임워크를 사용하는 것이 좋겠지만, 간단히 개인적인 웹을 개발 할 때는 슬림만으로도 충분히 효율적으로 개발 할 수 있다. 개인적으로는 슬림을 쓸 때 PHP ActiveRecord를 곁들여 쓰고 있다.