* @author Dennis Eichhorn * @copyright 2013 Dennis Eichhorn * @license OMS License 1.0 * @version 1.0.0 * @link http://orange-management.com */ namespace phpOMS\Utils\TaskSchedule; use phpOMS\System\OperatingSystem; use phpOMS\System\SystemType; /** * Task factory. * * @category Framework * @package phpOMS\Utils\TaskSchedule * @author OMS Development Team * @author Dennis Eichhorn * @license OMS License 1.0 * @link http://orange-management.com * @since 1.0.0 */ final class TaskFactory { /** * Create task instance. * * @param Interval $interval Task interval * @param string $cmd Command to run * * @return TaskInterface * * @throws \Exception * * @since 1.0.0 * @author Dennis Eichhorn */ public static function create(Interval $interval = null, string $cmd = '') : TaskInterface { switch (OperatingSystem::getSystem()) { case SystemType::WIN: return new Schedule($interval, $cmd); case SystemType::LINUX: return new CronJob($interval, $cmd); default: throw new \Exception('Unsupported system.'); } } }