EricMakesStuff\ServerMonitor\Monitors\ServerMonitorFactory::createForMonitorConfig PHP Method

createForMonitorConfig() public static method

public static createForMonitorConfig ( array $monitorConfiguration, array $filter = [] ) : mixed
$monitorConfiguration array
$filter array
return mixed
    public static function createForMonitorConfig(array $monitorConfiguration, array $filter = [])
    {
        $monitors = collect($monitorConfiguration);
        if (count($filter) && !empty($filter[0])) {
            $monitors = $monitors->only($filter);
        }
        $configured_monitors = collect();
        $monitors->map(function ($monitorConfigs, $monitorName) {
            if (file_exists(__DIR__ . '/' . ucfirst($monitorName) . 'Monitor.php')) {
                $className = '\\EricMakesStuff\\ServerMonitor\\Monitors\\' . ucfirst($monitorName) . 'Monitor';
                return collect($monitorConfigs)->map(function ($monitorConfig) use($className) {
                    return app($className, [$monitorConfig]);
                });
            }
            throw InvalidConfiguration::cannotFindMonitor($monitorName);
        })->each(function ($monitor_group) use($configured_monitors) {
            $monitor_group->each(function ($monitor) use($configured_monitors) {
                $configured_monitors->push($monitor);
            });
        });
        return $configured_monitors;
    }

Usage Example

 public function handle()
 {
     $monitors = ServerMonitorFactory::createForMonitorConfig(config('server-monitor.monitors'), explode(',', $this->argument('monitor')));
     $monitors->each(function (BaseMonitor $monitor) {
         $monitor->runMonitor();
     });
 }
ServerMonitorFactory