<?php class PayDay { public function __construct($Ymd = null) { $this->date = $Ymd ?: date("Y-m-d"); $this->holiday_calendar = [ (object)["holiday" => "New Year's Day", "holidayDate" => "2018-01-01"], (object)["holiday" => "Republic Day", "holidayDate" => "2018-01-26"], (object)["holiday" => "Holi", "holidayDate" => "2018-03-02"] ]; $this->payroll_days_list = [ (object)["payrollDay" => "Mon", "isPayrollDay" => "Y"], (object)["payrollDay" => "Tue", "isPayrollDay" => "Y"], (object)["payrollDay" => "Wed", "isPayrollDay" => "Y"], (object)["payrollDay" => "Thu", "isPayrollDay" => "Y"], (object)["payrollDay" => "Fri", "isPayrollDay" => "Y"], (object)["payrollDay" => "Sat", "isPayrollDay" => "N"], (object)["payrollDay" => "Sun", "isPayrollDay" => "N"] ]; echo "Starting Date: ",$this->date,"\n"; } public function getPayDate() { $hc_match = false; foreach (array_reverse($this->holiday_calendar) as $hc) { if ($hc->holidayDate == $this->date) { $hc_match = true; //echo "Avoided: ",$hc->holiday,"\n"; $this->loseOneDay(); //echo "New Date: ",$this->date,"\n"; } elseif ($hc_match) { break; } } $pdl_match = false; foreach (array_reverse($this->payroll_days_list) as $pdl) { if ($pdl->payrollDay == date("D", strtotime($this->date)) && $pdl->isPayrollDay == "N") { $pdl_match = true; //echo "Avoided: ",$pdl->payrollDay,"\n"; $this->loseOneDay(); //echo "New Date: ",$this->date,"\n"; } elseif ($pdl_match) { break; } } //echo $this->date; if ($hc_match || $pdl_match) { //echo "\tRECURSE\n"; $this->getPayDate(); } return $this->date; } public function loseOneDay(){ return $this->date = date("Y-m-d", strtotime($this->date." -1 day")); } } $date = new PayDay("2018-03-04"); echo "Adjusted Date: ",$date->getPayDate();
You have javascript disabled. You will not be able to edit any code.