Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpmyadmin/phpmyadmin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaurício Meneghini Fauth <mauricio@fauth.dev>2022-09-18 22:32:42 +0300
committerMaurício Meneghini Fauth <mauricio@fauth.dev>2022-09-18 22:32:42 +0300
commit6792b17e72f28ec61a0a9b32055c751d34336e5e (patch)
tree36c2ce801674766156d5cb6f6d31ee974c4075d8
parent435701f4cab899f63a528f4e1b0003e253db8bec (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.php16
-rw-r--r--libraries/classes/Dbal/DatabaseName.php12
-rw-r--r--libraries/classes/Dbal/TableName.php12
-rw-r--r--test/classes/Dbal/DatabaseNameTest.php12
-rw-r--r--test/classes/Dbal/TableNameTest.php12
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);