php – 数组和异常

我有一个示例数组:

$array = [
    [
        FirstClass,
        SecondClass,
        ThirdClass,
    ],
    [
        ThirdClass,
        MaxClass
    ],
    [
        FirstClass,
        ThirdClass
    ],
    [
        SecondClass,
        FirstClass,
    ]
];

我想检查MaxClass是否存在,如果有多个则另外抛出错误.

所以我这样做:

foreach ($array as $class) {
    if (get_class($class) == 'MaxClass') {
        //different operations
    }
}

检查我正在添加

$count = 0;
foreach ($array as $class) {
    if (get_class($class) == 'MaxClass') {
        if ($count < 2) {
        //different operations
        } else {
            throw new Exception('Too many MaxClass!');
        }
    }
}

但也许比使用变量$count更好的方法

第二个问题 – 我应该使用什么异常类?也许RuntimeException?

解决方法:

我会用功能方法来做这样的事情:

class ReachedMaxLimitException extends LogicException {}

$count = array_reduce(
    call_user_func_array('array_merge', $array),  // flatten array
    function ($count, $o) { return $count + ($o instanceof MaxClass); }, 
    0
);

if ($count > 1) {
    raise new ReachedMaxLimitException;
}

显然,将理智检查与“//不同的操作”分开,但这也正是重点.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...