riesenia/scheduler

提供简单调度功能的PHP类

dev-master 2019-05-24 12:26 UTC

This package is auto-updated.

Last update: 2024-08-25 06:38:03 UTC


README

Build Status Latest Version Total Downloads Software License

提供基本调度功能的PHP脚本。

安装

使用 composer require riesenia/scheduler 安装最新版本

或将它添加到您的 composer.json 文件作为依赖项

{
    "require": {
        "riesenia/scheduler": "~1.0"
    }
}

使用方法

构造函数接受两个参数

  • items - 整数数组 - 项目ID
  • terms - TermInterface 数组
use Riesenia\Scheduler\Scheduler;

$items = [1, 2];
$terms = [$term1, $term2, $term3, $term4];

$scheduler = new Scheduler($items, $terms);

添加术语和项目

项目和术语也可以单独添加。所有添加的术语都必须实现 TermInterface

$scheduler->addItem(3);
$scheduler->addTerm($term5);

TermInterface

术语通过其开始和结束日期(getFrom()getTo() 方法)定义。此外,它可以通过在 getLockedId() 方法中提供其ID来锁定到特定的项目。

调度

调用 schedule() 方法将术语正确地分配给项目。如果这不可能,调度器将抛出包含重叠术语信息的 SchedulerException

use Riesenia\Scheduler\SchedulerException;

try {
    $scheduler->schedule();

    // get all the terms with reassigned item IDs
    $scheduler->getTerms();
} catch (SchedulerException $e) {
    \var_dump($e->getConflictingTerms());
}