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 { unset($this->con); $this->status = DatabaseStatus::CLOSED; } }