dozer111 / type_checker
使用更少的代码检查变量类型
2.1
2020-05-09 21:11 UTC
Requires
- php: >7.1
Requires (Dev)
- codeception/codeception: ^4.1
- codeception/module-asserts: ^1.2
- codeception/specify: ^1.2
- codeception/verify: ^1.2
This package is auto-updated.
Last update: 2024-09-29 05:36:18 UTC
README
composer require dozer111/type_checker
创建,为了更好地、更快地检查在命令式风格中的 $yourValue 数据类型
主要思想,当我们不必在长时间的检查(这耗费我们的时间和精力)后编写和读取,我们可以将其更改为一些简单的结构,这将使代码更短且更易于阅读。
库有2种主要方式
- 检查
- hardCheck/guard => 检查,如果为假则抛出异常
TypeChecker::hardCheck($value,[__INTEGER__,__STRING__]); TypeChecker::hardCheckInt($value,[__INTEGER__,__STRING__]); TypeChecker::hardCheckString($value,[__INTEGER__,__STRING__]); // or same, but with synonyms TypeChecker::guard($value,[__INTEGER__,__STRING__]); TypeChecker::guardInt($value,[__INTEGER__,__STRING__]); TypeChecker::guardString($value,[__INTEGER__,__STRING__]);
示例1 => 常规用法
//before $value = '<someYourValue>'; if(is_int($value) || is_string($value)) { doSmth(); } // now $valueHasCorrectType = TypeChecker::check($value,[__INTEGER__,__STRING__]); //======================================================================================================================== //======================================================================================================================== // before if(is_int($value) || is_string($value)) { throw new SomeYourException(); } // now hardCheck or guard TypeChecker::hardCheck($value,[__INTEGER__,__STRING__]); TypeChecker::guard($value,[__INTEGER__,__STRING__]);
示例2 => 可空值
TypeChecker 有自己的类型 TYPE_NULL,您可以使用它。
您还可以使用 nullable 参数,而不是将其添加到 check() 方法中
// add manually TypeChecker::check($value,[__INTEGER__,__STRING__,__NULL__]); // or use nullable mechanism TypeChecker::check($value,[__INTEGER__,__STRING__],true);
这个技巧几乎适用于所有方法
TypeChecker::hardCheckInt($x,true); // null or int TypeChecker::hardCheckInt($x); // int ONLY!
示例3 => 检查对象
- TypeChecker 可以以两种方式检查对象
- 检查值是否仅为
object类型 - 检查对象是否真的是您需要的类型实例
- 检查值是否仅为
// we can check objects in couple of ways: // 1 => using TypeChecker::check TypeChecker::check($value,[__OBJECT__]); TypeChecker::check($value,[YorClassName::class]); // 2 => TypeChecker::checkObject()/TypeChecker::hardCheckObject() TypeChecker::checkObject($value); // will check for `object` type TypeChecker::checkObject($value,YorClassName::class); // will check for `object` && YorClassName types TypeChecker::checkObject($value,YorClassName::class,true); // will check for (`object` && YorClassName) or null types
示例4 => 更改默认的抛出异常
只需扩展类,并重写 throwHardCheckError()