Calculate future date based on business days
I propose a class, BusinessDayCalculator, which would handle all this logic in one place. Here's an example:

&lt;?php

class BusinessDaysCalculator {

    const MONDAY    = 1;
    const TUESDAY   = 2;
    const WEDNESDAY = 3;
    const THURSDAY  = 4;
    const FRIDAY    = 5;
    const SATURDAY  = 6;
    const SUNDAY    = 7;

    /**
     * @param DateTime   $startDate       Date to start calculations from
     * @param DateTime[] $holidays        Array of holidays, holidays are no conisdered business days.
     * @param int[]      $nonBusinessDays Array of days of the week which are not business days.
     */
    public function __construct(DateTime $startDate, array $holidays, array $nonBusinessDays) {
        $this-&gt;date = $startDate;
        $this-&gt;holidays = $holidays;
        $this-&gt;nonBusinessDays = $nonBusinessDays;
    }

    public function addBusinessDays($howManyDays) {
        $i = 0;
        while ($i &lt; $howManyDays) {
            $this-&gt;date-&gt;modify("+1 day");
            if ($this-&gt;isBusinessDay($this-&gt;date)) {
                $i++;
            }
        }
    }

    public function getDate() {
        return $this-&gt;date;
    }

    private function isBusinessDay(DateTime $date) {
        if (in_array((int)$date-&gt;format('N'), $this-&gt;nonBusinessDays)) {
            return false; //Date is a nonBusinessDay.
        }
        foreach ($this-&gt;holidays as $day) {
            if ($date-&gt;format('Y-m-d') == $day-&gt;format('Y-m-d')) {
                return false; //Date is a holiday.
            }
        }
        return true; //Date is a business day.
    }
}

$calculator = new BusinessDaysCalculator(
    new DateTime(), // Today
    [new DateTime("2014-06-01"), new DateTime("2014-06-02")],
    [BusinessDaysCalculator::SATURDAY, BusinessDaysCalculator::FRIDAY]
);

$calculator-&gt;addBusinessDays(3); // Add three business days 

var_dump($calculator-&gt;getDate());


In the above example the nonBusinessDays of the week are SATURDAY and FRIDAY, and 1st and 2nd of June are holidays. In that case, 3 business days from now is June 5th.

This can probably be improved further, let your imagination run wild :P