Skip to content

dflydev/dflydev-apache-mime-types

Repository files navigation

Apache MIME Types

Parses Apache MIME Types files and provides a simple interface to find extensions by type and type by extension.

Build Status

Features

  • Bundles mime.types from the Apache HTTP Project. (see here)
  • Bundles a JSON representation of Apache mime.types.
  • Provides an interface for reading either flat Apache HTTP mime.types or a JSON representation.

Requirements

  • PHP 5.3.3+

Installation

Through Composer as dflydev/apache-mime-types.

Usage

Parser

Parses Apache MIME Types in the format of mime.types found here.

<?php
$parser = new Dflydev\ApacheMimeTypes\Parser;

$map = $parser->parse('/path/to/mime.types');

The return value from parse is an array mapping types to an array of extensions.

<?php
array(
    'text/html' => array('html', 'htm'),
);

PhpRepository

A repository backed by static PHP arrays.

<?php
$repository = new Dflydev\ApacheMimeTypes\PhpRepository;

$type = $repository->findType('html');
$extensions = $repository->findExtensions('text/html');

var_dump($type);
var_dump($extensions);

//
// Result
//
// string(9) "text/html"
// array(2) {
//   [0]=>
//   string(4) "html"
//   [1]=>
//   string(3) "htm"
// }
//

JsonRepository

A repository backed by a JSON map of type to extensions.

{
    "text/html": ["html", "htm"]
}

To use the embedded JSON:

<?php
$repository = new Dflydev\ApacheMimeTypes\JsonRepository;

$type = $repository->findType('html');
$extensions = $repository->findExtensions('text/html');

var_dump($type);
var_dump($extensions);

//
// Result
//
// string(9) "text/html"
// array(2) {
//   [0]=>
//   string(4) "html"
//   [1]=>
//   string(3) "htm"
// }
//

To specify a specific JSON mapping:

<?php
$repository = new Dflydev\ApacheMimeTypes\JsonRepository('/path/to/mime.types.json');

FlatRepository

A repository backed by Apache MIME Types formatted mime.types. To use the embedded mime.types:

<?php
$repository = new Dflydev\ApacheMimeTypes\FlatRepository;

$type = $repository->findType('html');
$extensions = $repository->findExtensions('text/html');

var_dump($type);
var_dump($extensions);

//
// Result
//
// string(9) "text/html"
// array(2) {
//   [0]=>
//   string(4) "html"
//   [1]=>
//   string(3) "htm"
// }
//

To specify a specific mime.types mapping:

<?php
$repository = new Dflydev\ApacheMimeTypes\FlatRepository('/path/to/mime.types');

License

MIT, see LICENSE.

Community

If you have questions or want to help out, join us in the #dflydev channel on irc.freenode.net.

Not Invented Here

This project is based heavily on skyzyx/mimetypes. The major difference is that skyzyx/mimetypes is focussed on creating JSON files from Apache mime.types rather than providing a way to interact with Apache MIME Types as a data source.