gpt4 book ai didi

php - Laravel - 服务提供者 - 绑定(bind)多个类

转载 作者:行者123 更新时间:2023-12-04 16:45:11 26 4
gpt4 key购买 nike

我知道如何绑定(bind)单个类:

public function register() {
$this->app->bind('search', 'Laracasts\Search\Search');
}

但是想象一下我的 Laracasts\Search\ 目录有这些文件:

  • Search.php//搜索类
  • SearchX.php//类 SearchX
  • SearchY.php//类 SearchY
  • SearchZ.php//类 SearchZ

将这四个文件/类绑定(bind)到搜索外观的最佳方法是什么?

我读了另一个non-related question我们可以使用映射器。但是如何呢?

最佳答案

为每个类/外观使用单独的绑定(bind):

public function register() {
$this->app->bind('search.x', 'Laracasts\Search\SearchX');
$this->app->bind('search.y', 'Laracasts\Search\SearchY');
...
}

一个绑定(bind)只能绑定(bind)一个东西。当然,在绑定(bind)类中,您可以做任何您喜欢的事情:

public function register() {
$this->app->bind('search.all', 'Laracasts\Search\SearchAll');
}

class SearchAll() {

private $searchers = []; // an array of searchers

// Use Laravel Dependency Injection to instantiate our searcher classes
public function __construct(SearchX $searchX, SearchY $searchY) {
$this->searchers = [$searchX, $searchY];
}

public function search($value) {
$matches = [];
foreach ($this->searchers() as $searcher) {
$matches += $searchers->search();
}
return $matches;
}
}

// elsewhere in your app...
$searcher = app('search.all');
$matches = $searcher->search('hello');

关于php - Laravel - 服务提供者 - 绑定(bind)多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31887870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com