tuum / filemap
适用于各种文件类型的文件映射器。
1.0.0
2016-08-31 01:39 UTC
Requires
- league/commonmark: ^0.12
- league/flysystem: ~1.0
- league/flysystem-cached-adapter: ~1.0
README
一个将路径映射到各种文件类型的文件映射器,例如图像、文本和Markdown文件。
根据给定的路径查找文件,并返回文件资源或内容(字符串)、关联的MIME类型和其他信息。
许可证
MIT许可证
PSR
PSR-1、PSR-2和PSR-4。
用法
$map = Tuum\Locator\FileMap::forge( __DIR__.'/map', // root dir where mapped files exist. __DIR__.'/cache' // give cache dir to convert md files. ); // render the file based on path. $found = $map->render('images/sample.jpg'); if (!$found->found()) { echo 'not found'; } header('Content-Type: '.$found->getMimeType()); if ($fp = $found->getResource()) { fpassthru($fp); } else { echo $found->getContents(); }
render 方法将查找文件,然后返回一个FileInfo对象,该对象具有以下方法:
FileInfo 对象
FileInfor具有以下方法:
FileInfo::found(): bool:如果给定路径存在文件,则返回true。FileInfo::getMimeType(): string|null:返回文件MIME类型。FileInfo::getResource(): resource|null:返回图像等资源的资源。FileInfo::getContents(): string:返回文本文件的内容。如果提供了资源,此方法返回文件资源的内容。
根据文件类型,FileInfo对象可能具有文件资源或字符串形式的文件内容。首先尝试检索文件资源,如果没有找到资源,则检索文件内容。
输出
基于扩展输出
如果以下条件满足,FileMap将作为资源输出文件:
- 路径有扩展名(例如
sample.jpg), - 扩展名在
$map->emit_extension中定义, - 在路径中找到了文件。
以下是一些预定义的扩展和关联的MIME类型列表:
public $emit_extensions = [ 'pdf' => 'application/pdf', 'gif' => 'image/gif', ];
要添加您的扩展,
$map->addEmitExtension('swf', 'application/x-shockwave-Flash');
查看文件内容
如果以下条件满足,FileMap将作为文本输出文件内容:
- 未通过扩展处理输出,
- 存在具有在
$map->view_extensions中定义的扩展名的文件。
要添加用于查看文件的扩展名,
$map->addViewExtension('twig', function(FileInfo $found) use($twig) { $found->setContents($twig->render($found->getLocation())); return $found; }, 'text/html');
以下显示了预定义的扩展和渲染行为。在所有情况下,它返回的MIME类型为text/html。
- .php:将文件评估为PHP。
- .txt、.text:获取内容并将字符串放在
<pre>HTML标签内。 - .md:使用
MarkUp对象将文件转换为HTML。
CommonMark的MarkUp
MarkUp类将common-mark(又名Markdown)文件转换为HTML。构造集是markdown文件的根目录和缓存目录,
用法
$markUp = Tuum\Locator\MarkUp::forge('/path/to/md', '/cache/dir'); $html = $markUp->getHtml('to/mark/down.md');
如果找不到缓存的HTML文件,$markUp将仅将CommonMark转换为HTML。