膜 / 膜
0.8.0
2024-04-25 16:02 UTC
Requires
- php: ^8.1.0
- cebe/php-openapi: ^1.7
- membrane/openapi-reader: ^2.0.0
- membrane/openapi-router: ^0.4.0
- psr/http-message: ^1.0 || ^2.0
- psr/log: ^2.0 || ^3.0
- symfony/console: ^6.2
Requires (Dev)
- guzzlehttp/psr7: ^2.4
- mikey179/vfsstream: ^1.6.7
- phpstan/phpstan: ^1.10.19
- phpunit/phpunit: ^10.1
- squizlabs/php_codesniffer: ^3.7
README
Membrane是一个轻量级的输入验证层,可以用来回答“这个输入是否可以处理?”的问题。其目的是接收“原始”用户输入,并生成一个清理后、完全验证的对象或数组来表示这些数据,这样其他的应用程序可以放心使用。
它不是一个功能齐全的验证库,而是专注于确保接收到的数据看起来正确,通过关注数据类型、范围和格式。
以这个为例,膜可以用来验证提交编辑博客文章请求的用户是否有
- 一个大于零的整数id;
- 一个长度在10到80个字符之间的字符串标题;
- 一个至少25个字符长的字符串正文;
- 一个不超过5个字符串标签的列表,每个标签的长度在3到15个字符之间。
但是,它不应该用来验证
- 博客文章已经存在;
- 用户是否有编辑博客文章的权限;
- 博客文章尚未发布,因此仍然可以编辑。
这些都是应该由单独的一层处理的业务规则。
Membrane通常是你位于Web请求和应用程序之间的第一道防线,因此我做出了这样的设计决策:Membrane将绝不因为用户数据有问题而抛出异常。异常只会在开发者设置Membrane错误时抛出。因此,在验证用户输入时,即使输入是垃圾,你也会始终得到一个结果对象。