라라벨이란?
PHP를 사용해서 웹 어플리케이션을 개발할 때 사용하는 프레임워크이다.
그렇다면 왜 라라벨을 사용하는걸까?
PHP는 언어 특성상 다른 언어에 비하면 높은 자유도를 갖는데, 이는 코드가 난잡해지고 유지보수가 어렵도록 만든다는 단점이 있다.
그로인한 PHP 레거시 프로젝트에 대한 나쁜 인식이 있는데, 그러한 문제들 중 일부를 라라벨이 해결해줄 수 있다.
- 패키지 매니저인 컴포저(Composer)의 적극적인 활용
- 오픈소스 패키지를 포함할 수 있음
- PSR-4 Autoloader Standard를 따르기에, 파일을 수동으로 포함할 필요가 없음
- 아키텍처 중 하나인 MVC를 따르기에 구조적인 어플리케이션 구성 가능
- 사용하는 기능과 구성 요소들이 위치할 폴더 구조가 어느정도 정해져 있으므로, 유지보수가 용이함
- 디렉터리 구조나 아키텍처에 대한 고민이 덜해지기에 비즈니스 로직에 집중할 수 있음
- 비즈니스 로직이 특정 객체를 직접 제어하지 않고 외부에서 주입해서 처리할 수 있도록 함
- 의존성 주입(DI), 의존성 제어 역전(IoC)을 통해 로직이 가지는 결합도를 낮추고, 코드의 재사용성을 높임
- 내장함수로 처리하던 array_*, str_* 계열 함수의 일관적이지 않은 사용을 개선하고, 보조함수를 재공함
- 함수형 프로그래밍으로 컬렉션을 처리할 수 있도록 개선 가능
- 모델과 엘로퀀트 ORM을 사용해서 데이터베이스를 간결하게 조작 가능함
- 직접 PDO 레이어를 통해 데이터베이스에 접근할 필요가 없으며, 당연히 mysqli_* 같은 함수도 쓸 필요 없음
- 로직 내부에서 직접 쿼리를 하드코딩해서 데이터를 바인딩하지 않아도 되어 코드도 단순해지고, 보안성도 좋아짐
- 뷰는 블레이드라는 템플릿을 사용하고 상속, 포함, 컴포넌트를 사용하여 쉽게 레이아웃 구성 가능함
- @로 시작하는 지시어를 사용함
- 라우팅 및 컨트롤러로 인해 엔드포인트에 .php가 붙을 필요가 없어짐
- 프론트 컨트롤러 패턴을 사용해서, index.php를 제외하고는 Document Root 외부에 위치하기에 레거시보다 보안성이 좋음
- 미들웨어라는 별도의 레이어로 비즈니스 로직과 직접적인 관련이 없는 부분을 분리할 수 있음
- 예를 들면, 세션 및 값 필터링, CSRF_TOKEN 검증 등(꼭 필요하긴 하지만 비즈니스 로직은 아닌 부분들)
- 마이그레이션을 활용하여 쿼리 대신 PHP 코드로 테이블을 생성할 수 있음
- 시딩을 통해 더미데이터를 넣을 수 있어 편리함
- 요청 및 응답을 래핑해서 일관되게 요청 파라미터를 얻을 수 있고, 값의 유효성 검사를 손쉽게 처리할 수 있음
- $_REQUEST, $_GET, $_POST 같은 글로벌 변수를 사용하지 않아도 됨
- 응답의 경우 리다이렉트, 파일 바이너리, JSON에 대한 응답을 줄 수 있음
결론
라라벨은 다소 무겁게 느껴질 수 있으나, 사용자가 활용할 수 있을만한 많은 기능을 보유하고 있다.
이 점이 PHP 레거시 프로젝트들의 단점을 해소해줄 수 있으므로 사용하면 좋다.