awonderphp/fileresource

用于网页中嵌入的资源(图像、脚本等)的抽象类

1.0.0 2018-03-14 20:21 UTC

This package is not auto-updated.

Last update: 2024-09-20 21:36:06 UTC


README

用于网页中嵌入的资源(图像、脚本等)的抽象类

此包旨在提供一个标准方式,让Web应用可以将网页中嵌入的资源作为对象处理。

将资源作为对象处理的优势在于,它们可以同时具有属性和方法,这些方法可以使用这些属性和/或参数执行操作。

此包还包括一个抽象类,用于使用PHP通过FileResource对象描述的资源提供服务。

安装包

您可以使用以下命令安装此类:composer require awonderphp/fileresource:^1.0

类属性

以下属性由抽象类定义

  • protected $mime = null;
    当客户端请求文件时应使用的MIME类型。

  • protected $checksum = null;
    用于计算校验和摘要的算法,后跟冒号,后跟校验和摘要的十六进制或base64表示形式。建议使用浏览器必须支持的SHA-2算法之一,用于与integrity属性一起使用。

  • protected $validIntegrityAlgo = array('sha256', 'sha384', 'sha512');
    支持integrity属性的所有网络浏览器的算法。

  • protected $filepath = null;
    本地服务器上文件的完整路径。请注意,当对象描述的文件不在本地文件系统上时,此属性应保持为null

  • protected $crossorigin = null;
    当创建引用资源的(X)HTML节点时应使用的crossorigin属性的值。

  • $validCrossOrigin = array('anonymous', 'use-credentials');
    可以与crossorigin属性一起使用的有效选项。

  • protected $lastmod = null;
    文件最后修改的时间,使用ISO 8601格式Y-m-d\TH:i:sO,在PHP中可以表示为date('c')。这不一定要与本地文件系统上的文件时间戳匹配,这通常不准确。

  • protected $urlscheme = null;
    应该是nullhttphttps之一。在创建嵌入资源的srchref属性时应使用的方案。当资源将从与提供网页相同的服务器提供时,应为此null

  • protected $urlhost = null;
    应该是null或创建嵌入资源的srchref属性时应使用的域名。当资源将从与提供网页相同的服务器提供时,应为此null

  • protected $urlpath = null;
    在创建嵌入资源的srchref属性时应使用的服务器上资源的路径。

  • protected $urlquery = null;
    如果需要URL查询(URL中?后面的部分),则在构造嵌入资源的srchref属性时应附加到URL末尾的查询。

关于类属性的说明

对于许多文件,需要额外的属性才能在网页中充分嵌入资源(例如图像的alt标签和可能的caption

这个抽象类旨在定义嵌入网页中资源所需的大部分属性,以及PHP包装器正确服务文件所需的所有属性。

四个url*属性与PHP函数parse_url对应,以下省略了以下内容:

  • 端口号
    仅适用于资源为远程的情况,在这种情况下应首选HTTPS,并且仅应使用HTTPS的默认端口443。

  • 用户
    不是嵌入网页中资源的URL的适当组件。

  • 密码
    不是嵌入网页中资源的URL的适当组件。

  • 片段
    不是嵌入网页中资源的URL的适当组件。

类方法

抽象类定义了以下方法:

  • public function getMimeType()
    返回$mime属性。

  • public function getChecksum()
    返回$checksum属性。

  • public function getCrossOrigin()
    返回$crossorigin属性。

  • public function getFilePath()
    返回$filepath属性。

  • public function validateFile()
    如果$checksum属性已设置且$filepath属性已设置且文件存在,如果文件与校验和匹配则返回true,否则返回false

  • public function getSrcAttribute($prefix = null)
    构建嵌入网页中所需的srchref属性的值。请注意,如果$urlscheme属性为http并且文件没有使用$validIntegrityAlgo属性中的算法的$checksum属性,则将返回null。可选参数$prefix是放置在$urlpath属性之前的一个文件系统路径,这对于使用包装器服务文件的Web应用程序很有用。

  • public function getIntegrityAttribute()
    如果$checksum属性使用合适的算法,构建integrity属性的值。

  • public function getTimestamp()
    如果$lastmode属性不为null,则返回UNIX时间戳(自UNIX纪元以来的秒数)。

FileWrapper类

这是一个扩展了我的\AWonderPHP\FileWrapper\FileWrapper类的类。这个类是为了编写一个下载包装器而编写的,包括对客户端缓存验证和部分内容请求的支持。

但是,该类使用文件系统上的文件的最后修改时间戳作为Last-Modified头,并使用文件系统上的文件的inode生成ETag头。

扩展的类允许修改时间戳和ETag独立于文件系统上的文件来设置。

ResourceServer类

这是一个提供基于FileResource对象的公共方法来服务文件的抽象类。

想法是通过添加一个构造方法来扩展类,该方法构建必要的FileResource对象,然后服务它。

GenericFileResource类

这是一个非常通用的类,它扩展了FileResource抽象类。它存在是为了便于对抽象类中的公共方法进行单元测试,但它也可以用于Web应用程序。

__construct函数接受一个参数,即一个key => value对的数组,其中key对应于您希望设置的FileResource属性。

单元测试

使用PHPUnit版本7进行单元测试。结果可以在文件UnitTestResults.txt中查看。

EOF