php - Symfony 服务工厂正常失败的正确方法是什么?
问题描述
Symfony 的服务工厂文档解释了如何允许服务容器使用工厂实例化服务,但没有解释当创建失败时推荐的最佳实践是什么,即当服务由于某种原因不可用时。
例如; 想象一个 Redis 内存缓存服务。在工厂类中,您有一个将实例化并返回 Redis 客户端对象的方法;
public function createRedisClient() {
$redis = new \Redis();
$connectionResult = $redis->connect($host, $port);
return $redis;
}
如果 Redis 服务器暂时不可用,并且我希望能够优雅地回退到另一个解决方案来存储我们拥有的任何数据,工厂应该返回null
,抛出某种特定类型的异常,还是根本不关心可用性?
解决方案
您可以使用 PHP 的is_object方法:
public function createRedisClient() {
$redis = new \Redis();
$connectionResult = $redis->connect($host, $port);
if (!is_object($redis)) {
return false;
}
return $redis;
}
返回值:
如果 var 是一个对象,则返回TRUE,否则返回 FALSE。
推荐阅读
- ionic-framework - 浏览器 - 无法 XHR config.xml:未找到
- c++ - gtkmm:什么是 Glib::RefPtr 用例?
- c# - DataTable.Compute 使用什么比较器?
- python - 如何以正确的方式在 python 中使用 pathlib 排除路径目录中的文件?
- unix - 将 man 重定向到与控制台中的文本不同的文件
- groovy - 用 spock 测试 void 简单方法
- java - Spring websocket连接在网络断开时关闭
- google-sheets - 如何获取单元格的索引值以引用工作表
- latex - 在 bookdown PDF 中更改 *Chapter X* 名称
- architecture - 我应该有多个 GraphQL 实例还是只有一个?