Laravel服务容器(继承与事件)_git

前面写了容器的​​上下文绑定​​,接下去看下 继承与事件

在Laravel 框架中,有时需要修改 系统的基础文件,但是修改vender目录下的文件,肯定是不明智的选择,为了框架的扩展性,可以通过容器的继承或事件来修改或者覆盖需要修改的值。

比如我想设置db 的 ​​setDefaultConnection​​ 方法可以这样

$this->app->resolving('setDefaultConnection',function ($db,$app){
$db->setDefaultConnection('ConnectionName');
});

回到 比较实际的例子, 在控制器初始化一个数据

<?php


namespace App\Http\Controllers;


class Nut
{
public $express;

public $data;

public function __construct(\App\Contracts\Express $express)
{

$this->express = $express;

}

public function get()
{

return $this->data;

}
}

我们在原来的基础上新加了一个 data 属性,并输出。

在服务提供者就可以对 这个data 进行初始化了

容器事件

$this->app->resolving('setDefaultConnection',function ($db,$app){
$db->setDefaultConnection('ConnectionName');
});

容器继承

继承的方式和 事件有点像,但是需要返回对象

$this->app->extend('App\Http\Controllers\Nut', function ($service, $app) {
$service->data = 'hello extend';
return $service;
});
git add .
git commit -m 容器的继承与事件
git push

​代码仓库​