本来想在构造方法中加一个初始化值的确认,这样每个方法都必须加一个if
判断,我临时想到一个方法:
新建一个类,然后在新建类中使用__call
或者__callStatic
来调用其不存在的方法,然后在其中做统一的判断:
namespace Models\Activity; use Tool\RedisKeyManager; class WebinarService { const MAX_FAIL_TIME = 10; // 数据上报最大次数 /** * 所有接口全部都统一检测活动平台健康状态 * * @param $method * @param $args * @return mixed */ public static function __callStatic($method, $args) { if (self::getServiceStatus()) { $class = __NAMESPACE__."\\ActivityService"; if (method_exists($class, $method)) { return call_user_func_array(array($class, $method), $args); } } return null; } private static function getServiceStatus() { $key = RedisKeyManager::get("webinarServiceStatus"); $redis = ObjectFinder::find('RedisProxy')->getRedis(); $count = $redis->get($key); if ($count && $count >= self::MAX_FAIL_TIME){ return false; } return true; } }
但是觉得把简单的事情弄复杂了,不知道是好是坏。