ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
所以,要如何实现一个 contract?实际上非常的简单。很多 Laravel 的类都是经由 service container 解析,包含控制器,事件监听,过滤器,队列任务,甚至是闭包。所以,要实现一个 contract,你可以在类的构造器使用「类型提示」解析类。例如,看下面的事件处理程序: ~~~ <?php namespace App\Handlers\Events; use App\User; use App\Events\NewUserRegistered; use Illuminate\Contracts\Redis\Database; class CacheUserInformation { /** * Redis 数据库实现 */ protected $redis; /** * 建立新的事件处理实例 * * @param Database $redis * @return void */ public function __construct(Database $redis) { $this->redis = $redis; } /** * 处理事件 * * @param NewUserRegistered $event * @return void */ public function handle(NewUserRegistered $event) { // } } ~~~ 当事件监听被解析时,服务容器会经由类构造器参数的类型提示,注入适当的值。要知道怎么注册更多服务容器,参考这个文档。