From 019fa7cb9c3aca1c80ec7e76e725dbc40a34f562 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Tue, 7 Feb 2017 09:36:12 -0800 Subject: [PATCH] Move Blob class to Rdbms namespaces Leave \Blob as an alias. Callers can now use the Rdbms\Blob class for "extends"/"new" and the Rdbms\IBlob interface for type hints. Change-Id: I983b76f181ac60c1eb92c350cd27ad77ec90a192 --- autoload.php | 6 ++++-- includes/db/DatabaseOracle.php | 1 + includes/libs/rdbms/database/Database.php | 1 + .../libs/rdbms/database/DatabaseMssql.php | 2 ++ .../libs/rdbms/database/DatabasePostgres.php | 2 ++ .../libs/rdbms/database/DatabaseSqlite.php | 1 + includes/libs/rdbms/database/IDatabase.php | 1 + includes/libs/rdbms/encasing/Blob.php | 20 ++++++++++--------- includes/libs/rdbms/encasing/IBlob.php | 14 +++++++++++++ includes/libs/rdbms/encasing/MssqlBlob.php | 8 ++++++++ includes/libs/rdbms/encasing/PostgresBlob.php | 3 +++ includes/utils/AutoloadGenerator.php | 5 ++++- .../includes/db/DatabaseSqliteTest.php | 2 ++ 13 files changed, 54 insertions(+), 12 deletions(-) create mode 100644 includes/libs/rdbms/encasing/IBlob.php diff --git a/autoload.php b/autoload.php index d4bd447d4f..0e719ae5b5 100644 --- a/autoload.php +++ b/autoload.php @@ -969,7 +969,6 @@ $wgAutoloadLocalClasses = [ 'MoveLogFormatter' => __DIR__ . '/includes/logging/MoveLogFormatter.php', 'MovePage' => __DIR__ . '/includes/MovePage.php', 'MovePageForm' => __DIR__ . '/includes/specials/SpecialMovepage.php', - 'MssqlBlob' => __DIR__ . '/includes/libs/rdbms/encasing/MssqlBlob.php', 'MssqlField' => __DIR__ . '/includes/libs/rdbms/field/MssqlField.php', 'MssqlInstaller' => __DIR__ . '/includes/installer/MssqlInstaller.php', 'MssqlResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php', @@ -1093,7 +1092,6 @@ $wgAutoloadLocalClasses = [ 'PopulateRevisionLength' => __DIR__ . '/maintenance/populateRevisionLength.php', 'PopulateRevisionSha1' => __DIR__ . '/maintenance/populateRevisionSha1.php', 'PostgreSqlLockManager' => __DIR__ . '/includes/libs/lockmanager/PostgreSqlLockManager.php', - 'PostgresBlob' => __DIR__ . '/includes/libs/rdbms/encasing/PostgresBlob.php', 'PostgresField' => __DIR__ . '/includes/libs/rdbms/field/PostgresField.php', 'PostgresInstaller' => __DIR__ . '/includes/installer/PostgresInstaller.php', 'PostgresUpdater' => __DIR__ . '/includes/installer/PostgresUpdater.php', @@ -1580,10 +1578,12 @@ $wgAutoloadLocalClasses = [ 'WikiRevision' => __DIR__ . '/includes/import/WikiRevision.php', 'WikiStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php', 'WikiTextStructure' => __DIR__ . '/includes/content/WikiTextStructure.php', + 'Wikimedia\\Rdbms\\Blob' => __DIR__ . '/includes/libs/rdbms/encasing/Blob.php', 'Wikimedia\\Rdbms\\ChronologyProtector' => __DIR__ . '/includes/libs/rdbms/ChronologyProtector.php', 'Wikimedia\\Rdbms\\ConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/ConnectionManager.php', 'Wikimedia\\Rdbms\\DBMasterPos' => __DIR__ . '/includes/libs/rdbms/database/position/DBMasterPos.php', 'Wikimedia\\Rdbms\\DatabaseDomain' => __DIR__ . '/includes/libs/rdbms/database/DatabaseDomain.php', + 'Wikimedia\\Rdbms\\IBlob' => __DIR__ . '/includes/libs/rdbms/encasing/IBlob.php', 'Wikimedia\\Rdbms\\ILBFactory' => __DIR__ . '/includes/libs/rdbms/lbfactory/ILBFactory.php', 'Wikimedia\\Rdbms\\ILoadBalancer' => __DIR__ . '/includes/libs/rdbms/loadbalancer/ILoadBalancer.php', 'Wikimedia\\Rdbms\\ILoadMonitor' => __DIR__ . '/includes/libs/rdbms/loadmonitor/ILoadMonitor.php', @@ -1596,7 +1596,9 @@ $wgAutoloadLocalClasses = [ 'Wikimedia\\Rdbms\\LoadMonitor' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitor.php', 'Wikimedia\\Rdbms\\LoadMonitorMySQL' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php', 'Wikimedia\\Rdbms\\LoadMonitorNull' => __DIR__ . '/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php', + 'Wikimedia\\Rdbms\\MssqlBlob' => __DIR__ . '/includes/libs/rdbms/encasing/MssqlBlob.php', 'Wikimedia\\Rdbms\\MySQLMasterPos' => __DIR__ . '/includes/libs/rdbms/database/position/MySQLMasterPos.php', + 'Wikimedia\\Rdbms\\PostgresBlob' => __DIR__ . '/includes/libs/rdbms/encasing/PostgresBlob.php', 'Wikimedia\\Rdbms\\SessionConsistentConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/SessionConsistentConnectionManager.php', 'Wikimedia\\Rdbms\\TransactionProfiler' => __DIR__ . '/includes/libs/rdbms/TransactionProfiler.php', 'WikitextContent' => __DIR__ . '/includes/content/WikitextContent.php', diff --git a/includes/db/DatabaseOracle.php b/includes/db/DatabaseOracle.php index 5dcb756929..4aab8111c2 100644 --- a/includes/db/DatabaseOracle.php +++ b/includes/db/DatabaseOracle.php @@ -20,6 +20,7 @@ * @file * @ingroup Database */ +use Wikimedia\Rdbms\Blob; /** * The oci8 extension is fairly weak and doesn't support oci_num_rows, among diff --git a/includes/libs/rdbms/database/Database.php b/includes/libs/rdbms/database/Database.php index 0afce491af..9d800a29c8 100644 --- a/includes/libs/rdbms/database/Database.php +++ b/includes/libs/rdbms/database/Database.php @@ -30,6 +30,7 @@ use Wikimedia\Rdbms\TransactionProfiler; use Wikimedia\Rdbms\LikeMatch; use Wikimedia\Rdbms\DatabaseDomain; use Wikimedia\Rdbms\DBMasterPos; +use Wikimedia\Rdbms\Blob; /** * Relational database abstraction object diff --git a/includes/libs/rdbms/database/DatabaseMssql.php b/includes/libs/rdbms/database/DatabaseMssql.php index b91c7b7c33..c1dfdb456d 100644 --- a/includes/libs/rdbms/database/DatabaseMssql.php +++ b/includes/libs/rdbms/database/DatabaseMssql.php @@ -24,6 +24,8 @@ * @author Ryan Biesemeyer * @author Ryan Schmidt */ +use Wikimedia\Rdbms\Blob; +use Wikimedia\Rdbms\MssqlBlob; /** * @ingroup Database diff --git a/includes/libs/rdbms/database/DatabasePostgres.php b/includes/libs/rdbms/database/DatabasePostgres.php index 75cc97c9d5..b54ada7086 100644 --- a/includes/libs/rdbms/database/DatabasePostgres.php +++ b/includes/libs/rdbms/database/DatabasePostgres.php @@ -21,6 +21,8 @@ * @ingroup Database */ use Wikimedia\WaitConditionLoop; +use Wikimedia\Rdbms\Blob; +use Wikimedia\Rdbms\PostgresBlob; /** * @ingroup Database diff --git a/includes/libs/rdbms/database/DatabaseSqlite.php b/includes/libs/rdbms/database/DatabaseSqlite.php index a4b2df01ad..bf616710e5 100644 --- a/includes/libs/rdbms/database/DatabaseSqlite.php +++ b/includes/libs/rdbms/database/DatabaseSqlite.php @@ -21,6 +21,7 @@ * @file * @ingroup Database */ +use Wikimedia\Rdbms\Blob; /** * @ingroup Database diff --git a/includes/libs/rdbms/database/IDatabase.php b/includes/libs/rdbms/database/IDatabase.php index 9fbea51e1a..591c797bb2 100644 --- a/includes/libs/rdbms/database/IDatabase.php +++ b/includes/libs/rdbms/database/IDatabase.php @@ -24,6 +24,7 @@ * @ingroup Database */ use Wikimedia\ScopedCallback; +use Wikimedia\Rdbms\Blob; use Wikimedia\Rdbms\LikeMatch; use Wikimedia\Rdbms\DBMasterPos; diff --git a/includes/libs/rdbms/encasing/Blob.php b/includes/libs/rdbms/encasing/Blob.php index bd90330577..d394692323 100644 --- a/includes/libs/rdbms/encasing/Blob.php +++ b/includes/libs/rdbms/encasing/Blob.php @@ -1,19 +1,21 @@ mData = $data; } - function fetch() { + public function fetch() { return $this->mData; } } + +class_alias( 'Wikimedia\Rdbms\Blob', 'Blob' ); diff --git a/includes/libs/rdbms/encasing/IBlob.php b/includes/libs/rdbms/encasing/IBlob.php new file mode 100644 index 0000000000..b1d7aae438 --- /dev/null +++ b/includes/libs/rdbms/encasing/IBlob.php @@ -0,0 +1,14 @@ +readFile( $file ); } - // Legacy aliases + // Legacy aliases (1.28) $this->forceClassPath( 'DatabaseBase', $this->basepath . '/includes/libs/rdbms/database/Database.php' ); + // Legacy aliases (1.29) + $this->forceClassPath( 'Blob', + $this->basepath . '/includes/libs/rdbms/encasing/Blob.php' ); } } diff --git a/tests/phpunit/includes/db/DatabaseSqliteTest.php b/tests/phpunit/includes/db/DatabaseSqliteTest.php index 172d68650d..10bf028591 100644 --- a/tests/phpunit/includes/db/DatabaseSqliteTest.php +++ b/tests/phpunit/includes/db/DatabaseSqliteTest.php @@ -1,5 +1,7 @@