app/helpers.php 파일 생성
- 일반적으로 이 이름을 많이 사용
- 사용자가 만들어 사용하는 파일
- DB사용도 가능하지만 빠르게 처리가 가능한 경우에만 사용 (DB연결은 컨트롤러가 더 적합)
- 블레이드, 컨트롤러에서 특별히 임포트 하지 않아도 바로 사용가능 ( composer.json에 자동 로딩 등록 후)
Laravel에서 helpers.php는 Laravel 애플리케이션이 부팅되기 전이 아니라 부팅 중에 로드되기 때문에,
DB, Config, Carbon, Auth 등 Laravel의 모든 Facade나 클래스를 사용할 수 있습니다.
헬퍼는 "로직이 단순할 때만" DB를 써야 함
- 헬퍼는 보통 빠르게 결과 반환해야 하기 때문에, 복잡한 DB 로직이 들어가면 성능 문제나 예외 처리 이슈가 생길 수 있습니다.
1. app/helpers.php 파일 생성
<?php
use Carbon\Carbon;
if (!function_exists('diff_days_from_today')) {
function diff_days_from_today($date)
{
if (!$date) return null;
try {
$created = Carbon::parse($date)->startOfDay();
$today = Carbon::now()->startOfDay();
return $created->diffInDays($today) + 1;
} catch (\Exception $e) {
return null;
}
}
}
함수 중복 오류 방지를 위해
if (!function_exists('diff_days_from_today')) { ... }
2. composer.json에 자동 로딩 등록
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
},
"files": [
"app/helpers.php" <------- 이맇게 추가
]
},
3. composer dump-autoload 실행 (필수)
composer dump-autoload
4. 블레이드에서 사용
{{ diff_days_from_today($row->cs_created_at) }}일차
5. 컨트롤러에서 사용
use App\Http\Controllers\Controller;
class CounselController extends Controller
{
public function index()
{
$createdAt = '2024-08-30';
$days = diff_days_from_today($createdAt); // ← 헬퍼 함수 사용
return view('counsel.index', compact('days'));
}
}
{{ $days }}일차
✅ 정리
항목 | 설명 |
컨트롤러에서 사용 | 그냥 diff_days_from_today($date) 호출하면 됨 |
use 문 필요? | ❌ 불필요 (전역 함수이기 때문에 바로 사용 가능) |
조건 | composer.json에 등록되어 있고, dump-autoload 완료 |
✅ 전역(Global)으로 모든 곳에서 호출 가능
사용 위치 | 사용 가능 여부 |
Blade 템플릿 (.blade.php) | ✅ 가능 |
Controller | ✅ 가능 |
Middleware | ✅ 가능 |
Command | ✅ 가능 |
Seeder / Factory | ✅ 가능 |
어디든 PHP 코드 | ✅ 가능 |
'[ Web 관련 ] > Laravel 12.5.0' 카테고리의 다른 글
라라벨 모든 view에 데이터 공통으로 전달하기 (1) | 2025.08.29 |
---|---|
라라벨 클래스가 잘 로드되는지 체크 (0) | 2025.08.29 |
.env 설정 항목들 (3) | 2025.08.14 |
라라벨 기본 HTTP 상태 메시지 (0) | 2025.06.27 |
라라벨 POST 데이터중 필요한 항목만 선별해서 DB에 저장하는 샘플 (0) | 2024.06.25 |