getStream(); } if (null === $parameters) { return self::$_resources[$name] = stream_filter_append( $stream, $name, $mode ); } return self::$_resources[$name] = stream_filter_append( $stream, $name, $mode, $parameters ); } /** * Prepend a filter to the list of filters. * * @param mixed $stream Stream which received the filter. * Should be resource or an object * \Hoa\Stream. * @param string $name Filter name. * @param int $mode self::READ, self::WRITE or * self::READ_AND_WRITE. * @param mixed $parameters Parameters. * @return resource */ public static function prepend( $stream, $name, $mode = self::READ, $parameters = null ) { if ($stream instanceof Stream) { $stream = $stream->getStream(); } if (null === $parameters) { return self::$_resources[$name] = stream_filter_prepend( $stream, $name, $mode ); } return self::$_resources[$name] = stream_filter_prepend( $stream, $name, $mode, $parameters ); } /** * Delete a filter. * * @param mixed $streamFilter Stream filter resource or name. * @return bool * @throws \Hoa\Stream\Filter\Exception */ public static function remove($streamFilter) { if (!is_resource($streamFilter)) { if (isset(self::$_resources[$streamFilter])) { $streamFilter = self::$_resources[$streamFilter]; } else { throw new Exception( 'Cannot remove the stream filter %s because no resource was ' . 'found with this name.', 3, $streamFilter ); } } return stream_filter_remove($streamFilter); } /** * Check if a filter is already registered or not. * * @param string $name Filter name. * @return bool */ public static function isRegistered($name) { return in_array($name, self::getRegistered()); } /** * Get all registered filer names. * * @return array */ public static function getRegistered() { return stream_get_filters(); } } /** * Flex entity. */ Consistency::flexEntity('Hoa\Stream\Filter\Filter');