dozer111/type_checker

使用更少的代码检查变量类型

2.1 2020-05-09 21:11 UTC

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()