stiggg/asserter

断言库

v0.3 2014-07-20 20:25 UTC

This package is not auto-updated.

Last update: 2020-08-03 06:26:51 UTC


README

"使用断言来记录代码中做出的假设,以及清除意外条件。" --Steve McConnell

此库允许创建和管理通用的断言,可以在您的代码中重用。您可以将 Asserter 组件作为服务使用,或通过调用静态方法创建快速断言。

Asserter 组件可以与 PSR-3 兼容的日志记录器结合使用,在抛出 AssertException 之前记录断言失败。

使用方法

<?php
    use Stiggg\Asserter\Asserter;
    
    ...
    $message = sprintf('number %s was not a prime', $number);

    # use the service to register assertion...
    $asserter = new Asserter($logger);  // logger is optional
    $asserter->register('numberIsPrime', function($num) {
        // http://icdif.com/computing/2011/09/15/check-number-prime-number/
        if($num == 1) return false;
        if($num == 2) return true;
        if($num % 2 == 0) return false;
        for($i = 3; $i <= ceil(sqrt($num)); $i = $i + 2) {
            if($num % $i == 0) return false;
        }
        return true;
    }, $message);
    
    $asserter->assert('numberIsPrime', array(8));

    # ...or call the component directly
    Asserter::callback(function($num) {
        if($num == 1) return false;
        if($num == 2) return true;
        if($num % 2 == 0) return false;
        for($i = 3; $i <= ceil(sqrt($num)); $i = $i + 2) {
            if($num % $i == 0) return false;
        }
        return true;
     }, array(8), $message);

有两种断言类型用于静态访问,"回调"或"true"。通过"true"断言可以轻松实现特定断言方法(如整数、正则表达式等)。

<?php
    $number = 2;
    Asserter::true(is_numeric($number), $number . ' was not numeric');

    $regexp = '/assert/';
    $haystack = 'assertations are cool';
    Asserter::true(preg_match($regexp, $haystack), sprintf('"%s" did not match regexp "%s"', $haystack, $regexp));

许可证

MIT

版本控制

版本控制支持 semver: http://semver.org/

请参阅 packagist 获取版本详细信息: https://packagist.org.cn/packages/stiggg/asserter