44 lines
		
	
	
		
			860 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			860 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Toalett\Multiprocessing\Task;
 | 
						|
 | 
						|
use Toalett\Multiprocessing\Exception\InvalidArgumentException;
 | 
						|
 | 
						|
class Interval
 | 
						|
{
 | 
						|
    private float $seconds;
 | 
						|
 | 
						|
    private function __construct(float $seconds)
 | 
						|
    {
 | 
						|
        if ($seconds <= 0) {
 | 
						|
            throw new InvalidArgumentException('positive float', $seconds);
 | 
						|
        }
 | 
						|
        $this->seconds = $seconds;
 | 
						|
    }
 | 
						|
 | 
						|
    public static function seconds(float $seconds): self
 | 
						|
    {
 | 
						|
        return new self($seconds);
 | 
						|
    }
 | 
						|
 | 
						|
    public static function minutes(float $minutes): self
 | 
						|
    {
 | 
						|
        return new self(60.0 * $minutes);
 | 
						|
    }
 | 
						|
 | 
						|
    public static function hours(float $hours): self
 | 
						|
    {
 | 
						|
        return new self(3600.0 * $hours);
 | 
						|
    }
 | 
						|
 | 
						|
    public function asFloat(): float
 | 
						|
    {
 | 
						|
        return $this->seconds;
 | 
						|
    }
 | 
						|
 | 
						|
    public function asInt(): int
 | 
						|
    {
 | 
						|
        return (int)$this->seconds;
 | 
						|
    }
 | 
						|
}
 |