dongnuoyi8833 2017-11-09 19:43
浏览 18
已采纳

在类变量中存储连接

I am wondering how i can store my connection in a class variable and then keep reusing it ? Right now my code looks like this

This function sets up my Connection right now and is called everytime

function setDB()
{
$serviceAccount = ServiceAccount::fromJsonFile('firebase_credentials.json');
$firebase = (new Factory)
->withServiceAccount($serviceAccount)
->create();
$db = $firebase->getDatabase();

return $db;
}

This is one of my functions which needs the connection $db to get and update Data.

function Period($gameid, $action) 
{
$db = setDB();
$reference = $db->getReference('games/'.$gameid.'/Clock/CurrentPeriode');
$value = $reference->getValue();

if ($action =='m')
{
    $value = $value -1;
    $db->getReference('games/'.$gameid.'/Clock/CurrentPeriode')
    ->set($value);
} else {
    $value = $value +1;
    $db->getReference('games/'.$gameid.'/Clock/CurrentPeriode')
    ->set($value);
}
}
  • 写回答

3条回答 默认 最新

  • dongqigu0429 2017-11-09 20:14
    关注

    The solution is using Singleton pattern:

    class DbConn
    {
        private $db;
    
        protected function  __construct()
        {
            $serviceAccount = ServiceAccount::fromJsonFile('firebase_credentials.json');
            $firebase = (new Factory)
                ->withServiceAccount($serviceAccount)
                ->create();
            $this->db = $firebase->getDatabase();
        }
    
    
        public function getInstance()
        {
            static $instance;
    
            if (!$instance) {
                $instance = new self();
            }
    
            return $instance;
        }
    
        public function getDb()
        {
            return $this->db;
        }
    
    }
    

    And usage will be looking like this:

    function Period($gameid, $action) 
    {
        $db = DbConn::getInstance()->getDb();
        $reference = .....
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 angular开发过程中,想要读取模型文件,即图1的335行,会报404错误(如图2)。但我的springboot里配置了静态资源文件,如图3。且在该地址下我有模型文件如图4,请问该问题该如何解决呢?
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置