상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
C#의 LINQ 쿼리 구문과 메서드 구문의 차이는?
C#의 String.Join() 메서드는 어떤 용도로 사용하나요?
C#에서 Dynamic 타입은 무엇인가요?
CSS에서 배경 이미지를 설정하는 방법은 무엇인가요?
CSS에서 아이콘 폰트를 사용하는 방법은 무엇인가요?
HTML에서 `<time>` 태그는 어떤 정보를 담을 수 있나요?
HTML에서 `<meta name="description">`의 중요성은 무엇인가요?
HTML에서 `<input type="email">`의 유효성 검사 방법은 무엇인가요?
임플란트 시술 후 치아의 색상을 유지하는 방법은?
장중첩증의 진단에서 임상 증상과 검사 결과의 상관관계는 무엇인가요?
사기꾼이 사용하는 가짜 기술 지원의 특징은 무엇인가요?
몽고DB의 스케일링(scaling) 전략은 무엇인가요?
Previous
Next
수정하기 - 라라벨에서 이벤트와 리스너(Event & Listener)를 사용하는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
라라벨에서 이벤트(Event)와 리스너(Listener)는 애플리케이션의 다양한 부분에서 발생하는 특정 행동이나 상태 변화를 처리하는 데 매우 유용한 기능입니다. 이 기능을 사용하면 코드의 결합도를 낮추고, 유지보수를 쉽게 하며, 특정 작업을 비동기적으로 처리할 수 있습니다. 아래에서는 라라벨에서 이벤트와 리스너를 사용하는 방법에 대해 단계별로 설명하겠습니다. 1. 이벤트 생성이벤트를 생성하려면 Artisan CLI를 사용하여 `make:event` 명령어를 실행합니다. 예를 들어, `UserRegistered`라는 이벤트를 생성하려면 다음과 같이 입력합니다.```bashphp artisan make:event UserRegistered```이 명령어를 실행하면 `app/Events` 디렉토리에 `UserRegistered.php` <a href='https://sangseek.com/sangseeks/파일/ko'>파일</a>이 생성됩니다. 이 파일은 이벤트의 속성과 메서드를 정의하는 곳입니다.```phpnamespace App\Events;use Illuminate\Foundation\Events\Dispatchable;use Illuminate\Queue\SerializesModels;class UserRegistered{ use Dispatchable, SerializesModels; public $user; public function __construct($user) { $this->user = $user; }}``` 2. 리스너 생성이벤트가 발생했을 때 실행될 리스너를 생성하려면 `make:listener` 명령어를 사용합니다. 예를 들어, `SendWelcomeEmail`이라는 리스너를 생성하려면 다음과 같이 입력합니다.```bashphp artisan make:listener SendWelcomeEmail```이 명령어를 실행하면 `app/Listeners` 디렉토리에 `SendWelcomeEmail.php` 파일이 생성됩니다. 이 파일에서 리스너의 로직을 정의합니다.```phpnamespace App\Listeners;use App\Events\UserRegistered;class SendWelcomeEmail{ public function handle(UserRegistered $event) { // $event->user를 사용하여 환영 이메일을 전송하는 로직을 작성합니다. }}``` 3. 이벤트와 리스너 등록이벤트와 리스너를 연결하려면 `EventServiceProvider`를 수정해야 합니다. `app/Providers/EventServiceProvider.php` 파일을 열고, `$listen` 배열에 이벤트와 리스너를 등록합니다.```phpprotected $listen = [ UserRegistered::class => [ SendWelcomeEmail::class, ],];``` 4. 이벤트 디스패치이벤트를 발생시키려면 `event()` 헬퍼 함수를 사용하거나, `dispatch()` 메서드를 호출합니다. 예를 들어, 사용자가 등록되었을 때 이벤트를 디스패치하려면 다음과 같이 할 수 있습니다.```phpuse App\Events\UserRegistered;// 사용자 등록 로직$user = User::create($request->all());// 이벤트 디스패치event(new UserRegistered($user));```또는```phpUserRegistered::dispatch($user);``` 5. 테스트이벤트와 리스너가 제대로 작동하는지 확인하기 위해 테스트를 작성할 수 있습니다. 라라벨에서는 이벤트와 리스너를 쉽게 테스트할 수 있는 기능을 제공합니다.```phppublic function test_user_registered_event_dispatches_listener(){ Event::fake(); // 사용자 등록 로직 $user = User::factory()->create(); // 이벤트 디스패치 event(new UserRegistered($user)); // 리스너가 호출되었는지 확인 Event::assertDispatched(UserRegistered::class);}``` 결론라라벨의 이벤트와 리스너는 애플리케이션의 구조를 깔끔하게 유지하고, 특정 작업을 분리하여 관리할 수 있는 강력한 도구입니다. 위의 단계들을 통해 이벤트와 리스너를 설정하고 활용하는 방법을 익힐 수 있습니다. 이를 통해 코드의 재사용성을 높이고, 유지보수성을 향상시킬 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기