>看,我有一个看起来像这样的类,我想每天使用此方法在 cron 作业中缓存一些信息 cacheTopFilters 在 laravel 5.1 中
<?php
namespace namescape/of/the/class;
class FilterTypeCacheService extends BaseService implements IFilterTypeCacheService
{
private $searchFilterService;
private $filterCacheHandler;
function __construct(SearchFilterService $searchFilterService, IFilterTypeCacheHandler $filterCacheHandler){
$this->searchFilterService = $searchFilterService;
$this->filterCacheHandler = $filterCacheHandler;
}
public function cacheTopFilters($type,$keyValuePair,$limit){
$filters = $this->searchFilterService->getAllFilters($type,$keyValuePair);
$this->filterCacheHandler->deleteFiltersBulkFromCache();
$this->filterCacheHandler->SaveFiltersBulk($filters,$type);
}
public function getTopFilters(){
$topFilters = $this->filterCacheHandler->getCachedTopFilters();
return $topFilters;
}
}
由于他们有依赖注入,我如何完成在计划方法上的应用程序/控制台/内核上调用该方法?
你想看看任务调度:
https://laravel.com/docs/5.1/scheduling#defining-schedules
在App'Console'Kernel
类中,在 schedule
函数中,您可以像这样安排任何内容:
$schedule->call(function () {
doSomething();
})->daily();
假设您已经设置了调度程序(每分钟进行一次系统 cron 作业),您应该已经全部设置好了。
如果你有一个需要实例化的类,并注入了依赖项,你总是可以使用Laravel给你的全局app()
辅助函数:
$schedule->call(function () {
app('namespace'of'the'class::class)->cacheTopFilters(...);
})->daily();
这是假设Laravel知道如何处理你的依赖关系。我看到您的依赖项之一是合约(接口),因此我假设您已经在Laravel IoC中绑定了具体实例。