wookieb / type-check
以面向对象方式检查数据类型
0.2
2013-09-13 21:34 UTC
Requires
- wookieb/assert: 0.*
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-23 14:59:55 UTC
README
注意!此库不是is_*函数和其他类型检查函数的替代品!
使用场景
- 验证器的类型约束
- 容器、映射的类型定义 https://github.com/wookieb/map
安装
通过composer
"require": { "wookieb/type-check": "0.*" }
用法
use Wookieb\TypeCheck\SimpleTypeCheck; use Wookieb\TypeCheck\ObjectTypeCheck; use Wookieb\TypeCheck\MultipleTypesCheck; $string = new SimpleTypeCheck('string'); // accepts only string $exceptions = new ObjectTypeCheck('\Exception'); // accepts every object that is instance of \Exception $onlyPureExceptions = new ObjectTypeCheck('\Exception', true); // accepts only \Exception objects (not children) $multi = new MultipleTypesCheck($string, $exceptions); $string->isValidType('foo'); // true $string->isValidType(true); // false echo $string->getTypeDescription(); // strings $exceptions->isValidType(new \InvalidArgumentException('foo')); // true $exceptions->isValidType(null); // false echo $exceptions->getTypeDescription(); // instances of Exception $onlyPureExceptions->isValidType(new \Exception('foo')); // true $onlyPureExceptions->isValidType(new \InvalidArgumentException('foo')); // false echo $onlyPureExceptions->getTypeDescription(); // objects of class Exception $multi->isValidType(new \InvalidArgumentException('foo')); // true $multi->isValidType('foo'); // true $multi->isValidType(array()); // false echo $multi->getTypeDescription(); // strings, instances of Exception
内存使用
对于常见数据类型,您不必总是创建SimpleTypeCheck的对象。相反,您可以为每种基本类型使用一个单例实例。
TypeCheck::strings(); TypeCheck::integers(); TypeCheck::floats(); TypeCheck::objects(); TypeCheck::booleans(); TypeCheck::arrays(); TypeCheck::resources();
其他类型检查
TraversableOf
允许检查可遍历(数组或\Traversable接口实例)元素的类型
use Wookieb\TypeCheck\TraversableOf; use Wookieb\TypeCheck\TypeCheck; $check = new TraversableOf(TypeCheck::strings()); $check->isValidType(array(1, 'foo', 3)); // false $check->isValidType(array('foo', 'bar', 'zee')); // true echo $check->getTypeDescription(); // traversable structures that contains strings
CallbackTypeCheck
使用回调作为验证函数
use Wookieb\TypeCheck\CallbackTypeCheck; $check = new CallbackTypeCheck(function ($value) { return is_array($value) && reset($value) === 'foo'; }, 'arrays with foo string'); $check->isValidType(array('bar')); // false $check->isValidType(array('foo')); // true echo $check->getTypeDescription(); // arrays with foo string
AllChecks
值必须通过所有定义的类型检查
use Wookieb\TypeCheck\TraversableOf; use Wookieb\TypeCheck\TypeCheck; use Wookieb\TypeCheck\AllChecks; // narrow the field of "traversable" data types to arrays $check = new AllChecks(TypeCheck::arrays(), new TraversableOf(TypeCheck::strings())); $check->isValidType(new ArrayIterator(array('foo', 'bar'))); // false $check->isValidType(array('foo', 'bar')); // true echo $check->getTypeDescription(); // arrays traversable structures that contains strings
变更日志
0.2
- 添加了AllChecks, CallbackTypeCheck, TraversableOf