第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在 Slim 4 中注入多個(gè) PDO 實(shí)例

如何在 Slim 4 中注入多個(gè) PDO 實(shí)例

PHP
三國紛爭(zhēng) 2022-08-19 10:19:11
我剛剛開始使用Slim 4(也是整個(gè)Slim的全新內(nèi)容),在閱讀并閱讀了一些文章之后,我設(shè)法獲得了一個(gè)具有PDO連接到DB的骨架應(yīng)用程序設(shè)置。我現(xiàn)在正在尋找第二個(gè)PDO實(shí)例,以便可以根據(jù)請(qǐng)求使用第二個(gè)數(shù)據(jù)庫,盡管我正在努力了解如何執(zhí)行此操作。我目前的設(shè)置是:設(shè)置.php$settings['db'] = [    'driver' => 'mysql',    'host' => 'database',    'username' => 'root',    'database' => 'demo',    'password' => 'password',    'flags' => [        // Turn off persistent connections        PDO::ATTR_PERSISTENT => false,        // Enable exceptions        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,        // Emulate prepared statements        PDO::ATTR_EMULATE_PREPARES => true,        // Set default fetch mode to array        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,    ],];容器.phpreturn [    Configuration::class => function () {        return new Configuration(require __DIR__ . '/settings.php');    },    App::class => function (ContainerInterface $container) {        AppFactory::setContainer($container);        $app = AppFactory::create();        return $app;    },    PDO::class => function (ContainerInterface $container) {        $config = $container->get(Configuration::class);        $host = $config->getString('db.host');        $dbname =  $config->getString('db.database');        $username = $config->getString('db.username');        $password = $config->getString('db.password');        $dsn = "mysql:host=$host;dbname=$dbname;";        return new PDO($dsn, $username, $password);    },];存儲(chǔ)庫中的用法示例class UserReaderRepository{    /**     * @var PDO The database connection     */    private $connection;    /**     * Constructor.     *     * @param PDO $connection The database connection     */    public function __construct(PDO $connection)    {        $this->connection = $connection;    }
查看完整描述

1 回答

?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊

經(jīng)過一番深思熟慮,我想我已經(jīng)解決了。


我使用容器創(chuàng)建了 PDO 實(shí)例


$container = $app->getContainer();


    $container->set('db', function(ContainerInterface $c) {

        $config = $c->get(Configuration::class);


        $host = $config->getString('db.host');

        $dbname =  $config->getString('db.database');

        $username = $config->getString('db.username');

        $password = $config->getString('db.password');

        $dsn = "mysql:host=$host;dbname=$dbname;";


        return new PDO($dsn, $username, $password);

    });


    $container->set('db_readonly', function(ContainerInterface $c) {

        $config = $c->get(Configuration::class);


        $host = $config->getString('db_readonly.host');

        $dbname =  $config->getString('db_readonly.database');

        $username = $config->getString('db_readonly.username');

        $password = $config->getString('db_readonly.password');

        $dsn = "mysql:host=$host;dbname=$dbname;";


        return new PDO($dsn, $username, $password);

    });

然后將存儲(chǔ)庫更改為使用構(gòu)造函數(shù)中的 App,然后使用容器獲取 PDO 實(shí)例


/**

     * @var PDO The database

     */

    private $db;


    /**

     * @var PDO The readonly database

     */

    private $readonly_db;


    /**

     * Constructor.

     *

     * @param App $app The database db

     */

    public function __construct(App $app)

    {

        $container = $app->getContainer();

        $this->db = $container->get('db');

        $this->readonly_db = $container->get('db_readonly');

    }

將此留在這里,以防其他人遇到問題,盡管有更好的方法可以做到這一點(diǎn),或者我目前的方法可以改進(jìn),我將不勝感激的反饋


查看完整回答
反對(duì) 回復(fù) 2022-08-19
  • 1 回答
  • 0 關(guān)注
  • 119 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)