pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

      <legend id='S7eIw'><style id='S7eIw'><dir id='S7eIw'><q id='S7eIw'></q></dir></style></legend>

      • <bdo id='S7eIw'></bdo><ul id='S7eIw'></ul>
    1. <i id='S7eIw'><tr id='S7eIw'><dt id='S7eIw'><q id='S7eIw'><span id='S7eIw'><b id='S7eIw'><form id='S7eIw'><ins id='S7eIw'></ins><ul id='S7eIw'></ul><sub id='S7eIw'></sub></form><legend id='S7eIw'></legend><bdo id='S7eIw'><pre id='S7eIw'><center id='S7eIw'></center></pre></bdo></b><th id='S7eIw'></th></span></q></dt></tr></i><div class="ftdjnjn" id='S7eIw'><tfoot id='S7eIw'></tfoot><dl id='S7eIw'><fieldset id='S7eIw'></fieldset></dl></div>
      <tfoot id='S7eIw'></tfoot>

    2. <small id='S7eIw'></small><noframes id='S7eIw'>

    3. 如何在 slim 4 中設置和注入多個 PDO 數據庫連接

      How to set up and inject multiple PDO database connections in slim 4?(如何在 slim 4 中設置和注入多個 PDO 數據庫連接?)
      <tfoot id='bjzX2'></tfoot>
      <legend id='bjzX2'><style id='bjzX2'><dir id='bjzX2'><q id='bjzX2'></q></dir></style></legend>
    4. <i id='bjzX2'><tr id='bjzX2'><dt id='bjzX2'><q id='bjzX2'><span id='bjzX2'><b id='bjzX2'><form id='bjzX2'><ins id='bjzX2'></ins><ul id='bjzX2'></ul><sub id='bjzX2'></sub></form><legend id='bjzX2'></legend><bdo id='bjzX2'><pre id='bjzX2'><center id='bjzX2'></center></pre></bdo></b><th id='bjzX2'></th></span></q></dt></tr></i><div class="rnzrjj5" id='bjzX2'><tfoot id='bjzX2'></tfoot><dl id='bjzX2'><fieldset id='bjzX2'></fieldset></dl></div>

          <small id='bjzX2'></small><noframes id='bjzX2'>

            <bdo id='bjzX2'></bdo><ul id='bjzX2'></ul>

                  <tbody id='bjzX2'></tbody>
                本文介紹了如何在 slim 4 中設置和注入多個 PDO 數據庫連接?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                問題描述

                我可以創建一個 PDO 的實例并成功注入它.我直接定義了 PDO::class 并用 __construct(PDO $pdo) 將它注入到構造函數中.我需要像 PDO1::classPDO2::class 之類的東西來注入它,如下所示:__construct(PDO1 $pdo1, PDO2 $pdo2) 但這顯然行不通.只有一個 PDO 類,我需要做的是它的 2 個具有不同數據庫憑據的實例.
                最好的方法是什么?

                I could make an instance of PDO and inject it successfully. I defined the PDO::class directly and injected it in the constructor with __construct(PDO $pdo). I would need something like PDO1::class and PDO2::class to inject it like follows: __construct(PDO1 $pdo1, PDO2 $pdo2) but that obviously doesn't work. There is only one PDO class and what I need to do is 2 instances of it with different database credentials.
                What is the best way to do it?

                我像這樣通過 PDO 設置了一個數據庫定義并且它可以工作:

                I set up one definition of a database via PDO like this and it works:

                文件:dependencies.php

                use DIContainerBuilder;
                use PsrContainerContainerInterface;
                
                return function (ContainerBuilder $containerBuilder) {
                    $containerBuilder->addDefinitions([
                        PDO::class => function (ContainerInterface $c) {
                            $dbSettings = $c->get('settings')['db1'];
                            $dsn = 'mysql:host=' . $dbSettings['host'] . ';dbname=' . $dbSettings['dbname'];
                            $options = [
                                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                                PDO::ATTR_EMULATE_PREPARES => false,
                            ];
                            return new PDO($dsn, $dbSettings['user'], $dbSettings['pass'], $options);
                        },
                    ]);
                };
                

                文件:index.php

                ...
                // Set up dependencies
                $dependencies = require __DIR__ . '/../app/dependencies.php';
                $dependencies($containerBuilder);
                // Build PHP-DI Container instance
                $container = $containerBuilder->build();
                // Set container to create App with on AppFactory
                AppFactory::setContainer($container);
                // Instantiate the app
                $app = AppFactory::create();
                ...
                

                文件 SomeRepository.php

                use PDO;
                
                class SomeRepository{
                
                    protected $pdo;
                
                    public function __construct(PDO $pdo) {
                        $this->pdo = $pdo;
                    }
                }
                

                我在這篇文章中看到過類似的內容:

                I've seen something like this in this article:

                return function (ContainerBuilder $containerBuilder) {
                    $containerBuilder->addDefinitions([
                        'db1' => function (ContainerInterface $c) {
                            $db1Settings = $c->get('settings')['db1'];
                            $dsn = 'mysql:host=' . $db1Settings['host'] . ';dbname=' . $db1Settings['dbname'];
                            $options = [ ... ];
                            return new PDO($dsn, $db1Settings['user'], $db1Settings['pass'],$options);
                        },
                        'db2' => function (ContainerInterface $c) {
                            $db2Settings = $c->get('settings')['db2'];
                            $dsn = 'mysql:host=' . $db2Settings['host'] . ';dbname=' . $db2Settings['dbname'];
                            $options = [ ... ];
                            return new PDO($dsn, $db2Settings['user'], $db2Settings['pass'],$options);
                        },
                
                    ]);
                };
                

                但這是最好的方法嗎?以及如何在不必注入整個容器的情況下訪問存儲庫類中的連接?

                But is it the best way to do it? And how can I access the connections in a repository class without having to inject the whole container?

                推薦答案

                您有多種選擇:

                1. 擴展 PDO
                2. 自動裝配的對象

                1.擴展 PDO

                use PDO;
                
                class PDO2 extends PDO
                {
                    // must be empty
                }
                

                容器定義:

                use PDO2;
                
                // ...
                
                return [
                    PDO::class => function (ContainerInterface $container) {
                        return new PDO(...);
                    },
                
                    PDO2::class => function (ContainerInterface $container) {
                        return new PDO2(...);
                    },
                ];
                

                使用

                use PDO;
                use PDO2;
                
                class MyRepository
                {
                    private $pdo;
                
                    private $pdo2;
                    
                    public function __construct(PDO $pdo, PDO2 $pdo2)
                    {
                        $this->pdo = $pdo;
                        $this->pdo2 = $pdo2;
                    }
                }
                

                2.自動裝配對象

                參見 Matthieu Napoli 的回答:https://stackoverflow.com/a/57758106/1461181

                See Matthieu Napoli's answer: https://stackoverflow.com/a/57758106/1461181

                這篇關于如何在 slim 4 中設置和注入多個 PDO 數據庫連接?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                相關文檔推薦

                Deadlock exception code for PHP, MySQL PDOException?(PHP、MySQL PDOException 的死鎖異常代碼?)
                PHP PDO MySQL scrollable cursor doesn#39;t work(PHP PDO MySQL 可滾動游標不起作用)
                PHP PDO ODBC connection(PHP PDO ODBC 連接)
                Using PDO::FETCH_CLASS with Magic Methods(使用 PDO::FETCH_CLASS 和魔術方法)
                php pdo get only one value from mysql; value that equals to variable(php pdo 只從 mysql 獲取一個值;等于變量的值)
                MSSQL PDO could not find driver(MSSQL PDO 找不到驅動程序)

                  <bdo id='HGnN0'></bdo><ul id='HGnN0'></ul>

                      1. <i id='HGnN0'><tr id='HGnN0'><dt id='HGnN0'><q id='HGnN0'><span id='HGnN0'><b id='HGnN0'><form id='HGnN0'><ins id='HGnN0'></ins><ul id='HGnN0'></ul><sub id='HGnN0'></sub></form><legend id='HGnN0'></legend><bdo id='HGnN0'><pre id='HGnN0'><center id='HGnN0'></center></pre></bdo></b><th id='HGnN0'></th></span></q></dt></tr></i><div class="hdzfhjl" id='HGnN0'><tfoot id='HGnN0'></tfoot><dl id='HGnN0'><fieldset id='HGnN0'></fieldset></dl></div>

                        • <legend id='HGnN0'><style id='HGnN0'><dir id='HGnN0'><q id='HGnN0'></q></dir></style></legend>

                          <small id='HGnN0'></small><noframes id='HGnN0'>

                            <tbody id='HGnN0'></tbody>
                          <tfoot id='HGnN0'></tfoot>
                          主站蜘蛛池模板: 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | 济南货架定做_仓储货架生产厂_重型货架厂_仓库货架批发_济南启力仓储设备有限公司 | 希望影视-高清影视vip热播电影电视剧免费在线抢先看 | 合肥白癜风医院_[治疗白癜风]哪家好_合肥北大白癜风医院 | 云南丰泰挖掘机修理厂-挖掘机维修,翻新,再制造的大型企业-云南丰泰工程机械维修有限公司 | 煤棒机_增碳剂颗粒机_活性炭颗粒机_木炭粉成型机-巩义市老城振华机械厂 | 探伤仪,漆膜厚度测试仪,轮胎花纹深度尺厂家-淄博创宇电子 | 泰来华顿液氮罐,美国MVE液氮罐,自增压液氮罐,定制液氮生物容器,进口杜瓦瓶-上海京灿精密机械有限公司 | 陶瓷砂磨机,盘式砂磨机,棒销式砂磨机-无锡市少宏粉体科技有限公司 | RO反渗透设备_厂家_价格_河南郑州江宇环保科技有限公司 | 全自动定氮仪-半自动凯氏定氮仪厂家-祎鸿仪器| 筛分机|振动筛分机|气流筛分机|筛分机厂家-新乡市大汉振动机械有限公司 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | sfp光模块,高速万兆光模块工厂-性价比更高的光纤模块制造商-武汉恒泰通 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | 间苯二酚,间苯二酚厂家-淄博双和化工 | 兰州牛肉面加盟,兰州牛肉拉面加盟-京穆兰牛肉面 | 石家庄装修设计_室内家装设计_别墅装饰装修公司-石家庄金舍装饰官网 | 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 集菌仪厂家_全封闭_封闭式_智能智能集菌仪厂家-上海郓曹 | 宏源科技-房地产售楼系统|线上开盘系统|售楼管理系统|线上开盘软件 | 聚氨酯复合板保温板厂家_廊坊华宇创新科技有限公司 | 信阳市建筑勘察设计研究院有限公司 | 北京网站建设公司_北京网站制作公司_北京网站设计公司-北京爱品特网站建站公司 | 整车VOC采样环境舱-甲醛VOC预处理舱-多舱法VOC检测环境仓-上海科绿特科技仪器有限公司 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 螺纹三通快插接头-弯通快插接头-宁波舜驰气动科技有限公司 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂_帽子厂_浙江高普制帽厂 | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 | 刮板输送机,粉尘加湿搅拌机,螺旋输送机,布袋除尘器 | 叉车电池-叉车电瓶-叉车蓄电池-铅酸蓄电池-电动叉车蓄电池生产厂家 | 氢氧化钙设备_厂家-淄博工贸有限公司 | 鑫铭东办公家具一站式定制采购-深圳办公家具厂家直销 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 搜木网 - 木业全产业链交易平台,免费搜货、低价买货! |