configuration = $config; } public function getDsn() : string { // 这仅仅是演示,而不是一个真正的 DSN // 注意,这里只使用了注入的配置。 所以, // 这里是关键的分离关注点。 // 将获取的信息 按照 %s:%s@%s:%d 拼装成字符串 // 格式化字符串 return sprintf( '%s:%s@%s:%d', $this->configuration->getUsername(), $this->configuration->getPassword(), $this->configuration->getHost(), $this->configuration->getPort() ); } }