如何在新项目symfony中集成settings.yml?

问题描述 投票:0回答:1

我创建了一个新项目symfony 6,因为我需要迁移一个旧项目silex。

我从未使用过 symfony。这是一个使用控制台命令的项目,主要用于处理实例备份、迁移和恢复。我有这样一个文件:

global:
  db.host: 57
  db.port: ''
  db.user: www
  db.password: www
  db.charset: www
  hostname: host
  trigram: www
  dev: 0
  username.autofill: true
  timeout: 25000

我需要在所有命令中使用这些信息。 我怎样才能正确地做到这一点?

我看到我可以把它放在 services.yml -> parameters 中。 我不知道在命令课程后如何访问这些信息。

有人可以帮助我吗?

symfony parameters get command
1个回答
0
投票

在这种情况下,您可以在 config/services.yaml 中使用

parameters:
    db.host: '%env(DB_HOST)%'
    db.port: '%env(DB_PORT)%'
    ..... etc.

在这种情况下,参数不会为您提供连接类,因此,您需要在 config/services.yaml 中像这样创建它:

    App\Connection\PDOWrapper:
        class: App\Connection\PDOWrapper
        arguments:
            - '%db.host%'
            - '%db.port%'

src/Connection/PDOWrapper.php

<?php
namespace App\Connection;

use PDO;

class PDOWrapper
{
    /** @var PDO */
    private $pdo;

    public function __construct(
        $user,
        $pass,
        $db,
        $connectionName,
        $socketDir = null
    ) {
        $dsn = sprintf(
            'mysql:dbname=%s;%s%s',
            $db,
            $socketDir,
            $connectionName
        );

        $this->pdo = new PDO($dsn, $user, $pass);
        $this->pdo->query(<<<SQL
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
SQL
        );
    }

    /**
     * @return PDO
     */
    public function getPdo(): PDO
    {
        return $this->pdo;
    }
}

这个类是一个关于如何创建 PDO 连接的例子,然后你可以将这个类注入到你的服务中抛出依赖注入,如果你需要的话,其他方法是使用多重连接,你可以在这个link中找到文档:

或阅读下一个链接

© www.soinside.com 2019 - 2024. All rights reserved.