本来想在构造方法中加一个初始化值的确认,这样每个方法都必须加一个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;
}
}
但是觉得把简单的事情弄复杂了,不知道是好是坏。