| <colbgcolor=#fff,#1f2023><colcolor=#ff2b20> Laravel 라라벨 | |
| | |
| 종류 | 웹 프레임워크 |
| 언어 | PHP |
| 라이선스 | MIT 라이선스 |
| 개발 | Taylor Otwell |
| 최신 버전 | 12.10.1 |
| 유지 보수 버전 | 11.6.1 |
| 관련 사이트 | |
1. 개요
The PHP Framework for Web Artisans.
웹 장인을 위한 PHP 프레임워크
Laravel은 PHP 언어로 작성된 PHP로 웹 개발을 하기 위한 풀 스택 웹 프레임워크이며 오픈 소스이다. 2011년 6월 첫 버전이 출시되었다.웹 장인을 위한 PHP 프레임워크
라라벨은 Ruby의 Ruby on Rails의 설계에 영향을 받아 설계되었다. 그래서 개발 생산성을 높이는 방향으로 만들어졌으며 편리하게 개발 환경을 구축하는 툴과 cli 툴들이 있고 액티브 레코드 패턴을 적용한 ORM이 제공된다.
2023년 기준 스택 오버플로 개발자 설문 조사에서 PHP 프레임워크 중에서 인기가 높다. 심포니 프레임워크의 컴포넌트와 그 밖의 컴포넌트들로 구성되어 있다.
2. 업데이트, 지원 정책
라라벨은 심포니 프레임워크의 컴포넌트로 이루어져 있고 버전 8부터 연간 출시(매년 2월)로 변경되었다.옛날에는 심포니 릴리즈 주기에 따라 6개월에 한 번씩 메이저 버전이 업데이트되었다.
출시된 버전은 총 2년 동안 지원된다. 출시 1년 동안 기능 추가/보안 패치/버그 수정, 이후 6개월간 보안 패치/버그 수정, 나머지 6개월간 보안 패치만 지원된다.
3. 특징
- MVC 패턴의 아키텍처이다.
- 템플릿 엔진 블레이드(Blade) 가 내장되어있다.
- 데이터베이스 다루는 라이브러리 액티브 레코드 패턴의 ORM인 Eloquent(엘로퀀트)와 쿼리 빌더 제공.
- 설정이 간편하고 CSRF, XSS 방지, SQL 인젝션 방지 등 기본적인 보안 사항이 적용되어 있다.
- 의존성 주입, IoC(라라벨에서는 Service Container)
- 미들웨어를 통한 AOP(Aspect Oriented Programming)를 지원하는 등 현대적인 프레임워크들의 기능도 있다.
- CLI 기반의 아티즌(Artisan) 콘솔을 제공. 독립 서버가 아닌 웹 호스팅을 이용하게 되면 대부분 쉘 기능에 제약을 받게 되는데 이때 서버에서 아티즌 사용은 포기해야 한다.
- 파사드를 구현해서(내부는 서비스 로케이션 패턴) 라라벨 내장 클래스를 사용할 때 의존성 주입없이도 쓴다.
- 잡 스케줄러와 웹소켓 지원 패키지도 포함되어 있다.
- 그 밖에 자바스크립트를 명시적으로 쓰지 않고 동적 웹을 만들 수 있는 라이브와이어(컴포넌트 단위에서 래핑되어서 사용자는 신경 쓸 게 줄어든다), 프론트엔드의 자바스크립트를 위한 쉬운 웹팩 설정 패키지인
laravel-mix등 부가적인 패키지 등을 이용할 수 있다. (9 버전대부터는 웹팩보다 빠른 vite로 바뀌었다.)
4. 장점
- 루비온레일즈처럼 관례기반이라 설정이 별로 필요없다.
- 엑티브레코드 패턴의 ORM 이 있어서 초기 개발이 빠르다. 부작용으로는 단점 항목에 서술.
- 메시지 큐를 지원하는등 다양한 외부도구를 결합할 수있도록 확장성이 있다.
- PHP 의 배열 함수를 객체로 감싼 라라벨만의 컬렉션이 따로있다.
- 그 밖에 헬퍼메서드가 많다.
컬렉션은 일관성있고 불변객체라서 편리하다.
5. 단점
- PHP 프레임워크 중에서는 느린 편이라 심포니 프레임워크와 비교된다. [1]
- 파사드패턴을 많이 사용하는데 이는 의존성 주입을 사용하지 않는 습관을 기른다는 비판이 있다.
- 메직매서드를 많이 사용해서 IDE 와 플러그인에 따라 개발 경험이 많이 나뉜다.
- 루비온레일즈와 같은 문제로 지적받는데 엑티브레코드 패턴은 SPR(단일 책임원칙) 을 위반하는 패턴이이라는 점. 모델이 하는일이 많아지고 약간의 성능 희생이 있다. 하지만 초기개발은 빠르게 해준다는 일장일단이 있다.
vscode 기본익스텐션으로는 되는게 없다. 멤버 함수 어시스트가 제대로 안된다거나, 타입추론이 제대로 안되는 등 vscode 에서는 phptools 를 설치하자, 그래서 ide helper 툴과 익스텐션을 사용하면 나아진다.
유료 IDE 인 php 스톰은 2024년까지 별도 플러그인이였다가 2025년부터 통합되었다.
6. 버전 리스트
| <rowcolor=#fff> Laravel 버전 | PHP 버전 |
| 12 | ^8.4 |
| 11 | ^8.2 |
| 10 | ^8.1 |
| 9 | ^8.0.2 |
| 8 | ^7.3 | ^8.0 |
| 7 | ^7.2.5 | ^8.0 |
| 6 | ^7.2.5 | ^8.0 |
| 5.6 | ^7.1.3 |
| 5.5 | >=7.0 |
| 5.3 | >=5.6.4 |
| 5.1 | >=5.5.9 |
| 5.0 | >=5.4 |
| 4.2 | >=5.4 |
| 4.1 | >=5.3 |
7. 라라벨을 사용 중인 사이트들
[1] 라라벨을 만든 개발자 오트웰씨는 라라벨이 느리면 상태유지할수있는 코드로 변경하고 octane 을 쓰라고 한다.