본문으로 바로가기

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 코드 ✅ 가능