我创建了一个新项目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 中。 我不知道在命令课程后如何访问这些信息。
有人可以帮助我吗?
在这种情况下,您可以在 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中找到文档:
或阅读下一个链接