我在哪里可以获得 Laravel 事件的完整列表(由核心库触发)?

Posted

技术标签:

【中文标题】我在哪里可以获得 Laravel 事件的完整列表(由核心库触发)?【英文标题】:Where can I get a complete list of Laravel events (fired by the core libraries)? 【发布时间】:2012-10-15 02:45:02 【问题描述】:

我想知道 Laravel 核心库触发了哪些事件。我想得到完整的列表,比如laravel.querylaravel.done

the official docs 列出了四个事件,但我认为 Laravel 的事件比这四个还多!

【问题讨论】:

【参考方案1】:

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

500404 都是与错误相关的事件。这些是在routes.php 文件中设置的,因此您可以查看默认侦听器是什么。

我想指出,eloquent.event 有另一个包含正在更新的类名的变体。

eloquent.event: classname

我不会说这绝对是一切,但至少应该是 99%。

【讨论】:

值得注意的是,从 5.4 开始,上述部分内容已被重命名或删除。我一直在寻找与laravel.done 事件类似的东西,但很难找到任何文档。我建议使用* 监听所有事件并记录传入的事件调度程序实例以了解可用的内容。【参考方案2】:

除了 Jason Lewis 的回答,我还有一些要补充的。我只是搜索了fire() 函数并为 Laravel 5 提供了以下列表,

$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));

【讨论】:

Illuminate\Mail\Events\MessageSending【参考方案3】:

这里还有一些,在倾销时得到的static::$events

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

不确定是否可以覆盖它们,因为它们是内部调用的

【讨论】:

您实际上可以监听这些并定义您自己的自定义加载器。如果您想要一个用于配置/视图/语言文件的级联加载系统,这非常棒。我偶尔会这样做。【参考方案4】:

如果您正在调试 Laravel 应用程序,您可以使用以下 sn-p 在控制台中获取正在运行的进程的触发事件的完整列表(例如,当您运行单元测试或工匠命令时):

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

如果您使用logger 函数,它将进入无限循环。

【讨论】:

以上是关于我在哪里可以获得 Laravel 事件的完整列表(由核心库触发)?的主要内容,如果未能解决你的问题,请参考以下文章

我在哪里可以获得所有 iOS 元素的列表? [关闭]

当我在 Laravel livewire 上单击事件时获得 404 模态

我在哪里可以获得 qt 默认 plastique qss 文件?

CLDR 时区 xml 中英语示范城市的完整列表在哪里?

SQLSTATE[23000]:Laravel 中的完整性约束违规

我在哪里可以找到任何 NodeJS 版本的重大更改列表