Laravel Observers: 애플리케이션 라이프사이클의 조용한 닌자

Linda Hamilton
풀어 주다: 2024-11-08 02:00:02
원래의
622명이 탐색했습니다.

Laravel Observers: The Silent Ninjas of Your Application Lifecycle

소개

웹사이트에 양식을 제출할 때마다 보이지 않는 도우미가 와서 모든 것을 다시 확인한다고 상상해 보세요. 추가 세부정보를 추가하거나 손가락 하나 까딱하지 않고도 환영 편지를 보낼 수도 있습니다. Laravel 관찰자는 조용히 일하는 무대 뒤의 조수와 같습니다. 그리고 필요할 때 모든 작업을 처리하는 것이 강력합니다. 이번 포스팅에서는 관찰자가 Laravel에서 어떻게 작동하는지, 모델 이벤트 처리에서 관찰자가 앱의 조용한 닌자인 이유를 살펴보겠습니다. 실제 사례에서 이러한 이벤트를 최대한 활용하는 방법을 알아보세요.

Laravel Observer란 무엇인가요?

Laravel Observer는 생성, 업데이트 또는 삭제와 같은 특정 이벤트를 관찰하여 모델의 수명 주기를 관리하는 데 도움이 되는 리스너 클래스입니다. 관찰자는 이러한 각 이벤트에 대한 동작을 정의할 수 있습니다. 컨트롤러와 모델을 깔끔하고 집중적으로 유지하세요. 관찰자는 애플리케이션 내에서 "이벤트 전문가" 역할을 하며 코드베이스를 개선하는 데 필요한 백엔드 작업을 처리합니다. 이벤트 기반 작업 분리를 통해 조직 및 효율성을 향상시킵니다. 관찰자는 보다 모듈화되고 유지 관리 가능한 애플리케이션 구조에 기여합니다.

옵저버를 사용하는 이유

1. 깔끔한 컨트롤러 및 모델: 관찰자는 반복 작업을 처리하여 컨트롤러와 모델이 방해받지 않고 주요 작업에 집중할 수 있도록 합니다.

2. 코드 재사용성: 관련 작업을 한 곳에 통합하여 코드를 더 읽기 쉽고 유지 관리하기 쉽게 만들 수 있습니다.

3. 오류 처리: 관찰자는 모델이 변경될 때마다 데이터 검증이나 백그라운드 업데이트와 같은 작업을 자동화하여 오류를 방지하는 데 도움을 줍니다.

4. 자동 이벤트 처리: 레코드가 생성되거나 업데이트될 때마다 작업을 트리거하고 싶으십니까? 관찰자가 든든합니다.

요컨대 Observer는 앱 수명 주기의 다양한 단계에서 실행하려는 논리를 구성하는 데 환상적입니다.

Eloquent Hooks 개요:

- 검색됨: 데이터베이스에서 레코드가 검색된 후 트리거됩니다.
- 생성: 새 레코드가 생성되기 직전에 실행됩니다.
- 생성됨: 새 레코드가 성공적으로 생성된 후 실행됩니다.
- 업데이트 중: 기존 기록이 업데이트되기 전에 활성화됩니다.
- 업데이트됨: 기록이 업데이트된 후 실행됩니다.
- 저장: 신규 생성이든 업데이트이든 레코드가 저장되기 전에 실행됩니다.
- 저장됨: 새로 생성되거나 업데이트된 레코드가 저장된 후에 발생합니다.
- 삭제: 기록이 삭제되거나 일시 삭제되기 전에 시작됩니다.
- 삭제됨: 레코드가 삭제되거나 일시 삭제된 후에 활성화됩니다.
- 복원: 일시 삭제된 레코드가 복원되기 전에 실행됩니다.
- 복원됨: 일시 삭제된 레코드가 성공적으로 복원된 후 실행됩니다.

단계별 가이드: 관찰자 생성 및 사용 방법

