. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\ORM\PDO; use Espo\ORM\DatabaseParams; use PDO; class DefaultPDOProvider implements PDOProvider { private ?PDO $pdo = null; public function __construct( private DatabaseParams $databaseParams, private PDOFactory $pdoFactory ) {} public function get(): PDO { if (!$this->pdo) { $this->intPDO(); } assert($this->pdo !== null); return $this->pdo; } private function intPDO(): void { $this->pdo = $this->pdoFactory->create($this->databaseParams); } }