public static function has($array, $key, $delimiter = '.')
    {
        $nodes = static::getPathNodes($key, $delimiter);

        if (empty($nodes)) {
            return false;
        }

        $dataTmp = $array;

        foreach ($nodes as $arg) {
            if (is_object($dataTmp) && property_exists($dataTmp, $arg)) {
                // Check object value exists
                $dataTmp = $dataTmp->$arg;
            } elseif ($dataTmp instanceof \ArrayAccess && isset($dataTmp[$arg])) {
                // Check arrayAccess value exists
                $dataTmp = $dataTmp[$arg];
            } elseif (is_array($dataTmp) && array_key_exists($arg, $dataTmp)) {
                // Check object value exists
                $dataTmp = $dataTmp[$arg];
            } else {
                return false;
            }
        }

        return true;
    }