From ab4208dcb866c55cf035d6f7fc947f0470f8e138 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Fri, 28 Mar 2025 09:20:10 +0100 Subject: [PATCH] Doc-comments: Declare type properties --- adminer/drivers/mysql.inc.php | 20 ++++++++++---------- adminer/include/adminer.inc.php | 4 ++-- adminer/include/db.inc.php | 14 +++++++------- adminer/include/driver.inc.php | 26 +++++++++++++------------- adminer/include/functions.inc.php | 4 ++-- adminer/include/pdo.inc.php | 2 +- adminer/include/plugins.inc.php | 2 +- adminer/include/tmpfile.inc.php | 4 ++-- plugins/drivers/mongo.php | 3 +-- 9 files changed, 39 insertions(+), 40 deletions(-) diff --git a/adminer/drivers/mysql.inc.php b/adminer/drivers/mysql.inc.php index 8198d7f2..6f268874 100644 --- a/adminer/drivers/mysql.inc.php +++ b/adminer/drivers/mysql.inc.php @@ -61,7 +61,7 @@ if (!defined('Adminer\DRIVER')) { } elseif (extension_loaded("mysql") && !((ini_bool("sql.safe_mode") || ini_bool("mysql.allow_local_infile")) && extension_loaded("pdo_mysql"))) { class Db extends SqlDb { - /** @var resource */ private $link; + private resource $link; function connect($server, $username, $password) { if (ini_bool("mysql.allow_local_infile")) { @@ -121,9 +121,9 @@ if (!defined('Adminer\DRIVER')) { } class Result { - /** @var int */ public $num_rows; // number of rows in the result - /** @var resource */ private $result; - /** @var int */ private $offset = 0; + public int $num_rows; // number of rows in the result + private resource $result; + private int $offset = 0; function __construct(resource $result) { $this->result = $result; @@ -211,13 +211,13 @@ if (!defined('Adminer\DRIVER')) { class Driver extends SqlDriver { - /** @var list */ static $possibleDrivers = array("MySQLi", "MySQL", "PDO_MySQL"); - /** @var string */ static $jush = "sql"; // JUSH identifier + /** @var list */ static array $possibleDrivers = array("MySQLi", "MySQL", "PDO_MySQL"); + static string $jush = "sql"; // JUSH identifier - /** @var list */ public $unsigned = array("unsigned", "zerofill", "unsigned zerofill"); - /** @var list */ public $operators = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "REGEXP", "IN", "FIND_IN_SET", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL", "SQL"); - /** @var list */ public $functions = array("char_length", "date", "from_unixtime", "lower", "round", "floor", "ceil", "sec_to_time", "time_to_sec", "upper"); - /** @var list */ public $grouping = array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"); + /** @var list */ public array $unsigned = array("unsigned", "zerofill", "unsigned zerofill"); + /** @var list */ public array $operators = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "REGEXP", "IN", "FIND_IN_SET", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL", "SQL"); + /** @var list */ public array $functions = array("char_length", "date", "from_unixtime", "lower", "round", "floor", "ceil", "sec_to_time", "time_to_sec", "upper"); + /** @var list */ public array $grouping = array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"); function __construct($connection) { parent::__construct($connection); diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index 8d9b6a42..3aa970ba 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -4,8 +4,8 @@ namespace Adminer; // any method change in this file should be transferred to editor/include/adminer.inc.php and plugins.inc.php class Adminer { - /** @var list */ public $operators; // operators used in select, null for all operators - /** @var string @visibility protected(set) */ public $error = ''; // HTML + /** @var list */ public array $operators; // operators used in select, null for all operators + /** @visibility protected(set) */ public string $error = ''; // HTML /** Name in title and navigation * @return string HTML code diff --git a/adminer/include/db.inc.php b/adminer/include/db.inc.php index 656cc69c..3e016564 100644 --- a/adminer/include/db.inc.php +++ b/adminer/include/db.inc.php @@ -4,13 +4,13 @@ namespace Adminer; // this could be interface when "Db extends \mysqli" can have compatible type declarations (PHP 7) // interfaces can include properties only since PHP 8.4 abstract class SqlDb { - /** @var string */ public $extension; // extension name - /** @var string */ public $flavor; // different vendor with the same API, e.g. MariaDB; usually stays empty - /** @var string */ public $server_info; // server version - /** @var int */ public $affected_rows; // number of affected rows - /** @var string */ public $info; // see https://php.net/mysql_info - /** @var int */ public $errno; // last error code - /** @var string */ public $error; // last error message + public string $extension; // extension name + public string $flavor; // different vendor with the same API, e.g. MariaDB; usually stays empty + public string $server_info; // server version + public int $affected_rows; // number of affected rows + public string $info; // see https://php.net/mysql_info + public int $errno; // last error code + public string $error; // last error message /** @var Result|bool */ protected $multi; // used for multiquery /** Connect to server */ diff --git a/adminer/include/driver.inc.php b/adminer/include/driver.inc.php index 392c501a..b8036a65 100644 --- a/adminer/include/driver.inc.php +++ b/adminer/include/driver.inc.php @@ -16,20 +16,20 @@ function get_driver(string $id): string { } abstract class SqlDriver { - /** @var list */ static $possibleDrivers = array(); - /** @var string */ static $jush; // JUSH identifier + /** @var list */ static array $possibleDrivers = array(); + static string $jush; // JUSH identifier - /** @var Db */ protected $conn; - /** @var int[][] */ protected $types = array(); // [$group => [$type => $maximum_unsigned_length, ...], ...] - /** @var array{0?:string[], 1?:string[]} */ public $editFunctions = array(); // of ["$type|$type2" => "$function/$function2"] functions used in editing, [0] - edit and insert, [1] - edit only - /** @var list */ public $unsigned = array(); // number variants - /** @var list */ public $operators = array(); // operators used in select - /** @var list */ public $functions = array(); // functions used in select - /** @var list */ public $grouping = array(); // grouping functions used in select - /** @var string */ public $onActions = "RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT"; // used in foreign_keys() - /** @var string */ public $inout = "IN|OUT|INOUT"; // used in routines - /** @var string */ public $enumLength = "'(?:''|[^'\\\\]|\\\\.)*'"; // regular expression for parsing enum lengths - /** @var list */ public $generated = array(); // allowed types of generated columns + protected Db $conn; + /** @var int[][] */ protected array $types = array(); // [$group => [$type => $maximum_unsigned_length, ...], ...] + /** @var array{0?:string[], 1?:string[]} */ public array $editFunctions = array(); // of ["$type|$type2" => "$function/$function2"] functions used in editing, [0] - edit and insert, [1] - edit only + /** @var list */ public array $unsigned = array(); // number variants + /** @var list */ public array $operators = array(); // operators used in select + /** @var list */ public array $functions = array(); // functions used in select + /** @var list */ public array $grouping = array(); // grouping functions used in select + public string $onActions = "RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT"; // used in foreign_keys() + public string $inout = "IN|OUT|INOUT"; // used in routines + public string $enumLength = "'(?:''|[^'\\\\]|\\\\.)*'"; // regular expression for parsing enum lengths + /** @var list */ public array $generated = array(); // allowed types of generated columns /** Create object for performing database operations */ function __construct(Db $connection) { diff --git a/adminer/include/functions.inc.php b/adminer/include/functions.inc.php index f2504ee0..5266fceb 100644 --- a/adminer/include/functions.inc.php +++ b/adminer/include/functions.inc.php @@ -455,8 +455,8 @@ function query_redirect(string $query, string $location, string $message, bool $ } class Queries { - /** @var string[] */ static $queries = array(); - /** @var float */ static $start; + /** @var string[] */ static array $queries = array(); + static float $start; } /** Execute and remember query diff --git a/adminer/include/pdo.inc.php b/adminer/include/pdo.inc.php index f37aa31a..0b7be4ec 100644 --- a/adminer/include/pdo.inc.php +++ b/adminer/include/pdo.inc.php @@ -4,7 +4,7 @@ namespace Adminer; // PDO can be used in several database drivers if (extension_loaded('pdo')) { abstract class PdoDb extends SqlDb { - /** @var \PDO */ protected $pdo; + protected \PDO $pdo; /** Connect to server using DSN * @param mixed[] $options diff --git a/adminer/include/plugins.inc.php b/adminer/include/plugins.inc.php index 517931f2..cb80175c 100644 --- a/adminer/include/plugins.inc.php +++ b/adminer/include/plugins.inc.php @@ -2,7 +2,7 @@ namespace Adminer; class Plugins extends Adminer { - /** @var list @visibility protected(set) */ public $plugins; + /** @var list @visibility protected(set) */ public array $plugins; /** Register plugins * @param ?list $plugins object instances or null to autoload plugins from adminer-plugins/ diff --git a/adminer/include/tmpfile.inc.php b/adminer/include/tmpfile.inc.php index 992e8dcb..02a0101d 100644 --- a/adminer/include/tmpfile.inc.php +++ b/adminer/include/tmpfile.inc.php @@ -2,8 +2,8 @@ namespace Adminer; class TmpFile { - /** @var resource */ private $handler; - /** @var int @visibility protected(set) */ public $size; + private resource $handler; + /** @visibility protected(set) */ public int $size; function __construct() { $this->handler = tmpfile(); diff --git a/plugins/drivers/mongo.php b/plugins/drivers/mongo.php index d4b56afa..5aa6c27e 100644 --- a/plugins/drivers/mongo.php +++ b/plugins/drivers/mongo.php @@ -9,8 +9,7 @@ if (isset($_GET["mongo"])) { if (class_exists('MongoDB\Driver\Manager')) { class Db extends SqlDb { public $extension = "MongoDB", $server_info = MONGODB_VERSION, $last_id; - /** @var \MongoDB\Driver\Manager */ - public $_link; + public \MongoDB\Driver\Manager $_link; public $_db, $_db_name; function connect($uri, $options) {