Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/EventServiceProvider.php
Строк: 132
<?php

namespace IlluminateFoundationSupportProviders;

use 
IlluminateFoundationEventsDiscoverEvents;
use 
IlluminateSupportFacadesEvent;
use 
IlluminateSupportServiceProvider;

class 
EventServiceProvider extends ServiceProvider
{
    
/**
     * The event handler mappings for the application.
     *
     * @var array<string, array<int, string>>
     */
    
protected $listen = [];

    
/**
     * The subscribers to register.
     *
     * @var array
     */
    
protected $subscribe = [];

    
/**
     * The model observers to register.
     *
     * @var array<string, string|object|array<int, string|object>>
     */
    
protected $observers = [];

    
/**
     * Register the application's event listeners.
     *
     * @return void
     */
    
public function register()
    {
        
$this->booting(function () {
            
$events $this->getEvents();

            foreach (
$events as $event => $listeners) {
                foreach (
array_unique($listenersSORT_REGULAR) as $listener) {
                    
Event::listen($event$listener);
                }
            }

            foreach (
$this->subscribe as $subscriber) {
                
Event::subscribe($subscriber);
            }

            foreach (
$this->observers as $model => $observers) {
                
$model::observe($observers);
            }
        });
    }

    
/**
     * Boot any application services.
     *
     * @return void
     */
    
public function boot()
    {
        
//
    
}

    
/**
     * Get the events and handlers.
     *
     * @return array
     */
    
public function listens()
    {
        return 
$this->listen;
    }

    
/**
     * Get the discovered events and listeners for the application.
     *
     * @return array
     */
    
public function getEvents()
    {
        if (
$this->app->eventsAreCached()) {
            
$cache = require $this->app->getCachedEventsPath();

            return 
$cache[get_class($this)] ?? [];
        } else {
            return 
array_merge_recursive(
                
$this->discoveredEvents(),
                
$this->listens()
            );
        }
    }

    
/**
     * Get the discovered events for the application.
     *
     * @return array
     */
    
protected function discoveredEvents()
    {
        return 
$this->shouldDiscoverEvents()
                    ? 
$this->discoverEvents()
                    : [];
    }

    
/**
     * Determine if events and listeners should be automatically discovered.
     *
     * @return bool
     */
    
public function shouldDiscoverEvents()
    {
        return 
false;
    }

    
/**
     * Discover the events and listeners for the application.
     *
     * @return array
     */
    
public function discoverEvents()
    {
        return 
collect($this->discoverEventsWithin())
                    ->
reject(function ($directory) {
                        return ! 
is_dir($directory);
                    })
                    ->
reduce(function ($discovered$directory) {
                        return 
array_merge_recursive(
                            
$discovered,
                            
DiscoverEvents::within($directory$this->eventDiscoveryBasePath())
                        );
                    }, []);
    }

    
/**
     * Get the listener directories that should be used to discover events.
     *
     * @return array
     */
    
protected function discoverEventsWithin()
    {
        return [
            
$this->app->path('Listeners'),
        ];
    }

    
/**
     * Get the base path to be used during event discovery.
     *
     * @return string
     */
    
protected function eventDiscoveryBasePath()
    {
        return 
base_path();
    }
}
Онлайн: 1
Реклама