0%

PSR学习笔记

PSR笔记

PSR 是 PHP Standard Recommendations (PHP 推荐标准)的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。

1. PSR-0(弃用)

2. PSR-1(编码风格)

  1. 使用PSR-4规范自动加载规范,命名空间
  2. 类名使用大坨峰
  3. 类中的常量使用全大写,下划线
  4. 方法名使用小驼峰

3. PSR-2(编码风格)

  1. 每个namespace和use块后空一行
  2. 花括号自成一行
  3. 控制结构的”{}” ,写在同一行
  4. true,false,null必须小写
  5. “()”前后不能有空格
  6. “}” 和 “(“ 中间有空格

4. PSR-3(日志规范)

  1. LoggerInterface 定义了8个等级的日志
  2. Psr\Log\LoggerInterface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php

namespace Psr\Log;

/**
* 描述一个日志记录器实例
*
* 该消息必须实现一个__toString()的字符串或者对象.
*
* 该消息可能包含以下形式的占位符: {foo}
* foo 将会被关键词 "foo"中的上下文数据替换.
*
* 上下文数组可以包含任意数据, 我们只能假设代码实现者
* 如果给出一个生成堆栈跟踪的异常实例, 那么它的键名
* 必须为 "exception"。
*
* 请前往 https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
* 查看完整的接口规范.
*/
interface LoggerInterface
{
/**
* 系统无法使用。
*
* @param string $message
* @param array $context
* @return void
*/
public function emergency($message, array $context = array());

/**
* 必须立即采取行动。
*
* 例如: 整个网站宕机了,数据库挂了,等等。 这应该
* 发送短信通知警告你.
*
* @param string $message
* @param array $context
* @return void
*/
public function alert($message, array $context = array());

/**
* 临界条件。
*
* 例如: 应用组件不可用,意外的异常。
*
* @param string $message
* @param array $context
* @return void
*/
public function critical($message, array $context = array());

/**
* 运行时错误不需要马上处理,
* 但通常应该被记录和监控。
*
* @param string $message
* @param array $context
* @return void
*/
public function error($message, array $context = array());

/**
* 例外事件不是错误。
*
* 例如: 使用过时的API,API使用不当,不合理的东西不一定是错误。
*
* @param string $message
* @param array $context
* @return void
*/
public function warning($message, array $context = array());

/**
* 正常但重要的事件.
*
* @param string $message
* @param array $context
* @return void
*/
public function notice($message, array $context = array());

/**
* 有趣的事件.
*
* 例如: 用户登录,SQL日志。
*
* @param string $message
* @param array $context
* @return void
*/
public function info($message, array $context = array());

/**
* 详细的调试信息。
*
* @param string $message
* @param array $context
* @return void
*/
public function debug($message, array $context = array());

/**
* 可任意级别记录日志。
*
* @param mixed $level
* @param string $message
* @param array $context
* @return void
*/
public function log($level, $message, array $context = array());
}

5. PSR-4(自动加载)

  1. 必须拥有一个顶级命名空间,可以有几个子命名空间
  2. 必须有一个类名
  3. 区分大小写

6. PSR-5(未通过)

7.PSR-6(缓存接口规范)

  1. Psr\Cache\CacheItemInterface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php

namespace Psr\Cache;

/**
* CacheItemInterface 定了缓存系统里对缓存项操作的接口
*/
interface CacheItemInterface
{
/**
* 返回当前缓存项的「键」
*
* 「键」由实现类库来加载,并且高层的调用者(如:CacheItemPoolInterface)
* **应该** 能使用此方法来获取到「键」的信息。
*
* @return string
* 当前缓存项的「键」
*/
public function getKey();

/**
* 凭借此缓存项的「键」从缓存系统里面取出缓存项。
*
* 取出的数据 **必须** 跟使用 `set()` 存进去的数据是一模一样的。
*
* 如果 `isHit()` 返回 false 的话,此方法必须返回 `null`,需要注意的是 `null`
* 本来就是一个合法的缓存数据,所以你 **应该** 使用 `isHit()` 方法来辨别到底是
* "返回 null 数据" 还是 "缓存里没有此数据"
*
* @return mixed
* 此缓存项的「键」对应的「值」,如果找不到的话,返回 `null`
*/
public function get();

/**
* 确认缓存项的检查是否命中。
*
* 注意: 调用此方法和调用 `get()` 时 **一定不可** 有先后顺序之分。
*
* @return bool
* 如果缓冲池里有命中的话,返回 `true`,反之返回 `false`
*/
public function isHit();

/**
* 为此缓存项设置「值」。
*
* 参数 $value 可以是所有能被 PHP 序列化的数据,序列化的逻辑
* 需要在实现类库里书写。
*
* @param mixed $value
* 将被存储的可序列化的数据。
*
* @return static
* 返回当前对象。
*/
public function set($value);

/**
* 设置缓存项的准确过期时间点。
*
* @param \DateTimeInterface|null $expiration
* 过期的准确时间点,过了这个时间点后,缓存项就 **必须** 被认为是过期了的。
* 如果明确的传参 `null` 的话,**可以** 使用一个默认的时间。
* 如果没有设置的话,缓存 **应该** 存储到底层实现的最大允许时间。
*
* @return static
* 返回当前对象
*/
public function expiresAt($expiration);

/**
* 设置缓存项的过期时间
*
* @param int|\DateInterval|null $time
* 以秒为单位的过期时长,过了这段时间后,缓存项就 **必须** 被认为是过期了的。
* 如果明确的传参 `null` 的话,**可以** 使用一个默认的时间。
* 如果没有设置的话,缓存 **应该** 存储到底层实现的最大允许时间。
*
* @return static
* 返回当前对象
*/
public function expiresAfter($time);

}
  1. Psr\Cache\CacheItemPoolInterface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php

namespace Psr\Cache;

/**
* CacheItemPoolInterface 生成 CacheItemInterface 对象
*/
interface CacheItemPoolInterface
{
/**
* 返回「键」对应的一个缓存项。
*
* 此方法 **必须** 返回一个 CacheItemInterface 对象,即使是找不到对应的缓存项
* 也 **一定不可** 返回 `null`。
*
* @param string $key
* 用来搜索缓存项的「键」。
*
* @throws InvalidArgumentException
* 如果 $key 不是合法的值,\Psr\Cache\InvalidArgumentException 异常会被抛出。
*
* @return CacheItemInterface
* 对应的缓存项。
*/
public function getItem($key);

/**
* 返回一个可供遍历的缓存项集合。
*
* @param string[] $keys
* 由一个或者多个「键」组成的数组。
*
* @throws InvalidArgumentException
* 如果 $keys 里面有哪个「键」不是合法,\Psr\Cache\InvalidArgumentException 异常
* 会被抛出。
*
* @return array|\Traversable
* 返回一个可供遍历的缓存项集合,集合里每个元素的标识符由「键」组成,即使即使是找不到对的缓存项,也要返回一个「CacheItemInterface」对象到对应的「键」中。
* 如果传参的数组为空,也需要返回一个空的可遍历的集合。
*/
public function getItems(array $keys = array());

/**
* 检查缓存系统中是否有「键」对应的缓存项。
*
* 注意: 此方法应该调用 `CacheItemInterface::isHit()` 来做检查操作,而不是 `CacheItemInterface::get()`
*
* @param string $key
* 用来搜索缓存项的「键」。
*
* @throws InvalidArgumentException
* 如果 $key 不是合法的值,\Psr\Cache\InvalidArgumentException 异常会被抛出。
*
* @return bool
* 如果存在「键」对应的缓存项即返回 true,否则 false
*/
public function hasItem($key);

/**
* 清空缓冲池
*
* @return bool
* 成功返回 true,有错误发生返回 false
*/
public function clear();

/**
* 从缓冲池里移除某个缓存项
*
* @param string $key
* 用来搜索缓存项的「键」。
*
* @throws InvalidArgumentException
* 如果 $key 不是合法的值,\Psr\Cache\InvalidArgumentException 异常会被抛出。
*
* @return bool
* 成功返回 true,有错误发生返回 false
*/
public function deleteItem($key);

/**
* 从缓冲池里移除多个缓存项
*
* @param string[] $keys
* 由一个或者多个「键」组成的数组。
*
* @throws InvalidArgumentException
* 如果 $keys 里面有哪个「键」不是合法,\Psr\Cache\InvalidArgumentException 异常会被抛出。
*
* @return bool
* 成功返回 true,有错误发生返回 false
*/
public function deleteItems(array $keys);

/**
* 立刻为「CacheItemInterface」对象做数据持久化。
*
* @param CacheItemInterface $item
* 将要被存储的缓存项
*
* @return bool
* 成功返回 true,有错误发生返回 false
*/
public function save(CacheItemInterface $item);

/**
* 稍后为「CacheItemInterface」对象做数据持久化。
*
* @param CacheItemInterface $item
* 将要被存储的缓存项
*
* @return bool
* 成功返回 true,有错误发生返回 false
*/
public function saveDeferred(CacheItemInterface $item);

/**
* 提交所有的正在队列里等待的请求到数据持久层,配合 `saveDeferred()` 使用
*
* @return bool
* 成功返回 true,有错误发生返回 false
*/
public function commit();
}

8. PSR-7 (HTTP消息接口规范)

  1. RequestInterface 和ResponseInterface都继承于MessageInterface
  2. Psr\Http\Message\RequestInterface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
namespace Psr\Http\Message;

/**
* 代表客户端向服务器发起请求的 HTTP 消息对象。
*
* 根据 HTTP 规范,此接口包含以下属性:
*
* - HTTP 协议版本号
* - HTTP 请求方法
* - URI
* - 报头信息
* - 消息内容
*
* 在构造 HTTP 请求对象的时候,如果没有提供 Host 信息,
* 实现类库 **必须** 从给出的 URI 中去提取 Host 信息。
*
* HTTP 请求是被视为无法修改的,所有能修改状态的方法,都 **必须** 有一套机制,在内部保
* 持好原有的内容,然后把修改状态后的新的 HTTP 请求实例返回。
*/
interface RequestInterface extends MessageInterface
{
/**
* 获取消息的请求目标。
*
* 获取消息的请求目标的使用场景,可能是在客户端,也可能是在服务器端,也可能是在指定信息的时候
* (参阅下方的 `withRequestTarget()`)。
*
* 在大部分情况下,此方法会返回组合 URI 的原始形式,除非被指定过(参阅下方的 `withRequestTarget()`)。
*
* 如果没有可用的 URI,并且没有设置过请求目标,此方法 **必须** 返回 「/」。
*
* @return string
*/
public function getRequestTarget();

/**
* 返回一个指定目标的请求实例。
*
* 如果请求需要非原始形式的请求目标——例如指定绝对形式、认证形式或星号形式——则此方法
* 可用于创建指定请求目标的实例。
*
* 此方法在实现的时候,**必须** 保留原有的不可修改的 HTTP 请求实例,然后返回
* 一个新的修改过的 HTTP 请求实例。
*
* @see [http://tools.ietf.org/html/rfc7230#section-2.7](http://tools.ietf.org/html/rfc7230#section-2.7)
* (关于请求目标的各种允许的格式)
*
* @param mixed $requestTarget
* @return self
*/
public function withRequestTarget($requestTarget);

/**
* 获取当前请求使用的 HTTP 方法
*
* @return string HTTP 方法字符串
*/
public function getMethod();

/**
* 返回更改了请求方法的消息实例。
*
* 虽然,在大部分情况下,HTTP 请求方法都是使用大写字母来标示的,但是,实现类库 **不应该**
* 修改用户传参的大小格式。
*
* 此方法在实现的时候,**必须** 保留原有的不可修改的 HTTP 请求实例,然后返回
* 一个新的修改过的 HTTP 请求实例。
*
* @param string $method 大小写敏感的方法名
* @return self
* @throws \InvalidArgumentException 当非法的 HTTP 方法名传入时会抛出异常。
*/
public function withMethod($method);

/**
* 获取 URI 实例。
*
* 此方法 **必须** 返回 `UriInterface` 的 URI 实例。
*
* @see http://tools.ietf.org/html/rfc3986#section-4.3
* @return UriInterface 返回与当前请求相关的 `UriInterface` 类型的 URI 实例。
*/
public function getUri();

/**
* 返回修改了 URI 的消息实例。
*
* 当传入的 URI 包含有 HOST 信息时,此方法 **必须** 更新 HOST 信息。如果 URI
* 实例没有附带 HOST 信息,任何之前存在的 HOST 信息 **必须** 作为候补,应用
* 更改到返回的消息实例里。
*
* 你可以通过传入第二个参数来,来干预方法的处理,当 `$preserveHost` 设置为 `true`
* 的时候,会保留原来的 HOST 信息。当 `$preserveHost` 设置为 `true` 时,此方法
* 会如下处理 HOST 信息:
*
* - 如果 HOST 信息不存在或为空,并且新 URI 包含 HOST 信息,则此方法 **必须** 更新返回请求中的 HOST 信息。
* - 如果 HOST 信息不存在或为空,并且新 URI 不包含 HOST 信息,则此方法 **不得** 更新返回请求中的 HOST 信息。
* - 如果HOST 信息存在且不为空,则此方法 **不得** 更新返回请求中的 HOST 信息。
*
* 此方法在实现的时候,**必须** 保留原有的不可修改的 HTTP 请求实例,然后返回
* 一个新的修改过的 HTTP 请求实例。
*
* @see http://tools.ietf.org/html/rfc3986#section-4.3
* @param UriInterface $uri `UriInterface` 新的 URI 实例
* @param bool $preserveHost 是否保留原有的 HOST 头信息
* @return self
*/
public function withUri(UriInterface $uri, $preserveHost = false);
}
  1. Psr\Http\Message\ResponseInterface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
namespace Psr\Http\Message;

/**
* 表示服务器返回的响应消息。
*
* 根据 HTTP 规范,此接口包含以下各项的属性:
*
* - 协议版本
* - 状态码和原因短语
* - 报头
* - 消息体
*
* HTTP 响应是被视为无法修改的,所有能修改状态的方法,都 **必须** 有一套机制,在内部保
* 持好原有的内容,然后把修改状态后的,新的 HTTP 响应实例返回。
*/
interface ResponseInterface extends MessageInterface
{
/**
* 获取响应状态码。
*
* 状态码是一个三位整数,用于理解请求。
*
* @return int 状态码。
*/
public function getStatusCode();

/**
* 返回具有指定状态码和原因短语(可选)的实例。
*
* 如果未指定原因短语,实现代码 **可能** 选择 RFC7231 或 IANA 为状态码推荐的原因短语。
*
* 此方法在实现的时候,**必须** 保留原有的不可修改的 HTTP 消息实例,然后返回
* 一个新的修改过的 HTTP 消息实例。
*
* @see http://tools.ietf.org/html/rfc7231#section-6
* @see http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
* @param int $code 三位整数的状态码。
* @param string $reasonPhrase 为状态码提供的原因短语;如果未提供,实现代码可以使用 HTTP 规范建议的默认代码。
* @return self
* @throws \InvalidArgumentException 如果传入无效的状态码,则抛出。
*/
public function withStatus($code, $reasonPhrase = '');

/**
* 获取与响应状态码关联的响应原因短语。
*
* 因为原因短语不是响应状态行中的必需元素,所以原因短语 **可能** 是空。
* 实现代码可以选择返回响应的状态代码的默认 RFC 7231 推荐原因短语(或 IANA HTTP 状态码注册表中列出的原因短语)。
*
* @see http://tools.ietf.org/html/rfc7231#section-6
* @see http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
* @return string 原因短语;如果不存在,则 **必须** 返回空字符串。
*/
public function getReasonPhrase();
}

9. PSR-8 到PSR-10 未通过

10. PSR-11 (容器接口)

设定 ContainerInterface 的目的是为了标准化框架或类库如何使用容器来获取对象和参数。

  1. Psr\Container\ContainerInterface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
namespace Psr\Container;

/**
* 容器的接口类,提供了获取容器中对象的方法。
*/
interface ContainerInterface
{
/**
* 在容器中查找并返回实体标识符对应的对象。
*
* @param string $id 查找的实体标识符字符串。
*
* @throws NotFoundExceptionInterface 容器中没有实体标识符对应对象时抛出的异常。
* @throws ContainerExceptionInterface 查找对象过程中发生了其他错误时抛出的异常。
*
* @return mixed 查找到的对象。
*/
public function get($id);

/**
* 如果容器内有标识符对应的内容时,返回 true 。
* 否则,返回 false。
*
* 调用 `has($id)` 方法返回 true,并不意味调用 `get($id)` 不会抛出异常。
* 而只意味着 `get($id)` 方法不会抛出 `NotFoundExceptionInterface` 实现类的异常。
*
* @param string $id 查找的实体标识符字符串。
*
* @return bool
*/
public function has($id);
}

11. PSR-15 (HTTP请求处理器)

主要用于描述抽象的请求处理器和中间件

  1. Psr\Http\Server\RequestHandlerInterface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
namespace Psr\Http\Server;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

/**
* 处理服务器请求并返回响应
*
* HTTP 请求处理程序处理 HTTP 请求,以便生成 HTTP 相应。
*/
interface RequestHandlerInterface
{
/**
* 处理服务器请求并返回响应
*
* 可以调用其他协助代码来生成响应。
*/
public function handle(ServerRequestInterface $request): ResponseInterface;
}
  1. Psr\Http\Server\MiddlewareInterface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
namespace Psr\Http\Server;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

/**
* 参与处理服务器的请求与响应
*
* 一个 HTTP 中间件组件参与处理一个 HTTP 的消息:
* 通过对请求进行操作, 生成相应,或者将请求转发给后续的中间件,并 且可能对它的响应进行操作
*
*/
interface MiddlewareInterface
{
/**
* 处理一个传入的请求
*
* 处理传入的服务器请求以产生相应.
* 如果无法生成响应本身,它可能会委托给提供的请求处理程序来执行此操作
*
*/
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface;
}

12. PSR-16(更简单的缓存接口)

  1. Psr\SimpleCache\CacheInterface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php

namespace Psr\SimpleCache;

interface CacheInterface
{
/**
* 从缓存中取出值
*
* @param string $key 该项在缓存中唯一的key值
* @param mixed $default key不存在时,返回的默认值
*
* @return mixed 从缓存中返回的值,或者是不存在时的默认值
*
* @throws \Psr\SimpleCache\InvalidArgumentException
* 如果给定的key不是一个合法的字符串时,抛出该异常
*/
public function get($key, $default = null);

/**
* 存储值在cache中,唯一关键到一个key及一个可选的存在时间
*
* @param string $key 存储项目的key.
* @param mixed $value 存储的值,必须可以被序列化的
* @param null|int|\DateInterval $ttl 可选项.项目的存在时间,如果该值没有设置,且驱动支持生存时间时,将设置一个默认值,或者驱自行处理。
*
* @return bool true 存储成功 false 存储失败
*
* @throws \Psr\SimpleCache\InvalidArgumentException
* 如果给定的key不是一个合法的字符串时,抛出该异常。
*/
public function set($key, $value, $ttl = null);

/**
* 删除指定键值的缓存项
*
* @param string $key 指定的唯一缓存key对应的项目将会被删除
*
* @return bool 成功删除时返回ture,有其它错误时时返回false
*
* @throws \Psr\SimpleCache\InvalidArgumentException
* 如果给定的key不是一个合法的字符串时,抛出该异常。
*/
public function delete($key);

/**
* 清除所有缓存中的key
*
* @return bool 成功返回True.失败返回False
*/
public function clear();

/**
* 根据指定的缓存键值列表获取得多个缓存项目
*
* @param iterable $keys 在单次操作中可被获取的键值项
* @param mixed $default 如果key不存在时,返回的默认值
*
* @return iterable 返回键值对(key=>value形式)列表。如果key不存在,或者已经过期时,返回默认值。
*
* @throws \Psr\SimpleCache\InvalidArgumentException
* 如果给定的keys既不是合法的数组,也不可以被转成数组,或者给得的任何一个key不是一个合法的值时,拖出该异常。
*/
public function getMultiple($keys, $default = null);

/**
* 存储一个键值对形式的集合到缓存中。
*
* @param iterable $values 一系列操作的键值对列表
* @param null|int|\DateInterval $ttl 可选项.项目的存在时间,如果该值没有设置,且驱动支持生存时间时,将设置一个默认值,或者驱自行处理。
*
* @return bool 成功返回True.失败返回False.
*
* @throws \Psr\SimpleCache\InvalidArgumentException
* 如果给定的keys既不是合法的数组,也不可以被转成数组,或者给得的任何一个key不是一个合法的值时,拖出该异常.
*/
public function setMultiple($values, $ttl = null);

/**
* 单次操作删除多个缓存项目.
*
* @param iterable $keys 一个基于字符串键列表会被删除
*
* @return bool True 所有项目都成功被删除时回true,有任何错误时返回false
*
* @throws \Psr\SimpleCache\InvalidArgumentException
* 如果给定的keys既不是合法的数组,也不可以被转成数组,或者给得的任何一个key不是一个合法的值时,拖出该异常.
*/
public function deleteMultiple($keys);

/**
* 判断一个项目在缓存中是否存在
*
* 注意: has()方法仅仅在缓存预热的场景被推荐使用且不允许的活跃 * 的应用中场景中对get/set方法使用, 因为方法受竞态条件的限制,当 * 你调用has()方法时会立即返回true。另一个脚本可以删除它,使应 * 用状态过期。
* @param string $key 缓存键值
*
* @return bool
*
* @throws \Psr\SimpleCache\InvalidArgumentException
* 如果给定的key不是一个合法的字符串时,抛出该异常.
*/
public function has($key);
}

13. PSR-17(HTTP工厂)

HTTP 工厂是可以创建由 PSR-7 定义的 HTTP 对象的方法。HTTP 工厂 必须 实现包中提供的所有对象类型。

  1. Psr\Http\Message\RequestFactoryInterface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace Psr\Http\Message;

use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\UriInterface;

interface RequestFactoryInterface
{
/**
* 创建一个新的请求
*
* @param string $method 请求使用的 HTTP 方法。
* @param UriInterface|string $uri 请求关联的 URI。
*/
public function createRequest(string $method, $uri): RequestInterface;
}
  1. Psr\Http\Message\ResponseFactoryInterface

1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace Psr\Http\Message;

use Psr\Http\Message\ResponseInterface;

interface ResponseFactoryInterface
{
/**
* 创建一个响应对象。
*
* @param int $code HTTP 状态码,默认值为 200。
* @param string $reasonPhrase 与状态码关联的原因短语。如果未提供,实现 **可能** 使用 HTTP 规范中建议的值。
*/
public function createResponse(int $code = 200, string $reasonPhrase = ''): ResponseInterface;
}

先写这么多。

Welcome to my other publishing channels