diff options
author | Maurício Meneghini Fauth <mauricio@fauth.dev> | 2022-09-18 22:32:42 +0300 |
---|---|---|
committer | Maurício Meneghini Fauth <mauricio@fauth.dev> | 2022-09-18 22:32:42 +0300 |
commit | 6792b17e72f28ec61a0a9b32055c751d34336e5e (patch) | |
tree | 36c2ce801674766156d5cb6f6d31ee974c4075d8 | |
parent | 435701f4cab899f63a528f4e1b0003e253db8bec (diff) |
Add tryFromValue method to DatabaseName and TableName classes
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
-rw-r--r-- | libraries/classes/Common.php | 16 | ||||
-rw-r--r-- | libraries/classes/Dbal/DatabaseName.php | 12 | ||||
-rw-r--r-- | libraries/classes/Dbal/TableName.php | 12 | ||||
-rw-r--r-- | test/classes/Dbal/DatabaseNameTest.php | 12 | ||||
-rw-r--r-- | test/classes/Dbal/TableNameTest.php | 12 |
5 files changed, 52 insertions, 12 deletions
diff --git a/libraries/classes/Common.php b/libraries/classes/Common.php index d264dd61f0..0e5b1b58e1 100644 --- a/libraries/classes/Common.php +++ b/libraries/classes/Common.php @@ -6,8 +6,6 @@ namespace PhpMyAdmin; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Dbal\DatabaseName; -use PhpMyAdmin\Dbal\InvalidDatabaseName; -use PhpMyAdmin\Dbal\InvalidTableName; use PhpMyAdmin\Dbal\TableName; use PhpMyAdmin\Http\Factory\ServerRequestFactory; use PhpMyAdmin\Http\ServerRequest; @@ -526,17 +524,11 @@ final class Common ): void { $GLOBALS['urlParams'] = $GLOBALS['urlParams'] ?? null; - try { - $GLOBALS['db'] = DatabaseName::fromValue($request->getParam('db'))->getName(); - } catch (InvalidDatabaseName $exception) { - $GLOBALS['db'] = ''; - } + $db = DatabaseName::tryFromValue($request->getParam('db')); + $table = TableName::tryFromValue($request->getParam('table')); - try { - $GLOBALS['table'] = TableName::fromValue($request->getParam('table'))->getName(); - } catch (InvalidTableName $exception) { - $GLOBALS['table'] = ''; - } + $GLOBALS['db'] = $db !== null ? $db->getName() : ''; + $GLOBALS['table'] = $table !== null ? $table->getName() : ''; if (! is_array($GLOBALS['urlParams'])) { $GLOBALS['urlParams'] = []; diff --git a/libraries/classes/Dbal/DatabaseName.php b/libraries/classes/Dbal/DatabaseName.php index 039b06bbfe..854fe168af 100644 --- a/libraries/classes/Dbal/DatabaseName.php +++ b/libraries/classes/Dbal/DatabaseName.php @@ -64,6 +64,18 @@ final class DatabaseName implements Stringable } /** + * @param mixed $name + */ + public static function tryFromValue($name): ?self + { + try { + return new self($name); + } catch (InvalidDatabaseName $exception) { + return null; + } + } + + /** * @psalm-return non-empty-string */ public function getName(): string diff --git a/libraries/classes/Dbal/TableName.php b/libraries/classes/Dbal/TableName.php index b05ed20f99..470a4087a5 100644 --- a/libraries/classes/Dbal/TableName.php +++ b/libraries/classes/Dbal/TableName.php @@ -64,6 +64,18 @@ final class TableName implements Stringable } /** + * @param mixed $name + */ + public static function tryFromValue($name): ?self + { + try { + return new self($name); + } catch (InvalidTableName $exception) { + return null; + } + } + + /** * @psalm-return non-empty-string */ public function getName(): string diff --git a/test/classes/Dbal/DatabaseNameTest.php b/test/classes/Dbal/DatabaseNameTest.php index da029a6fd7..9630998503 100644 --- a/test/classes/Dbal/DatabaseNameTest.php +++ b/test/classes/Dbal/DatabaseNameTest.php @@ -27,6 +27,17 @@ class DatabaseNameTest extends TestCase } /** + * @dataProvider providerForTestValidNames + */ + public function testTryFromValueWithValidName(string $validName): void + { + $name = DatabaseName::tryFromValue($validName); + $this->assertNotNull($name); + $this->assertEquals($validName, $name->getName()); + $this->assertEquals($validName, (string) $name); + } + + /** * @return iterable<int, string[]> */ public function providerForTestValidNames(): iterable @@ -43,6 +54,7 @@ class DatabaseNameTest extends TestCase */ public function testInvalidNames($name, string $exceptionMessage): void { + $this->assertNull(DatabaseName::tryFromValue($name)); $this->expectException(InvalidDatabaseName::class); $this->expectExceptionMessage($exceptionMessage); DatabaseName::fromValue($name); diff --git a/test/classes/Dbal/TableNameTest.php b/test/classes/Dbal/TableNameTest.php index 0ea928dc38..e7a352f43b 100644 --- a/test/classes/Dbal/TableNameTest.php +++ b/test/classes/Dbal/TableNameTest.php @@ -27,6 +27,17 @@ class TableNameTest extends TestCase } /** + * @dataProvider providerForTestValidNames + */ + public function testTryFromValueValidName(string $validName): void + { + $name = TableName::tryFromValue($validName); + $this->assertNotNull($name); + $this->assertEquals($validName, $name->getName()); + $this->assertEquals($validName, (string) $name); + } + + /** * @return iterable<int, string[]> */ public function providerForTestValidNames(): iterable @@ -43,6 +54,7 @@ class TableNameTest extends TestCase */ public function testInvalidNames($name, string $exceptionMessage): void { + $this->assertNull(TableName::tryFromValue($name)); $this->expectException(InvalidTableName::class); $this->expectExceptionMessage($exceptionMessage); TableName::fromValue($name); |