Overengineering

The problem here should be rather obvious.

    /**
     * strips underscores.
     *
     * @param $value
     *
     * @return mixed
     */
    private function stripUnderscores($value)
    {
        if (preg_match('/_/', $value)) {
            return str_replace('_', '', $value);
        }

        return false;
    }

Granted, nixing the preg_match() isn't really going to make a big difference in performance, but still this is a microcosm of making your code more complex than it needs to be to the point where it is detrimental at some level all while adding zero benefit.