是否有一种干净的方法来确定当前的Cache引擎是否支持tags
Laravel?我们依赖于需要tags
支持的开源模块/ ServiceProvider,我想确保我们的系统是防弹的,这样切换缓存引擎不会导致致命的错误.
现在,如果用户的系统配置了文件或数据库缓存引擎,则使用以下代码
Cache::tags([]);
Run Code Online (Sandbox Code Playgroud)
抛出错误
Illuminate\Cache\FileStore
没有方法tags
如果用户的系统配置了memcached或redis之类的代码,则代码可以正常运行.
有没有办法干净地检测当前配置的缓存引擎是否支持标签?我能想到的最好的是
$app = app();
$has_tags = method_exists($app['cache']->driver()->getStore(), 'tags');
Run Code Online (Sandbox Code Playgroud)
但是,如果cache
配置了服务,并且缓存服务使用"驱动程序",驱动程序用户"存储",并且该tags
方法不存在其他目的,则会对w/r/t做出很多假设.
我也考虑过Cache::get
在try/catch中包含调用,但后来我依赖Laravel的"为PHP错误抛出异常"行为在未来版本中不会改变.
有一个明显的解决方案我错过了吗?