Skip to content

Database

Matěj Bucek edited this page Mar 16, 2021 · 1 revision

Database

In SimpleFW, we have a Wrapper class, that wraps around the PHP PDO called EntityManager.

Use of EntityManager

properties:
   ...
   db:
      default:
         dsn: "mysql:host=localhost;dbname=MyDB"
         username: 
         password: 
services:
   ...
   EntityManager:
      class: SimpleFW\Database\EntityManager
      arguments: ["%db.default.dsn%", "%db.default.username%", "%db.default.password%"]

Because of the use of PDO, you can use variety of supported Database servers.

EntityManager class

namespace SimpleFW\Database;

class EntityManager
{
    private \PDO $pdo;
    private string $dsn;
    private string $username;
    private string $password;
    
    public function __construct(string $dsn, string $username, string $password){
        $this->dsn = $dsn;
        $this->usernam = $username;
        $this->password = $password;
        $this->pdo = new \PDO($this->dsn, $username, $password);
        $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
    }
    
    public function __desctruct(){
        $this->pdo = NULL;
    }
    
    public function getPDO(): \PDO{
        return $this->pdo;
    }
    
    public function query($stmt, $option = NULL): \PDOStatement{
        return $this->pdo->query($stmt, $option);
    }
    
    public function prepare($stmt): \PDOStatement{
        return $this->pdo->prepare($stmt);
    }
    
    public function begindTransaction(){
        return $this->pdo->beginTransaction();
    }
    
    public function commit(){
        return $this->pdo->commit();
    }
    
    public function rollBack(){
        return $this->pdo->rollBack();
    }
}

As you can see, our wrapper provides same methods as PDO and the PDO itself.

Clone this wiki locally