Laravel 액션, WordPress와 같은 필터 후크 시스템

에 대한


  • 동작은 무언가를 수행하기 위해 코드 흐름을 중단한 다음 아무 것도 수정하지 않고 일반 흐름으로 돌아갑니다.
  • 나중에 코드에서 수정 사항을 사용할 수 있도록 특정 방식으로 항목을 수정하는 데 필터를 사용합니다.
    필터 및 작업에 대해 자세히 알아보기

  • 후크는 특정 사전 정의된 지점에서 한 코드 조각이 다른 코드 조각과 상호 작용/수정하는 방법입니다.

    설치


    composer require millat/laravel-hooks완료! 이제 laravel-hooks를 사용할 수 있습니다.

    용법



    자세한 내용은 방문: https://github.com/SneherAdor/laravel-hooks

    행위



    원하는 곳 어디에서나 Laravel 애플리케이션에서 새 작업을 만들 수 있습니다.

    do_action('user_created', $user);
    


    여기에서 user_created는 나중에 작업이 수신 대기할 때 사용할 작업의 이름입니다. 그리고 $user는 작업을 들을 때마다 발견되는 매개변수입니다. 이것들은 무엇이든 될 수 있습니다.

    당신의 행동을 듣기 위해 당신은 리스너를 붙입니다. AppServiceProvider boot() 메서드에 추가하는 것이 가장 좋습니다.

    예를 들어 위의 후크에 연결하려는 경우 다음을 수행할 수 있습니다.

    add_action('user_created', function($user) {
        $user->sendWelcomeMail();
    }, 20, 1);
    


    첫 번째 인수는 작업의 이름이어야 합니다. 두 번째는 클로저, 콜백 및 익명 함수입니다. 세 번째는 특정 작업과 관련된 기능이 실행되는 순서를 지정합니다. 낮은 숫자는 이전 실행에 해당하며 우선 순위가 같은 함수는 작업에 추가된 순서대로 실행됩니다. 기본값: 10. 넷째, 함수가 허용하는 인수의 수입니다. 기본값: 1

    필터



    필터는 데이터가 브라우저에서 출력되도록 항상 데이터가 들어오고 나가는 데이터가 있어야 합니다.

    기본적으로 필터는 데이터를 전달하기 위해 Laravel 애플리케이션에서 사용할 수 있는 기능입니다. 이를 통해 개발자는 특정 기능의 기본 동작을 수정할 수 있습니다.

    예를 들면 다음과 같습니다.

    Post.php는 게시된 모든 게시물을 가져오는 쿼리를 작성하는 모델 또는 클래스입니다.

    class Post extend Model
    {
        public function getPublished()
        {
            return Post::where('published_at', '>', now());
        }
    }
    


    필터를 사용하여 이 쿼리를 수정하도록 제안할 수 있습니다.

    class Post extend Model
    {
        public function getPublished()
        {
            return apply_filters('posts_published', Post::where('published_at', '>', now());
        }
    }
    


    이제 모든 모듈이나 플러그인과 같은 애플리케이션의 진입점에서 게시된 이 쿼리를 수정할 수 있습니다.

    모듈 또는 플러그인의 서비스 제공자(가급적 부팅 방법)에서 필터에 대한 리스너를 추가합니다.

    class ModuleServiceProvider extends ServiceProvider
    {
        public function boot()
        {
            add_filter('posts_published', function($query) {
                return $query->where('status', 'active');
            });
        }
    }
    


    https://github.com/SneherAdor/laravel-hooks

    좋은 웹페이지 즐겨찾기