25

Laravelコアライブラリによって発生するイベントを知りたいです。laravel.queryおよびなどの完全なリストを取得したいlaravel.done

公式ドキュメントには4つのイベントがリストされていますが、Laravelにはこれらの4つよりも多くのイベントがあると思います!

4

4 に答える 4

45

Laravelは実際にはあなたが思っているほど多くのイベントを発生させません。それはイベントシステムを利用しますが、開発者がそこのアプリケーション内で使用するためにあります。とにかく、これが私が編集したリストです。

laravel.done
laravel.log
laravel.query
laravel.resolving
laravel.composing: {viewname}
laravel.started: {bundlename}
laravel.controller.factory
laravel.config.loader
laravel.language.loader
laravel.view.loader
laravel.view.engine

view.filter

eloquent.saving
eloquent.updated
eloquent.created
eloquent.saved
eloquent.deleting
eloquent.deleted
eloquent.booted: {$model}
eloquent.booting: {$model}


500
404

およびは両方500とも404エラー関連のイベントです。これらはroutes.phpファイルに設定されているため、デフォルトのリスナーが何であるかを確認できます。

eloquent.{event}更新されているクラス名を含む別のバリエーションがあることを指摘したいと思います。

eloquent.{event}: {classname}

これが絶対にすべてであるとは言いませんが、少なくとも99%である必要があります。

于 2012-10-25T05:47:16.570 に答える
19

ジェイソンルイスの答えに加えて、私は追加することがいくつかあります。関数を検索しただけfire()で、Laravel5の次のリストが見つかりました。

$this->events->fire('auth.attempt', $payload);
$this->events->fire('auth.login', [$user, $remember]);
$this->events->fire('auth.logout', [$user]);
$this->events->fire('cache.'.$event, $payload);
$this->laravel['events']->fire('cache:clearing', [$storeName]);
$this->laravel['events']->fire('cache:cleared', [$storeName]);
$events->fire('artisan.start', [$this]);
$this->events->fire('illuminate.query', array($query, $bindings, $time, $this->getName()));
$this->events->fire('connection.'.$this->getName().'.'.$event, $this);
$this['events']->fire('bootstrapping: '.$bootstrapper, [$this]);
$this['events']->fire('bootstrapped: '.$bootstrapper, [$this]);
$this['events']->fire('locale.changed', array($locale));
$this['events']->fire($class = get_class($provider), array($provider));  //after provider registered.
$this->app['events']->fire('kernel.handled', [$request, $response]);
$this->dispatcher->fire('illuminate.log', compact('level', 'message', 'context'));
$this->events->fire('mailer.sending', array($message));
$this->events->fire('illuminate.queue.failed', array($connection, $job, $data));
$this->events->fire('illuminate.queue.stopping');
$this->events->fire('router.matched', [$route, $request]);
$this->events->fire('composing: '.$view->getName(), array($view));
$this->events->fire('creating: '.$view->getName(), array($view));
于 2015-04-20T08:27:29.870 に答える
3

ここにそれらのいくつかがあります、ダンプ中にそれらを手に入れましたstatic::$events

laravel.config.loader
laravel.view.loader
laravel.language.loader
laravel.view.engine
404

これらは内部的に呼び出されるため、これらをオーバーライドすることが機能するかどうかはよくわかりません

于 2012-10-25T02:27:52.770 に答える
3

Laravelアプリケーションをデバッグしている場合は、次のスニペットを使用して、実行中のプロセスのコンソールで発生したイベントの完全なリストを取得できます(たとえば、単体テストまたは職人のコマンドを実行している場合)。

Event::listen('*', function ($event) {
    echo $event."\n";
});

この関数を使用するloggerと、無限ループになります。

于 2020-09-07T10:41:37.223 に答える