헬퍼 함수란
Laravel은 다수의 글로벌 PHP 함수(헬퍼)를 제공하고 있습니다. 프레임워크 자체가 내부에서 사용하고 있는 것이 대부분이지만, 애플리케이션 내에서도 자유롭게 이용할 수 있습니다. 헬퍼는 크게 다음의 카테고리로 나누어져 있습니다.- 배열·객체 —
Arr::클래스와data_get()등의 함수 - 숫자 —
Number::클래스 - 경로 —
app_path(),storage_path()등의 경로 취득 함수 - URL —
route(),url(),asset()등의 URL 생성 함수 - 기타 —
config(),collect(),auth()등 자주 사용하는 유틸리티
헬퍼 함수는
use 선언이 불필요하며 어디에서도 호출할 수 있습니다. Arr나 Number 클래스를 사용하는 경우는 use Illuminate\Support\Arr; 등의 임포트가 필요합니다.배열 헬퍼(Arr 클래스)
Arr::get() — 도트 표기법으로 중첩된 값을 취득
다차원 배열에서 도트 표기법(foo.bar.baz)으로 중첩된 값을 안전하게 취득합니다. 키가 존재하지 않는 경우 기본값을 반환합니다.
Arr::set() — 중첩된 배열에 값을 설정
Arr::has() — 키의 존재를 확인
Arr::only() / Arr::except() — 키를 좁히기·제외
요청 데이터나 설정 배열에서 필요한 키만 꺼내거나, 불필요한 키를 제외할 때 편리합니다.
Arr::pluck() — 중첩된 배열에서 특정 키를 뽑아냄
Arr::first() / Arr::last() — 조건을 만족하는 최초·마지막 요소
Arr::flatten() — 다차원 배열을 1차원으로 평탄화
Arr::wrap() — 값을 확실하게 배열로
값이 배열이 아닌 경우 배열로 랩합니다. null은 빈 배열이 됩니다. 함수의 인수를 유연하게 받아들일 때 도움이 됩니다.
Arr::sort() — 값으로 정렬
Arr::dot() / Arr::undot() — 도트 표기법으로 변환·복원
Arr::join() — 배열을 문자열로 결합
data_get() — 중첩된 데이터에의 접근
Arr::get()의 범용 버전입니다. 배열뿐 아니라 객체나 Eloquent 모델, 컬렉션에도 대응하고 있습니다.
숫자 헬퍼(Number 클래스)
Number::format() — 숫자를 읽기 쉬운 형식으로
Number::currency() — 통화 포맷
Number::fileSize() — 파일 사이즈를 사람이 읽을 수 있는 형식으로
Number::abbreviate() — 큰 수를 생략 표기로
Number::percentage() — 퍼센트 표시
경로 헬퍼
애플리케이션 내의 디렉터리 경로를 취득합니다. 환경이나 배포 대상이 바뀌어도 올바른 경로를 반환합니다.URL 헬퍼
route() — 이름이 있는 라우트의 URL 생성
url() — 임의 경로의 절대 URL 생성
asset() — 정적 애셋의 URL 생성
to_route() — 이름이 있는 라우트에의 리다이렉트
기타 자주 사용하는 헬퍼
config() — 설정값의 취득·설정
collect() — 컬렉션의 작성
auth() — 인증 사용자의 취득
blank() / filled() — 빈 상태 체크
blank()는 null, 빈 문자열, 공백만, 빈 컬렉션·배열을 true로 간주합니다. filled()는 그 반대입니다.
abort() / abort_if() / abort_unless() — HTTP 예외
dd() / dump() — 디버그
dispatch() — 잡을 큐에 투입
encrypt() / decrypt() — 암호화
env() — 환경 변수의 취득
collect() 와의 사용 구분
Arr:: 클래스는 일반 PHP 배열을 대상으로 한 조작, collect()는 컬렉션 객체를 반환하는 조작입니다.
Eloquent의 결과는 자동으로 컬렉션으로서 반환되므로,
collect()로 감쌀 필요는 없습니다. 단순한 배열 조작으로 충분한 경우는 Arr::를 사용하면 단순하게 쓸 수 있습니다.정리
자주 사용하는 헬퍼 목록
자주 사용하는 헬퍼 목록
Arr 클래스 vs collect()
Arr 클래스 vs collect()
Arr:: 클래스를 사용할 장면:- 단순한 배열 조작(중첩된 키에의 접근, 키의 좁히기 등)
- 컬렉션 객체의 오버헤드가 불필요한 경우
- 결과를 배열인 채로 다루고 싶은 경우
collect()를 사용할 장면:- 여러 조작을 메서드 체인으로 표현하고 싶은 경우
- Eloquent의 결과를 추가로 가공하는 경우(이미 컬렉션)
map,filter,groupBy등 컬렉션 고유의 메서드를 사용하고 싶은 경우