utopia-php / dsn
A simple library for parsing and managing Data Source Names ( DSNs )
Requires
- php: >=8.0
Requires (Dev)
- laravel/pint: 1.2.*
- phpunit/phpunit: ^9.3
- squizlabs/php_codesniffer: ^3.6
- vimeo/psalm: 4.0.1
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-29 10:37:58 UTC
README
Important
This repository is a read-only mirror of packages/dsn in appwrite/appwrite. Development happens there — please open issues and pull requests against appwrite/appwrite.
Utopia DSN library is simple and lite library for parsing and managing Data Source Names or DSNs. This library aims to be as simple and easy to learn and use as possible. This library is maintained by the Appwrite team.
Although the library was built for the Utopia Framework project, it is completely independent, dependency-free and can be used with any other PHP project or framework.
Getting Started
Install using composer:
composer require utopia-php/dsn
<?php require_once '../vendor/autoload.php'; $dsn = new DSN('mariadb://user:password@localhost:3306/database?charset=utf8&timezone=UTC'); $scheme = $dsn->getScheme(); // mariadb $user = $dsn->getUser(); // user $password = $dsn->getPassword(); // password $host = $dsn->getHost(); // localhost $port = $dsn->getPort(); // 3306 $path = $dsn->getPath(); // database $query = $dsn->getQuery(); // charset=utf8&timezone=UTC $charset = $dsn->getParam('charset') // utf8 $timezone = $dsn->getParam('timezone') // UTC
Build a DSN from values you don't control with DSN::from(). Each part is encoded, and the DSN is refused if a part would read back differently, so a ? in a path or an @ in a user can't reshape it:
$dsn = DSN::from( scheme: 's3', host: 'minio.example.com', user: $accessKey, password: $secretKey, port: 9000, path: $bucket, params: ['region' => 'us-east-1'], ); $connection = (string) $dsn; // s3://...@minio.example.com:9000/bucket?region=us-east-1
Tests
composer test
System Requirements
Utopia DSN requires PHP 8.1 or later. We recommend using the latest PHP version whenever possible.
Copyright and license
The MIT License (MIT) http://www.opensource.org/licenses/mit-license.php