type; } /** * {@inheritdoc} */ public function getStatus() : int { return $this->status; } /** * Get database name. * * @return string * * @since 1.0.0 */ public function getDatabase() : string { return $this->dbdata['database'] ?? ''; } /** * Get database host. * * @return string * * @since 1.0.0 */ public function getHost() : string { return $this->dbdata['host'] ?? ''; } /** * Get database port. * * @return int * * @since 1.0.0 */ public function getPort() : int { return (int) ($this->dbdata['port'] ?? 0); } /** * {@inheritdoc} */ public function getGrammar() : Grammar { return $this->grammar; } /** * {@inheritdoc} */ public function getSchemaGrammar() : SchemaGrammar { return $this->schemaGrammar; } /** * Connect to database * * @param null|array{db:string, database:string}|array{db:string, host:string, port:int, login:string, password:string, database:string} $dbdata the basic database information for establishing a connection * * @return void * * @since 1.0.0 */ abstract public function connect(?array $dbdata = null) : void; /** * Object destructor. * * Sets the database connection to null * * @since 1.0.0 */ public function __destruct() { $this->close(); } /** * {@inheritdoc} */ public function close() : void { $this->con = new NullPDO(); $this->status = DatabaseStatus::CLOSED; } /** * Checks if the connection is initialized * * @return bool * * @since 1.0.0 */ public function isInitialized() : bool { return !($this->con instanceof NullPDO); } /** * Get values * * @param string $name Variable name * * @return mixed Returns the value of the connection * * @since 1.0.0 */ public function __get(string $name) : mixed { return isset($this->{$name}) ? $this->{$name} : null; } /** * Start a transaction * * @since 1.0.0 */ abstract public function beginTransaction() : void; /** * Roll back a transaction * * @since 1.0.0 */ abstract public function rollBack() : void; /** * Commit a transaction * * @since 1.0.0 */ abstract public function commit() : void; }