static function register(iFilterStream $filter, $label = null)
    {
        $name = $filter->getLabel();

        if (self::has($name))
            throw new \Exception(sprintf(
                'Filter "%s" is registered, and cant be overwritten.',
                $name
            ));

        if (stream_filter_register($name, get_class($filter)) === false)
            throw new \Exception(sprintf(
                'Error On Registering "%s" Filter.',
                $name
            ));

        self::$filters[$name] = $filter;
    }