conformity / http-message
遵循PSR7规范的http-message实现
Requires
- php: >=5.5
- psr/http-message: ~1.0
Requires (Dev)
- fabpot/php-cs-fixer: ~1.10
- phpunit/phpunit: 4.*
Provides
- psr/http-message-implementation: ~1.0.0
This package is not auto-updated.
Last update: 2024-09-14 18:52:51 UTC
README
遵循PSR7规范的http-message实现。
本包提供PSR7规范的简单实现。
其核心是对功能最丰富的psr7实现zend/diactoros的分支。
然而,我们发现该包有些臃肿,没有对cookies的支持(虽然这确实超出了PSR的范围)。
我们感觉包含的服务器虽然功能齐全,但对于一个完全解耦的实现来说并非必需。
因此,我们保留了现有的经过充分测试的代码库,增加了响应cookie支持,通过中间件添加了加密/解密cookie的方式,并移除了服务器和发射器。
其他一切仍以其当前的形式存在,只是命名空间已更改为Conformity\Http\Message
在基础响应类中包含了新的Conformity\Http\Message\Response\Cookie\CookieTrait
,它使用了新的Conformity\Http\Message\Response\Cookie\Cookie
类。
cookie trait提供了一个与PSR7规范兼容的不可变接口,用于headers
<?php namespace Conformity\Http\Message\Response\Cookie; trait CookieTrait { /** * The cookies added to the response * @var array */ protected $cookies = []; /** * List of cookie names to make lookups faster * @var array */ protected $cookieNames = []; /** * Add a cookie header to the response * * No need to have more classes for this, simply alter the headers to include the Set-Cookie: header. * * @param mixed $name string or Cookie instance * @param null $value * @param null $expires * @param null $path * @param null $domain * @param bool|false $secure * @param bool|false $httpOnly * * @return Response new instance */ public function withCookie($cookie, $value = '', $expires = null, $path = '/', $domain = null, $secure = false, $httpOnly = true); /** * Delete a cookie on the clients browser by settings the expires for the cookie in the past. * * @param $name * @return Response new instance */ public function withoutCookie($name); /** * Check if the response has the cookie by name * * @param $name * @return bool */ public function hasCookie($name); /** * get the cookie to modify and return * * @param $name * @return mixed null or Cookie instance */ public function getCookie($name); /** * Return all cookies on the response * * @return array */ public function getCookies(); }
此trait也可以用于任何遵循PSR7规范的反应。
我们还包含了一个简单的中间件,它可以解密请求cookie并加密响应cookie。
这是通过创建带有两个参数的中间件实例来完成的
````$middleware = new \Conformity\Http\Message\Middleware\EncryptCookies(Conformity\Http\Message\CookieEncrypterInterface $encrypter, $except = ['names', 'of', 'cookies', 'to', 'ignore']);```
CookieEncrypterInterface有两个简单的方法:encrypt($value);
decrypt($value);
。
简单地创建一个实现此接口的类,并将其作为第一个参数传递给中间件。
这里有一个包含的Base64CookieEncoder
实现,但这更多的是作为一个示例和测试,而不是一个生产就绪的加密器(base64_encode不够安全)。
创建后,只需将您的中间件实例传递给您的中间件运行器,它就会开始保护您的cookie(除了在第二个中间件构造函数参数中提供的cookie之外)。