endermanbugzjfc / configstruct
Requires
- php: >=8.0
Requires (Dev)
- kint-php/kint: ^4.1
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2023-01-12 15:46:56 UTC
README
请使用https://github.com/sylvrs/libMarshal代替。
ConfigStruct
数组类型和形状系统。帮助您在实现PocketMine-MP插件或composer项目配置时编写更清晰的代码。
当数据出现问题时,它还会生成更易于阅读的错误信息。鼓励和指导用户(尤其是某些PocketMine-MP服务器所有者)阅读错误并修复其混乱。
https://github.com/Sandertv/Marshal是支持较低PHP版本的替代方案。然而,它并不像这个库那样功能丰富。
每个人都寻找的部分
安装
通过Composer
composer require endermanbugzjfc/configstruct
通过PocketMine-MP病毒感染: https://poggit.pmmp.io/v.dl/Endermanbugzjfc/ConfigStruct/ConfigStruct/%5E2.0.0
预览
解析错误
2 errors in /Users/Shoghi/Documents/shog chips.yml
1 errors in element "a"
1 errors in index "0"
1 errors in element "c"
Element is array while it should be string
1 errors in element "b"
Element is null while it should be bool
请注意存在一个尾随换行符。
开发者指南
解析数据
use Endermanbugzjfc\ConfigStruct\Parse;
$context = Parse::object($object, $data); $context->copyToObject($object, $dataFilePath);
$dataFilePath
如果在错误消息中,将会显示。
当调用copyToObject()
时,错误将用ParseErrorsWrapper包装并抛出。尽管推荐捕获它,但您仍然可以选择忽略它。因为错误仍然可以在PHP未捕获的错误消息中良好显示。
如果您没有对象而是它的ReflectionClass实例,则可以使用Parse::objectByReflection()
。并使用$context->copyToNewObject()
将解析的数据复制到新对象。
自定义错误信息
更改根标题标签
/Users/Shoghi/Documents/shog chips.yml
是以下错误树中的根标题标签
2 errors in /Users/Shoghi/Documents/shog chips.yml
1 errors in element "a"
1 errors in index "0"
1 errors in element "c"
Element is array while it should be string
1 errors in element "b"
Element is null while it should be bool
您可以在ParseErrorsWrapper::regenerateErrorMessage()
的第一个参数中更改它。
$parseErrorsWrapper->regenerateErrorMessage('C:\Windows\System32\ntoskrnl.exe');
更改缩进
您可以在ParseErrorsWrapper::regenerateErrorMessage()
的第二个参数中更改它。
过滤错误
您可以通过过滤来隐藏错误树中的某些错误。使用ParseErrorsWrapper::regenerateErrorMessage()
的第三个参数应用错误过滤器。
$parseErrorsWrapper->regenerateErrorMessage( $parseErrorsWrapper->getRootHeaderLabel(), $parseErrorsWrapper->getIndentation(), fn (array $keys, BaseParseError $parseError) : bool => !$parseError instanceof TypeMismatchError );
此功能将过滤掉所有类型不匹配错误。尽管 $parseError->getErrorsTree()
仍然会包含这些错误,但它们将不会显示在错误信息中。
打印更新后的错误信息
只需再次抛出解析错误包装器即可。或者您可以选择echo $parseErrorsWrapper->getMessage()
。默认情况下,错误信息后面有一个换行符(\n
)。您可以通过调用$parseErrorsWrapper->getMessageRtrim()
来获取不带尾随换行符(以及其他空白字符)的错误信息。