public static function getRfl($obj, $propName, $default = null)
    {
        if (!is_object($obj)) {
            return $default;
        }

        try {
            $prop = new \ReflectionProperty($obj, $propName);
        } catch (\Exception $e) {
            return $default;
        }

        if ($prop->isPublic()) {
            return $obj->$propName;
        } else {
            $prop->setAccessible(true);

            return $prop->getValue($obj);
        }
    }