1
0
Fork 0
mirror of synced 2024-09-28 07:21:35 +12:00
appwrite/src/Appwrite/DSN/DSN.php

136 lines
2.2 KiB
PHP
Raw Normal View History

2022-06-15 03:10:09 +12:00
<?php
namespace Appwrite\DSN;
2022-06-15 06:00:02 +12:00
class DSN
2022-06-15 03:18:15 +12:00
{
2022-06-15 03:10:09 +12:00
/**
* @var string
*/
protected string $scheme;
/**
* @var ?string
*/
protected ?string $user;
/**
* @var ?string
*/
protected ?string $password;
/**
* @var string
*/
2022-06-15 03:18:15 +12:00
protected string $host;
2022-06-15 03:10:09 +12:00
/**
* @var ?string
*/
protected ?string $port;
/**
* @var ?string
*/
protected ?string $database;
/**
* @var ?string
*/
protected ?string $query;
/**
* Construct
*
* Construct a new DSN object
2022-06-15 03:18:15 +12:00
*
2022-06-15 03:10:09 +12:00
* @param string $dsn
*/
public function __construct(string $dsn)
{
$parts = parse_url($dsn);
if (!$parts) {
throw new \InvalidArgumentException("Unable to parse DSN: $dsn");
}
$this->scheme = $parts['scheme'] ?? null;
$this->user = $parts['user'] ?? null;
$this->password = $parts['pass'] ?? null;
$this->host = $parts['host'] ?? null;
$this->port = $parts['port'] ?? null;
$this->database = $parts['path'] ?? null;
$this->query = $parts['query'] ?? null;
}
/**
* Return the scheme.
2022-06-15 03:18:15 +12:00
*
2022-06-15 03:10:09 +12:00
* @return string
*/
2022-06-15 03:18:15 +12:00
public function getScheme(): string
2022-06-15 03:10:09 +12:00
{
return $this->scheme;
}
/**
* Return the user.
2022-06-15 03:18:15 +12:00
*
2022-06-15 03:10:09 +12:00
* @return ?string
*/
2022-06-15 06:00:02 +12:00
public function getUser(): ?string
2022-06-15 03:10:09 +12:00
{
return $this->user;
}
/**
* Return the password.
2022-06-15 03:18:15 +12:00
*
2022-06-15 03:10:09 +12:00
* @return ?string
*/
2022-06-15 06:00:02 +12:00
public function getPassword(): ?string
2022-06-15 03:10:09 +12:00
{
return $this->password;
}
/**
* Return the host
2022-06-15 03:18:15 +12:00
*
2022-06-15 03:10:09 +12:00
* @return string
*/
2022-06-15 03:18:15 +12:00
public function getHost(): string
2022-06-15 03:10:09 +12:00
{
return $this->host;
}
/**
* Return the port
2022-06-15 03:18:15 +12:00
*
2022-06-15 03:10:09 +12:00
* @return ?string
*/
public function getPort(): ?string
{
return $this->port;
}
/**
* Return the database
2022-06-15 03:18:15 +12:00
*
2022-06-15 03:10:09 +12:00
* @return ?string
*/
2022-06-15 03:18:15 +12:00
public function getDatabase(): ?string
2022-06-15 03:10:09 +12:00
{
return ltrim($this->database, '/');
}
/**
* Return the query string
2022-06-15 03:18:15 +12:00
*
2022-06-15 03:10:09 +12:00
* @return ?string
*/
2022-06-15 03:18:15 +12:00
public function getQuery(): ?string
2022-06-15 03:10:09 +12:00
{
return $this->query;
}
2022-06-15 06:00:02 +12:00
}