承接 sinclairt/schedulable 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

sinclairt/schedulable

Composer 安装命令:

composer require sinclairt/schedulable

包简介

Schedule any object with schedulable

README 文档

README

Installation

  • Run composer require sinclairt/schedulable.
  • Register Sinclair\Schedulable\Providers\SchedulableServiceProvider::class in config\app.php inside the providers array.
  • Run composer dump-autoload
  • Run php artisan vendor:publish. This will publish the migration for the schedules.
  • Run php artisan migrate

Usage

Use the IsSchedulable trait inside your model. This will give you access to a host of scopes and methods.

Create Schedules

Use the helper method to start building your schedules fluently.

schedule($object)->daily()->hour(10)->minute(0)->save();
Update Schedules

If your object already has a schedule attached, then when you make changes, and save, the changes will be made to the existing schedule.

Available Fields
 minutely()
 hourly()
 daily()
 weekly()
 monthly()
 annually()
 quarterly()
 adhoc()
 isMinutely()
 isHourly()
 isDaily()
 isWeekly()
 isMonthly()
 isAnnually()
 isQuarterly()
 isAdhoc()
 minute( $value = null )
 hour( $value = null )
 dayOfWeek( $value = null )
 dayOfMonth( $value = null )
 monthOfYear( $value = null )
 year( $value = null )
 isLastDayOfMonth( $value = null )
 frequencyN( $value = null )
 startsAt( $value = null )
 expiresAt( $value = null )
Dynamic setting/getting

This factory uses dynamic methods, so be aware, for example, calling schedule($object)->hour() will return the current hour stored on the schedule factory, however, calling schedule($object)->hour(10) will set the hour property to 10 and return the factory for you to keep chaining.

Starts At/Expires At

You can set when a schedule should start and end, this is optional. The active/expired scopes will take notice of these fields.

Shortcuts

loadFromSchedule($schedule = null) - this will load all the attributes from the supplied schedule into the factory. It will also set the factory's schedule object to the schedule supplied. If no schedule is supplied then it will use the currently attached schedule i.e.

schedule($objectWithoutSchedule)->loadFromSchedule($anotherSchedule);
// or
schedule($objectWithoutSchedule)->setSchedule($schedule)->loadFromSchedule();

resetSchedule() - will reset all the properties to their default regardless of the object(s) attached to the factory.

refresh() - will return a new instance of the factory with the current object inside it.

loadFromCron($string) - will set the properties from a cron expression to the factory. You can use pseudo expressions:

  • @annually
  • @monthly
  • @weekly
  • @daily
  • @hourly
Getting dates

You can get the next() date, previous() date, nextRunDates($n), previousRunDates($nth) (where $n is the number of dates you need i.e. 3). You can also get the potential run dates between two dates as well with runDatesBetween(Carbon $from, Carbon $to, bool $active = true).

Running schedules

When a schedule has run it is a good idea to run the hasRun() method, because this will update the last_run_at and next_runs_at timestamps.

Scopes

There a huge number of scopes available to you:


dueOn( Carbon $dt, $active = true )
isNow()
isMinutely()
isHourly()
isDaily()
isWeekly()
isMonthly()
isAnnually()
isQuarterly()
isAdhoc()
between( Carbon $dtFrom, Carbon $dtTo = null, $active = true )
day( Carbon $dt )
dayBetween( Carbon $dtFrom, Carbon $dtTo = null )
dayOfMonth( int $day )
dayOfMonthBetween( Carbon $dtFrom, Carbon $dtTo = null )
dayOfWeek( int $day )
dayOfWeekBetween( Carbon $dtFrom, Carbon $dtTo = null )
lastOfMonth( Carbon $dt )
month( int $month )
monthBetween( int $from, int $to )
year( int $year )
yearBetween( int $from, int $to )
hour( int $hour )
hourBetween( int $from, int $to )
minute( int $minute )
minuteBetween( int $from, int $to )
isActive( Carbon $dt = null )
isActiveBetween( Carbon $dtFrom, Carbon $dtTo = null )
isExpired( Carbon $dt = null )

Disclaimer

Although a lot of time and effort has gone into making the between scopes and methods, it does have its limitations, as the dates are calculated on the fly, so be careful when using them, as they could cause a memory failure in your script.

Other Methods

  • hasSchedule() - determines whether your object has a schedule attached
  • isDue( Carbon $dt = null ) - is the schedule due on a specific date, or if $dt is blank now.
  • getScheduleType( $schedule ) - (on the Schedule model)
  • allRunDatesBetween( Carbon $dtFrom, Carbon $dtTo = null, $active = true ) - (on the Schedule model) - all dates that all the schedules could run.
  • setSchedule() - (ScheduleFactory)
  • getSchedule() - (ScheduleFactory)
  • setObject() - (ScheduleFactory)
  • getObject() - (ScheduleFactory)
  • load() - (ScheduleFactory) - this will take the current objects schedule and set all the properties.

统计信息

  • 总下载量: 12
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-03-29

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固