laravel:服务容器(10.27.0)

一,相关文档:

https://learnku.com/docs/laravel/10.x/container/14842

二,php代码:

假设我们有两种商品:虚拟商品如账号,实体商品如手办需要销售

1,App\extend\mall\GoodsInterface.php

1
2
3
4
5
6
7
<?php
namespace App\extend\mall;
//接口
interface GoodsInterface
{
    public function sale();
}

2,App\extend\mall\RealGoods.php

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
namespace App\extend\mall;
//实体商品
class RealGoods implements GoodsInterface
{
    private $name = '';
    public function __construct($name) {
        $this->name = $name;
    }
    public function sale() {
        echo '实体商品:'.$this->name. '下订单,减库存,通知发货<br/>';
    }
}

3,App\extend\mall\VirtualGoods.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
namespace App\extend\mall;
//虚拟商品
class VirtualGoods implements GoodsInterface
{
    private $name = '';
    public function __construct($name) {
        $this->name = $name;
    }
 
    public function sale() {
        echo '虚拟商品:'.$this->name. '下订单,无需减库存,生成虚拟商品并通知用户<br/>';
    }
}

4,App\extend\mall\GoodsSale.php

1
2
3
4
5
6
7
8
9
<?php
namespace App\extend\mall;
//销售功能
class GoodsSale
{
    public function saleOne(GoodsInterface $goods) {
        $goods->sale();
    }
}

5,routes/web.php中添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Route::get('container/test', function(){
    app()->bind('RealGoods', function(){
        return new \App\extend\mall\RealGoods('手办');
    });
    app()->instance('VirtualGoods', new \App\extend\mall\VirtualGoods('账号'));
 
    app()->singleton('GoodsSale', function(){
        return new \App\extend\mall\GoodsSale();
    });
 
    $goodsSale = app()->make('GoodsSale');
 
    $rgoods = app()->make('RealGoods');
    $goodsSale->saleOne($rgoods);
 
    $vgoods = app()->make('VirtualGoods');
    $goodsSale->saleOne($vgoods);
});

6,相关说明:

上面的代码:通过saleOne方法的参数把对象注入进来,

app():用来生成容器。

bind(): 直接绑定一个容器对象。

 instance():绑定一个实例化对象。

 singleton(): 绑定一个单例对象。

绑定完成之后,make() 方法来获得容器中的对象实例

三,查看效果:

四,查看laravel框架的版本:

liuhongdi@lhdpc:/data/laravel/dignews$ php artisan --version
Laravel Framework 10.27.0
posted @ 2023-10-22 10:40  刘宏缔的架构森林  阅读(5)  评论(0编辑  收藏  举报