knplabs / media-exposer
此包已被废弃,不再维护。未建议替代包。
PHP的媒体路径/源解析库
dev-master
2012-04-24 15:48 UTC
Requires
- php: >=5.3.2
Suggests
This package is auto-updated.
Last update: 2022-09-23 13:38:06 UTC
README
Media Exposer 是一个PHP (5.3+) 库,它帮助您将媒体文件暴露给您的Web应用的客户端。
原理
当您开发一个Web应用时,您总是需要设置一个策略来向客户端提供您的媒体。这正是这个库试图帮助您解决的问题。
Exposer 是库的主要入口点。它负责为给定的媒体和选项返回正确的源或路径。为此,它遍历已注册的解析器以找到支持给定媒体和选项的第一个解析器。源或路径生成被委派给它。因此,当您想要设置一个Exposer时,首先要做的是注册解析器。当您注册一个解析器时,您会为其分配一个优先级。
所有解析器都实现了 Resolver 接口。它们表明它们是否支持给定的媒体和选项。但是,仅此接口还不够,所以适当的解析器还必须实现 SourceResolver 接口或 PathResolver(或两者都实现)。
快速示例
讨论够了,让我们试试。
例如,我们将使用以下简单的图像模型
<?php class FooImage { private $filename; public function getFilename() { return $this->filename; } }
然后,我们创建一个相关的解析器
<?php use MediaExposer\PathResolver, MediaExposer\SourceResolver; class FooImageResolver implements PathResolver, SourceResolver { /** * {@inheritDoc} */ public function supports($media, array $options) { return $media instanceof FooImage; } /** * {@inheritDoc} */ public function getPath($media, array $options) { return '/path/to/the/images/directory/' . $media->getFilename(); } /** * {@inheritDoc} */ public function getSource($media, array $options) { return '/media/foo/' . $media->getFilename(); } /** * {@inheritDoc} */ public function getSourceType($media, array $options) { return SourceResolver::TYPE_RELATIVE; // or SourceResolver::TYPE_ABSOLUTE } }
最后,您可以在您的Exposer中注册它
<?php use MediaExposer\Exposer; $exposer = new Exposer('http://the-host'); $exposer->addResolver(new FooImageResolver(), 10);
第一个 Exposer
的参数称为 $baseUrl
。如果需要生成带有相对 SourceResolver
实例的绝对URL,则此参数是必需的。如果是这样,它将被附加到解析器返回的相对源以将其转换为绝对。