실제 사례를 통해 Observer에 대해 논의해 보겠습니다. 블로그 앱을 구축하고 사용자가 게시물을 게시할 때마다 다음을 수행한다고 가정해 보세요.

  • 제목에서 자동으로 슬러그를 생성합니다.
  • 관리자에게 알립니다.
  • 게시일을 기록하세요.

Laravel Observer를 사용하여 이를 실현하는 방법은 다음과 같습니다!

1단계: 관찰자 클래스 생성
Laravel을 사용하면 관찰자 클래스를 쉽게 생성할 수 있습니다. 다음 명령을 실행하세요:

php artisan make:observer PostObserver --model=Post
로그인 후 복사
로그인 후 복사

이렇게 하면 app/Observers 디렉토리에 PostObserver 클래스가 생성되어 Post 모델에 연결됩니다.

2단계: 관찰자에서 이벤트 정의

PostObserver 클래스를 열면 몇 가지 편리한 메소드가 이미 마련되어 있는 것을 볼 수 있습니다. 각 메소드는 생성, 업데이트, 삭제 등과 같은 모델 이벤트에 해당합니다.

슬러그를 생성하고 게시 날짜를 기록하도록 이벤트 생성에 사용자 정의 로직을 추가해 보겠습니다.

use Illuminate\Support\Str;
class PostObserver
{
   public function creating(Post $post)
   {
       $post->slug = Str::slug($post->title);
       $post->published_at = now();
   }

   public function created(Post $post)
   {
      Notification::send(User::admin(), new PostPublishedNotification($post));
   }
}
로그인 후 복사

3단계: 참관인 등록

Laravel은 이를 수행하는 두 가지 방법, 즉 모델의 ObservedBy 속성을 사용하거나 수동으로 관찰 방법을 사용하는 방법을 제공합니다

1.ObservedBy 속성 사용

Laravel 10으로 작업하는 경우 모델에서 직접 ObservedBy 속성을 사용할 수 있습니다. 이 속성은 관찰자를 모델에 자동으로 연결하여 관찰자 등록을 단순화합니다.

use App\Observers\PostObserver;
use Illuminate\Database\Eloquent\Concerns\ObservedBy;

#[ObservedBy(PostObserver::class)]
class Post extends Model
{
   // Your Post model code
}
로그인 후 복사

이 접근 방식은 깔끔하고 모델 자체에 Observer 등록을 유지하여 설정 단계를 줄이고 AppServiceProvider를 그대로 유지합니다.

2.관찰자 수동 등록
원하는 경우(또는 Laravel 10 이전 버전에서 작업하는 경우) AppServiceProvider의 부팅 방법에서 Observer를 수동으로 등록할 수 있습니다.

AppProvidersAppServiceProvider.php에서 관찰 메소드를 추가하여 관찰자를 모델에 연결합니다.

php artisan make:observer PostObserver --model=Post
로그인 후 복사
로그인 후 복사

등록되면 Laravel은 Post 모델에서 해당 이벤트가 발생할 때마다 Observer의 메소드를 트리거합니다.

4단계: 관찰자 테스트

관찰자의 실제 모습을 보려면 앱에서 게시물을 작성하거나 업데이트해 보세요. 슬러그가 자동으로 생성되고 게시 날짜가 자동으로 설정되며 가상의 관리자가 알림을 받게 됩니다. 관찰자들은 진정한 닌자처럼 이 모든 일이 조용히 일어나게 만듭니다.


읽어주셔서 감사합니다! 이것이 귀하의 프로젝트에 대한 새로운 아이디어를 촉발시켰기를 바랍니다. 고품질 개발을 현실화하는 데 관심이 있다면 언제든지 연락해 주세요. 저는 우리가 이를 실현할 수 있는 방법을 알아보고 연결하고 싶습니다.

위 내용은 Laravel Observers: 애플리케이션 라이프사이클의 조용한 닌자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