set days of week using bitwise operators

This commit is contained in:
Nabeel Shahzad 2017-08-16 08:29:05 -05:00
parent 073af3e949
commit 6b20ea6f16
3 changed files with 47 additions and 0 deletions

View File

@ -16,4 +16,28 @@ class Utils extends Facade
return $dtF->diff($dtT)->format($format);
}
/**
* Bitwise operator for setting days of week to integer field
* @param int $datefield initial datefield
* @param array $day_enums Array of values from config("enum.days")
* @return int
*/
public static function setDays(int $datefield, array $day_enums) {
foreach($day_enums as $day) {
$datefield |= $day;
}
return $datefield;
}
/**
* Bit check if a day exists within a integer bitfield
* @param int $datefield datefield from database
* @param int $day_enum Value from config("enum.days")
* @return bool
*/
public static function hasDay(int $datefield, int $day_enum) {
return ($datefield & $day_enum) === $datefield;
}
}

View File

@ -26,5 +26,15 @@ return [
'MOGAS' => 2,
],
'days' => [
'MONDAY' => 1,
'TUESDAY' => 2,
'WEDNESDAY' => 4,
'THURSDAY' => 8,
'FRIDAY' => 16,
'SATURDAY' => 32,
'SUNDAY' => 64
],
];

13
tests/UtilsTest.php Normal file
View File

@ -0,0 +1,13 @@
<?php
use App\Facades\Utils;
class UtilsTest extends TestCase
{
public function setUp() {
}
public function testSecondsToTime() {
print_r(Utils::secondsToTime(3600));
}
}